proper handling of deleted notes

This commit is contained in:
zadam 2020-03-23 16:39:03 +01:00
parent 978575498c
commit cb168218fb
5 changed files with 48 additions and 11 deletions

View File

@ -70,6 +70,10 @@ function mouseLeaveHandler() {
}
async function renderTooltip(note, noteComplement) {
if (note.isDeleted) {
return '<div>Note has been deleted.</div>';
}
const attributes = await note.getAttributes();
let content = '';

View File

@ -25,19 +25,28 @@ class TabContext extends Component {
}
async setNote(inputNotePath, triggerSwitchEvent = true) {
const notePath = await treeService.resolveNotePath(inputNotePath);
const noteId = treeService.getNoteIdFromNotePath(inputNotePath);
let notePath;
if (!notePath) {
console.error(`Cannot resolve note path ${inputNotePath}`);
return;
if ((await treeCache.getNote(noteId)).isDeleted) {
// no point in trying to resolve canonical notePath
notePath = inputNotePath;
}
else {
notePath = await treeService.resolveNotePath(inputNotePath);
if (notePath === this.notePath) {
return;
}
if (!notePath) {
console.error(`Cannot resolve note path ${inputNotePath}`);
return;
}
if (await hoistedNoteService.checkNoteAccess(notePath) === false) {
return; // note is outside of hoisted subtree and user chose not to unhoist
if (notePath === this.notePath) {
return;
}
if (await hoistedNoteService.checkNoteAccess(notePath) === false) {
return; // note is outside of hoisted subtree and user chose not to unhoist
}
}
await this.triggerEvent('beforeNoteSwitch', {tabContext: this});
@ -45,7 +54,7 @@ class TabContext extends Component {
utils.closeActiveDialog();
this.notePath = notePath;
this.noteId = treeService.getNoteIdFromNotePath(notePath);
this.noteId = noteId;
this.autoBookDisabled = false;

View File

@ -17,6 +17,7 @@ import BookTypeWidget from "./type_widgets/book.js";
import appContext from "../services/app_context.js";
import keyboardActionsService from "../services/keyboard_actions.js";
import noteCreateService from "../services/note_create.js";
import DeletedTypeWidget from "./type_widgets/deleted.js";
const TPL = `
<div class="note-detail">
@ -33,6 +34,7 @@ const TPL = `
const typeWidgetClasses = {
'empty': EmptyTypeWidget,
'deleted': DeletedTypeWidget,
'text': TextTypeWidget,
'code': CodeTypeWidget,
'file': FileTypeWidget,
@ -157,6 +159,8 @@ export default class NoteDetailWidget extends TabAwareWidget {
if (!note) {
return "empty";
} else if (note.isDeleted) {
return "deleted";
}
let type = note.type;

View File

@ -7,7 +7,7 @@ export default class ScreenContainer extends FlexContainer {
this.screenName = screenName;
}
activeScreenChangedEvent({activeScreen}) {console.log("Active screen", activeScreen);
activeScreenChangedEvent({activeScreen}) {
if (activeScreen === this.screenName) {
this.$widget.removeClass('d-none');
}

View File

@ -0,0 +1,20 @@
import TypeWidget from "./type_widget.js";
const TPL = `
<div class="note-detail-deleted note-detail-printable">
<div style="padding: 100px;">
<div class="alert alert-warning" style="padding: 20px;">
This note has been deleted.
</div>
</div>
</div>`;
export default class DeletedTypeWidget extends TypeWidget {
static getType() { return "deleted"; }
doRender() {
this.$widget = $(TPL);
return this.$widget;
}
}