"use strict";
const attributeService = require("../../services/attributes");
const noteService = require('../../services/notes');
const dateNoteService = require('../../services/date_notes');
const dateUtils = require('../../services/date_utils');
const imageService = require('../../services/image');
const appInfo = require('../../services/app_info');
const ws = require('../../services/ws.js');
const log = require('../../services/log');
const utils = require('../../services/utils');
const path = require('path');
const Attribute = require('../../becca/entities/attribute.js');
const htmlSanitizer = require('../../services/html_sanitizer');
function findClippingNote(todayNote, pageUrl) {
    const notes = todayNote.getDescendantNotesWithLabel('pageUrl', pageUrl);
    for (const note of notes) {
        if (note.getOwnedLabelValue('clipType') === 'clippings') {
            return note;
        }
    }
    return null;
}
function getClipperInboxNote() {
    let clipperInbox = attributeService.getNoteWithLabel('clipperInbox');
    if (!clipperInbox) {
        clipperInbox = dateNoteService.getDateNote(dateUtils.localNowDate());
    }
    return clipperInbox;
}
function addClipping(req) {
    const {title, content, pageUrl, images} = req.body;
    const clipperInbox = getClipperInboxNote();
    let clippingNote = findClippingNote(clipperInbox, pageUrl);
    if (!clippingNote) {
        clippingNote = noteService.createNewNote({
            parentNoteId: clipperInbox.noteId,
            title: title,
            content: '',
            type: 'text'
        }).note;
        clippingNote.setLabel('clipType', 'clippings');
        clippingNote.setLabel('pageUrl', pageUrl);
    }
    const rewrittenContent = processContent(images, clippingNote, content);
    const existingContent = clippingNote.getContent();
    clippingNote.setContent(existingContent + (existingContent.trim() ? "
" : "") + rewrittenContent);
    return {
        noteId: clippingNote.noteId
    };
}
function createNote(req) {
    let {title, content, pageUrl, images, clipType} = req.body;
    if (!title || !title.trim()) {
        title = "Clipped note from " + pageUrl;
    }
    const clipperInbox = getClipperInboxNote();
    const {note} = noteService.createNewNote({
        parentNoteId: clipperInbox.noteId,
        title,
        content,
        type: 'text'
    });
    note.setLabel('clipType', clipType);
    if (pageUrl) {
        note.setLabel('pageUrl', pageUrl);
    }
    const rewrittenContent = processContent(images, note, content);
    note.setContent(rewrittenContent);
    return {
        noteId: note.noteId
    };
}
function processContent(images, note, content) {
    let rewrittenContent = htmlSanitizer.sanitize(content)
        // H1 is not supported so convert it to H2
        .replace(/