diff --git a/src/public/javascripts/dialogs/about.js b/src/public/javascripts/dialogs/about.js index cac22397d..e96d591f1 100644 --- a/src/public/javascripts/dialogs/about.js +++ b/src/public/javascripts/dialogs/about.js @@ -1,4 +1,5 @@ import server from "../services/server.js"; +import utils from "../services/utils.js"; const $dialog = $("#about-dialog"); const $appVersion = $("#app-version"); @@ -9,6 +10,8 @@ const $buildRevision = $("#build-revision"); const $dataDirectory = $("#data-directory"); async function showDialog() { + utils.closeActiveDialog(); + const appInfo = await server.get('app-info'); $appVersion.text(appInfo.appVersion); diff --git a/src/public/javascripts/dialogs/add_link.js b/src/public/javascripts/dialogs/add_link.js index bdd1efe7f..f94516846 100644 --- a/src/public/javascripts/dialogs/add_link.js +++ b/src/public/javascripts/dialogs/add_link.js @@ -3,6 +3,7 @@ import linkService from '../services/link.js'; import noteDetailService from '../services/note_detail.js'; import treeUtils from '../services/tree_utils.js'; import noteAutocompleteService from "../services/note_autocomplete.js"; +import utils from "../services/utils.js"; const $dialog = $("#add-link-dialog"); const $form = $("#add-link-form"); @@ -28,6 +29,8 @@ async function showDialogForClone() { } async function showDialog(linkType) { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; if (noteDetailService.getActiveNoteType() === 'text') { diff --git a/src/public/javascripts/dialogs/attributes.js b/src/public/javascripts/dialogs/attributes.js index 5f4480c06..ed3cdecc8 100644 --- a/src/public/javascripts/dialogs/attributes.js +++ b/src/public/javascripts/dialogs/attributes.js @@ -3,6 +3,7 @@ import server from '../services/server.js'; import infoService from "../services/info.js"; import treeUtils from "../services/tree_utils.js"; import attributeAutocompleteService from "../services/attribute_autocomplete.js"; +import utils from "../services/utils.js"; const $dialog = $("#attributes-dialog"); const $saveAttributesButton = $("#save-attributes-button"); @@ -254,6 +255,8 @@ function AttributesModel() { } async function showDialog() { + utils.closeActiveDialog(); + // lazily apply bindings on first use if (!ko.dataFor($dialog[0])) { ko.applyBindings(attributesModel, $dialog[0]); diff --git a/src/public/javascripts/dialogs/branch_prefix.js b/src/public/javascripts/dialogs/branch_prefix.js index 152a3c526..4dbd3a1d7 100644 --- a/src/public/javascripts/dialogs/branch_prefix.js +++ b/src/public/javascripts/dialogs/branch_prefix.js @@ -3,6 +3,7 @@ import server from '../services/server.js'; import treeCache from "../services/tree_cache.js"; import treeUtils from "../services/tree_utils.js"; import infoService from "../services/info.js"; +import utils from "../services/utils.js"; const $dialog = $("#branch-prefix-dialog"); const $form = $("#branch-prefix-form"); @@ -12,6 +13,8 @@ const $noteTitle = $('#branch-prefix-note-title'); let branchId; async function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; $dialog.modal(); diff --git a/src/public/javascripts/dialogs/event_log.js b/src/public/javascripts/dialogs/event_log.js index d964a2e84..66731096f 100644 --- a/src/public/javascripts/dialogs/event_log.js +++ b/src/public/javascripts/dialogs/event_log.js @@ -6,6 +6,8 @@ const $dialog = $("#event-log-dialog"); const $list = $("#event-log-list"); async function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; $dialog.modal(); diff --git a/src/public/javascripts/dialogs/export.js b/src/public/javascripts/dialogs/export.js index 044732dd4..75b70dd06 100644 --- a/src/public/javascripts/dialogs/export.js +++ b/src/public/javascripts/dialogs/export.js @@ -1,7 +1,6 @@ import treeService from '../services/tree.js'; import treeUtils from "../services/tree_utils.js"; import utils from "../services/utils.js"; -import protectedSessionHolder from "../services/protected_session_holder.js"; import messagingService from "../services/messaging.js"; import infoService from "../services/info.js"; @@ -20,6 +19,8 @@ const $opmlVersions = $("#opml-versions"); let exportId = ''; async function showDialog(defaultType) { + utils.closeActiveDialog(); + // each opening of the dialog resets the exportId so we don't associate it with previous exports anymore exportId = ''; $exportButton.removeAttr("disabled"); diff --git a/src/public/javascripts/dialogs/help.js b/src/public/javascripts/dialogs/help.js index 91ebe9ba3..85ddf61fe 100644 --- a/src/public/javascripts/dialogs/help.js +++ b/src/public/javascripts/dialogs/help.js @@ -1,6 +1,10 @@ +import utils from "../services/utils.js"; + const $dialog = $("#help-dialog"); async function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; $dialog.modal(); diff --git a/src/public/javascripts/dialogs/import.js b/src/public/javascripts/dialogs/import.js index 0e419a86f..41610510e 100644 --- a/src/public/javascripts/dialogs/import.js +++ b/src/public/javascripts/dialogs/import.js @@ -21,6 +21,8 @@ const $explodeArchivesCheckbox = $("#explode-archives-checkbox"); let importId; async function showDialog() { + utils.closeActiveDialog(); + // each opening of the dialog resets the importId so we don't associate it with previous imports anymore importId = ''; $importProgressCountWrapper.hide(); diff --git a/src/public/javascripts/dialogs/info.js b/src/public/javascripts/dialogs/info.js index db8860d64..35e067741 100644 --- a/src/public/javascripts/dialogs/info.js +++ b/src/public/javascripts/dialogs/info.js @@ -1,3 +1,5 @@ +import utils from "../services/utils.js"; + const $dialog = $("#info-dialog"); const $infoContent = $("#info-dialog-content"); const $okButton = $("#info-dialog-ok-button"); @@ -5,6 +7,8 @@ const $okButton = $("#info-dialog-ok-button"); let resolve; function info(message) { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; $infoContent.text(message); diff --git a/src/public/javascripts/dialogs/jump_to_note.js b/src/public/javascripts/dialogs/jump_to_note.js index 063434d2a..4cd5bd2ca 100644 --- a/src/public/javascripts/dialogs/jump_to_note.js +++ b/src/public/javascripts/dialogs/jump_to_note.js @@ -1,12 +1,15 @@ import treeService from '../services/tree.js'; import searchNotesService from '../services/search_notes.js'; import noteAutocompleteService from '../services/note_autocomplete.js'; +import utils from "../services/utils.js"; const $dialog = $("#jump-to-note-dialog"); const $autoComplete = $("#jump-to-note-autocomplete"); const $showInFullTextButton = $("#show-in-full-text-button"); async function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; $autoComplete.val(''); diff --git a/src/public/javascripts/dialogs/link_map.js b/src/public/javascripts/dialogs/link_map.js index a3e5f57b2..2b13f95e8 100644 --- a/src/public/javascripts/dialogs/link_map.js +++ b/src/public/javascripts/dialogs/link_map.js @@ -3,6 +3,7 @@ import noteDetailService from "../services/note_detail.js"; import libraryLoader from "../services/library_loader.js"; import treeCache from "../services/tree_cache.js"; import linkService from "../services/link.js"; +import utils from "../services/utils.js"; const $linkMapContainer = $("#link-map-container"); @@ -26,6 +27,8 @@ let pzInstance = null; let renderer = null; async function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; // set default settings diff --git a/src/public/javascripts/dialogs/note_info.js b/src/public/javascripts/dialogs/note_info.js index 7931df7f4..15e976c0c 100644 --- a/src/public/javascripts/dialogs/note_info.js +++ b/src/public/javascripts/dialogs/note_info.js @@ -1,4 +1,5 @@ import noteDetailService from '../services/note_detail.js'; +import utils from "../services/utils.js"; const $dialog = $("#note-info-dialog"); const $noteId = $("#note-info-note-id"); @@ -9,6 +10,8 @@ const $mime = $("#note-info-mime"); const $okButton = $("#note-info-ok-button"); function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; $dialog.modal(); diff --git a/src/public/javascripts/dialogs/note_revisions.js b/src/public/javascripts/dialogs/note_revisions.js index 72955919e..8ac7531a6 100644 --- a/src/public/javascripts/dialogs/note_revisions.js +++ b/src/public/javascripts/dialogs/note_revisions.js @@ -15,6 +15,8 @@ async function showCurrentNoteRevisions() { } async function showNoteRevisionsDialog(noteId, noteRevisionId) { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; $dialog.modal(); diff --git a/src/public/javascripts/dialogs/note_source.js b/src/public/javascripts/dialogs/note_source.js index 528bedb4b..e913cd3d4 100644 --- a/src/public/javascripts/dialogs/note_source.js +++ b/src/public/javascripts/dialogs/note_source.js @@ -1,9 +1,12 @@ import noteDetailService from '../services/note_detail.js'; +import utils from "../services/utils.js"; const $dialog = $("#note-source-dialog"); const $noteSource = $("#note-source"); function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; $dialog.modal(); diff --git a/src/public/javascripts/dialogs/options.js b/src/public/javascripts/dialogs/options.js index 146b623e4..17c47bca0 100644 --- a/src/public/javascripts/dialogs/options.js +++ b/src/public/javascripts/dialogs/options.js @@ -17,6 +17,8 @@ function addTabHandler(handler) { } async function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; const options = await server.get('options'); diff --git a/src/public/javascripts/dialogs/prompt.js b/src/public/javascripts/dialogs/prompt.js index cd23d831a..5c5004c97 100644 --- a/src/public/javascripts/dialogs/prompt.js +++ b/src/public/javascripts/dialogs/prompt.js @@ -1,3 +1,5 @@ +import utils from "../services/utils.js"; + const $dialog = $("#prompt-dialog"); const $dialogBody = $dialog.find(".modal-body"); @@ -10,6 +12,8 @@ let resolve; let shownCb; function ask({ message, defaultValue, shown }) { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; shownCb = shown; diff --git a/src/public/javascripts/dialogs/recent_changes.js b/src/public/javascripts/dialogs/recent_changes.js index 68b0a38ca..00ebbbfac 100644 --- a/src/public/javascripts/dialogs/recent_changes.js +++ b/src/public/javascripts/dialogs/recent_changes.js @@ -6,6 +6,8 @@ const $dialog = $("#recent-changes-dialog"); const $content = $("#recent-changes-content"); async function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; $dialog.modal(); diff --git a/src/public/javascripts/dialogs/sql_console.js b/src/public/javascripts/dialogs/sql_console.js index 366d69d3e..bba3fe08b 100644 --- a/src/public/javascripts/dialogs/sql_console.js +++ b/src/public/javascripts/dialogs/sql_console.js @@ -1,6 +1,7 @@ import libraryLoader from '../services/library_loader.js'; import server from '../services/server.js'; import infoService from "../services/info.js"; +import utils from "../services/utils.js"; const $dialog = $("#sql-console-dialog"); const $query = $('#sql-console-query'); @@ -14,6 +15,8 @@ let codeEditor; $dialog.on("shown.bs.modal", e => initEditor()); async function showDialog() { + utils.closeActiveDialog(); + glob.activeDialog = $dialog; await showTables(); diff --git a/src/public/javascripts/services/tree.js b/src/public/javascripts/services/tree.js index 29376c470..b9d26b87f 100644 --- a/src/public/javascripts/services/tree.js +++ b/src/public/javascripts/services/tree.js @@ -162,9 +162,7 @@ async function activateNote(notePath, noteLoadedListener) { await hoistedNoteService.unhoist(); } - if (glob.activeDialog) { - glob.activeDialog.modal('hide'); - } + utils.closeActiveDialog(); const node = await expandToNote(notePath); diff --git a/src/public/javascripts/services/utils.js b/src/public/javascripts/services/utils.js index 65ef0295f..350596aa4 100644 --- a/src/public/javascripts/services/utils.js +++ b/src/public/javascripts/services/utils.js @@ -194,6 +194,12 @@ function getMimeTypeClass(mime) { return 'mime-' + mime.toLowerCase().replace(/[\W_]+/g,"-"); } +function closeActiveDialog() { + if (glob.activeDialog) { + glob.activeDialog.modal('hide'); + } +} + export default { reloadApp, parseDate, @@ -223,5 +229,6 @@ export default { setSessionCookie, getCookie, getNoteTypeClass, - getMimeTypeClass + getMimeTypeClass, + closeActiveDialog }; \ No newline at end of file