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"; import BasicWidget from "../basic_widget.js"; import appContext from "../../components/app_context.js"; import { t } from "../../services/i18n.js"; let branchId; const TPL = ``; export default class BranchPrefixDialog extends BasicWidget { doRender() { this.$widget = $(TPL); this.$form = this.$widget.find(".branch-prefix-form"); this.$treePrefixInput = this.$widget.find(".branch-prefix-input"); this.$noteTitle = this.$widget.find('.branch-prefix-note-title'); this.$form.on('submit', () => { this.savePrefix(); return false; }); this.$widget.on('shown.bs.modal', () => this.$treePrefixInput.trigger('focus')); } async refresh(notePath) { const {noteId, parentNoteId} = treeService.getNoteIdAndParentIdFromUrl(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; } this.$treePrefixInput.val(branch.prefix); const noteTitle = await treeService.getNoteTitle(noteId); this.$noteTitle.text(` - ${noteTitle}`); } async editBranchPrefixEvent() { const notePath = appContext.tabManager.getActiveContextNotePath(); await this.refresh(notePath); utils.openDialog(this.$widget); } async savePrefix() { const prefix = this.$treePrefixInput.val(); await server.put(`branches/${branchId}/set-prefix`, {prefix: prefix}); this.$widget.modal('hide'); toastService.showMessage(t('branch_prefix.branch_prefix_saved')); } }