diff --git a/src/public/app/dialogs/delete_notes.js b/src/public/app/dialogs/delete_notes.js deleted file mode 100644 index 18940db67..000000000 --- a/src/public/app/dialogs/delete_notes.js +++ /dev/null @@ -1,99 +0,0 @@ -import server from "../services/server.js"; -import froca from "../services/froca.js"; -import linkService from "../services/link.js"; -import utils from "../services/utils.js"; - -const $dialog = $("#delete-notes-dialog"); -const $okButton = $("#delete-notes-dialog-ok-button"); -const $cancelButton = $("#delete-notes-dialog-cancel-button"); -const $deleteNotesList = $("#delete-notes-list"); -const $brokenRelationsList = $("#broken-relations-list"); -const $deletedNotesCount = $("#deleted-notes-count"); -const $noNoteToDeleteWrapper = $("#no-note-to-delete-wrapper"); -const $deleteNotesListWrapper = $("#delete-notes-list-wrapper"); -const $brokenRelationsListWrapper = $("#broken-relations-wrapper"); -const $brokenRelationsCount = $("#broke-relations-count"); -const $deleteAllClones = $("#delete-all-clones"); -const $eraseNotes = $("#erase-notes"); - -let branchIds = null; -let resolve = null; - -async function renderDeletePreview() { - const response = await server.post('delete-notes-preview', { - branchIdsToDelete: branchIds, - deleteAllClones: isDeleteAllClonesChecked() - }); - - $deleteNotesList.empty(); - $brokenRelationsList.empty(); - - $deleteNotesListWrapper.toggle(response.noteIdsToBeDeleted.length > 0); - $noNoteToDeleteWrapper.toggle(response.noteIdsToBeDeleted.length === 0); - - for (const note of await froca.getNotes(response.noteIdsToBeDeleted)) { - $deleteNotesList.append( - $("
${attr.name}
originating from `)
- .append(await linkService.createNoteLink(attr.noteId))
- );
- }
-}
-
-export async function showDialog(branchIdsToDelete) {
- branchIds = branchIdsToDelete;
-
- await renderDeletePreview();
-
- utils.openDialog($dialog);
-
- $deleteAllClones.prop("checked", false);
- $eraseNotes.prop("checked", false);
-
- return new Promise((res, rej) => resolve = res);
-}
-
-export function isDeleteAllClonesChecked() {
- return $deleteAllClones.is(":checked");
-}
-
-export function isEraseNotesChecked() {
- return $eraseNotes.is(":checked");
-}
-
-$dialog.on('shown.bs.modal', () => $okButton.trigger("focus"));
-
-$cancelButton.on('click', () => {
- utils.closeActiveDialog();
-
- resolve({proceed: false});
-});
-
-$okButton.on('click', () => {
- utils.closeActiveDialog();
-
- resolve({
- proceed: true,
- deleteAllClones: isDeleteAllClonesChecked(),
- eraseNotes: isEraseNotesChecked()
- });
-});
-
-$deleteAllClones.on('click', () => renderDeletePreview());
diff --git a/src/public/app/dialogs/protected_session.js b/src/public/app/dialogs/protected_session.js
deleted file mode 100644
index 3902cf299..000000000
--- a/src/public/app/dialogs/protected_session.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import protectedSessionService from "../services/protected_session.js";
-import utils from "../services/utils.js";
-
-const $dialog = $("#protected-session-password-dialog");
-const $passwordForm = $dialog.find(".protected-session-password-form");
-const $passwordInput = $dialog.find(".protected-session-password");
-
-export function show() {
- utils.openDialog($dialog);
-
- $passwordInput.trigger('focus');
-}
-
-export function close() {
- // this may fail if the dialog has not been previously opened (not sure if still true with Bootstrap modal)
- try {
- $dialog.modal('hide');
- }
- catch (e) {}
-}
-
-$passwordForm.on('submit', () => {
- const password = $passwordInput.val();
- $passwordInput.val("");
-
- protectedSessionService.setupProtectedSession(password);
-
- return false;
-});
diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js
index f44d292e5..f61157932 100644
--- a/src/public/app/layouts/desktop_layout.js
+++ b/src/public/app/layouts/desktop_layout.js
@@ -70,6 +70,7 @@ import ExportDialog from "../widgets/dialogs/export.js";
import MarkdownImportDialog from "../widgets/dialogs/markdown_import.js";
import ProtectedSessionPasswordDialog from "../widgets/dialogs/protected_session_password.js";
import NoteRevisionsDialog from "../widgets/dialogs/note_revisions.js";
+import DeleteNotesDialog from "../widgets/dialogs/delete_notes.js";
export default class DesktopLayout {
constructor(customWidgets) {
@@ -214,6 +215,7 @@ export default class DesktopLayout {
.child(new ExportDialog())
.child(new MarkdownImportDialog())
.child(new ProtectedSessionPasswordDialog())
- .child(new NoteRevisionsDialog());
+ .child(new NoteRevisionsDialog())
+ .child(new DeleteNotesDialog());
}
}
diff --git a/src/public/app/services/branches.js b/src/public/app/services/branches.js
index 7756c7a03..c96c46cd3 100644
--- a/src/public/app/services/branches.js
+++ b/src/public/app/services/branches.js
@@ -4,6 +4,7 @@ import toastService from "./toast.js";
import froca from "./froca.js";
import hoistedNoteService from "./hoisted_note.js";
import ws from "./ws.js";
+import appContext from "./app_context.js";
async function moveBeforeBranch(branchIdsToMove, beforeBranchId) {
branchIdsToMove = filterRootNote(branchIdsToMove);
@@ -81,8 +82,8 @@ async function deleteNotes(branchIdsToDelete) {
deleteAllClones = false;
}
else {
- const deleteNotesDialog = await import("../dialogs/delete_notes.js");
- ({proceed, deleteAllClones, eraseNotes} = await deleteNotesDialog.showDialog(branchIdsToDelete));
+ ({proceed, deleteAllClones, eraseNotes} = await new Promise(res =>
+ appContext.triggerCommand('showDeleteNotesDialog', {branchIdsToDelete, callback: res})));
}
if (!proceed) {
diff --git a/src/public/app/widgets/dialogs/delete_notes.js b/src/public/app/widgets/dialogs/delete_notes.js
new file mode 100644
index 000000000..fa07bb95d
--- /dev/null
+++ b/src/public/app/widgets/dialogs/delete_notes.js
@@ -0,0 +1,167 @@
+import server from "../../services/server.js";
+import froca from "../../services/froca.js";
+import linkService from "../../services/link.js";
+import utils from "../../services/utils.js";
+import BasicWidget from "../basic_widget.js";
+
+const TPL = `
+${attr.name}
originating from `)
+ .append(await linkService.createNoteLink(attr.noteId))
+ );
+ }
+ }
+
+ async showDeleteNotesDialogEvent({branchIdsToDelete, callback}) {
+ this.branchIds = branchIdsToDelete;
+
+ await this.renderDeletePreview();
+
+ utils.openDialog(this.$widget);
+
+ this.$deleteAllClones.prop("checked", false);
+ this.$eraseNotes.prop("checked", false);
+
+ this.resolve = callback;
+ }
+
+ isDeleteAllClonesChecked() {
+ return this.$deleteAllClones.is(":checked");
+ }
+
+ isEraseNotesChecked() {
+ return this.$eraseNotes.is(":checked");
+ }
+}
diff --git a/src/views/desktop.ejs b/src/views/desktop.ejs
index f96ccdd22..fdae5e2f8 100644
--- a/src/views/desktop.ejs
+++ b/src/views/desktop.ejs
@@ -21,7 +21,6 @@
<%- include('dialogs/info.ejs') %>
<%- include('dialogs/prompt.ejs') %>
<%- include('dialogs/confirm.ejs') %>
-<%- include('dialogs/delete_notes.ejs') %>