import treeService from '../services/tree.js';
import server from '../services/server.js';
import froca from "../services/froca.js";
import toastService from "../services/toast.js";
import utils from "../services/utils.js";

const $dialog = $("#branch-prefix-dialog");
const $form = $("#branch-prefix-form");
const $treePrefixInput = $("#branch-prefix-input");
const $noteTitle = $('#branch-prefix-note-title');

let branchId;

export async function showDialog(notePath) {
    const {noteId, parentNoteId} = treeService.getNoteIdAndParentIdFromNotePath(notePath);

    if (!noteId || !parentNoteId) {
        return;
    }

    branchId = await froca.getBranchId(parentNoteId, noteId);
    const branch = froca.getBranch(branchId);

    if (!branch || branch.noteId === 'root') {
        return;
    }

    const parentNote = await froca.getNote(branch.parentNoteId);

    if (parentNote.type === 'search') {
        return;
    }

    utils.openDialog($dialog);

    $treePrefixInput.val(branch.prefix);

    const noteTitle = await treeService.getNoteTitle(noteId);

    $noteTitle.text(" - " + noteTitle);
}

async function savePrefix() {
    const prefix = $treePrefixInput.val();

    await server.put('branches/' + branchId + '/set-prefix', { prefix: prefix });

    $dialog.modal('hide');

    toastService.showMessage("Branch prefix has been saved.");
}

$form.on('submit', () => {
    savePrefix();

    return false;
});

$dialog.on('shown.bs.modal', () => $treePrefixInput.trigger('focus'));