got rid of .isDeleted on froca entities (the property is not available there)

This commit is contained in:
zadam 2023-06-05 16:26:05 +02:00
parent e6bf6424e8
commit 5c393f959d
13 changed files with 46 additions and 76 deletions

View File

@ -241,9 +241,9 @@ class NoteContext extends Component {
async entitiesReloadedEvent({loadResults}) {
if (loadResults.isNoteReloaded(this.noteId)) {
const note = loadResults.getEntityRow('notes', this.noteId);
const noteRow = loadResults.getEntityRow('notes', this.noteId);
if (note.isDeleted) {
if (noteRow.isDeleted) {
this.noteId = null;
this.notePath = null;

View File

@ -15,14 +15,14 @@ export default class ShortcutComponent extends Component {
});
}
bindNoteShortcutHandler(label) {
const handler = () => appContext.tabManager.getActiveContext().setNote(label.noteId);
const namespace = label.attributeId;
bindNoteShortcutHandler(labelOrRow) {
const handler = () => appContext.tabManager.getActiveContext().setNote(labelOrRow.noteId);
const namespace = labelOrRow.attributeId;
if (label.isDeleted) {
if (labelOrRow.isDeleted) { // only applicable if row
shortcutService.removeGlobalShortcut(namespace);
} else {
shortcutService.bindGlobalShortcut(label.value, handler, namespace);
shortcutService.bindGlobalShortcut(labelOrRow.value, handler, namespace);
}
}

View File

@ -67,7 +67,6 @@ export default class LoadResults {
this.attributeRows.push({attributeId, componentId});
}
/** @returns {FAttribute[]} */
getAttributeRows(componentId = 'none') {
return this.attributeRows
.filter(row => row.componentId !== componentId)

View File

@ -75,7 +75,7 @@ function mouseLeaveHandler() {
}
async function renderTooltip(note) {
if (note.isDeleted) {
if (!note) {
return '<div>Note has been deleted.</div>';
}

View File

@ -191,10 +191,10 @@ export default class AttachmentDetailWidget extends BasicWidget {
}
async entitiesReloadedEvent({loadResults}) {
const attachmentChange = loadResults.getAttachmentRows().find(att => att.attachmentId === this.attachment.attachmentId);
const attachmentRow = loadResults.getAttachmentRows().find(att => att.attachmentId === this.attachment.attachmentId);
if (attachmentChange) {
if (attachmentChange.isDeleted) {
if (attachmentRow) {
if (attachmentRow.isDeleted) {
this.toggleInt(false);
} else {
this.refresh();

View File

@ -460,14 +460,7 @@ export default class AttributeEditorWidget extends NoteContextAwareWidget {
const {noteId} = linkService.parseNavigationStateFromUrl($el.find("a").attr("href"));
const note = await froca.getNote(noteId, true);
let title;
if (!note) {
title = '[missing]';
}
else {
title = note.isDeleted ? `${note.title} (deleted)` : note.title;
}
const title = note ? note.title : '[missing]';
$el.text(title);
}
@ -477,7 +470,6 @@ export default class AttributeEditorWidget extends NoteContextAwareWidget {
}
async renderOwnedAttributes(ownedAttributes, saved) {
ownedAttributes = ownedAttributes.filter(oa => !oa.isDeleted);
// attrs are not resorted if position changes after initial load
ownedAttributes.sort((a, b) => a.position < b.position ? -1 : 1);

View File

@ -20,13 +20,13 @@ export default class AbstractLauncher extends OnClickButtonWidget {
throw new Error("Abstract implementation");
}
bindNoteShortcutHandler(label) {
const namespace = label.attributeId;
bindNoteShortcutHandler(labelOrRow) {
const namespace = labelOrRow.attributeId;
if (label.isDeleted) {
if (labelOrRow.isDeleted) { // only applicable if row
shortcutService.removeGlobalShortcut(namespace);
} else {
shortcutService.bindGlobalShortcut(label.value, () => this.launch(), namespace);
shortcutService.bindGlobalShortcut(labelOrRow.value, () => this.launch(), namespace);
}
}

View File

@ -147,11 +147,11 @@ export default class BulkActionsDialog extends BasicWidget {
entitiesReloadedEvent({loadResults}) {
// only refreshing deleted attrs, otherwise components update themselves
if (loadResults.getAttributeRows().find(attr =>
attr.type === 'label'
&& attr.name === 'action'
&& attr.noteId === '_bulkAction'
&& attr.isDeleted)) {
if (loadResults.getAttributeRows().find(row =>
row.type === 'label'
&& row.name === 'action'
&& row.noteId === '_bulkAction'
&& row.isDeleted)) {
// this may be triggered from e.g. sync without open widget, then no need to refresh the widget
if (this.selectedOrActiveNoteIds && this.$widget.is(":visible")) {

View File

@ -19,7 +19,6 @@ import RelationMapTypeWidget from "./type_widgets/relation_map.js";
import CanvasTypeWidget from "./type_widgets/canvas.js";
import ProtectedSessionTypeWidget from "./type_widgets/protected_session.js";
import BookTypeWidget from "./type_widgets/book.js";
import DeletedTypeWidget from "./type_widgets/deleted.js";
import ReadOnlyTextTypeWidget from "./type_widgets/read_only_text.js";
import ReadOnlyCodeTypeWidget from "./type_widgets/read_only_code.js";
import NoneTypeWidget from "./type_widgets/none.js";
@ -47,7 +46,6 @@ const TPL = `
const typeWidgetClasses = {
'empty': EmptyTypeWidget,
'deleted': DeletedTypeWidget,
'editableText': EditableTextTypeWidget,
'readOnlyText': ReadOnlyTextTypeWidget,
'editableCode': EditableCodeTypeWidget,
@ -189,8 +187,6 @@ export default class NoteDetailWidget extends NoteContextAwareWidget {
if (!note) {
return "empty";
} else if (note.isDeleted) {
return "deleted";
}
let type = note.type;

View File

@ -526,7 +526,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
const note = await froca.getNote(node.data.noteId, true);
if (!note || note.isDeleted) {
if (!note) {
return;
}
@ -984,10 +984,11 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
oldActiveNode.setFocus(false);
}
if (this.noteContext
&& this.noteContext.notePath
&& !this.noteContext.note?.isDeleted
&& (!treeService.isNotePathInHiddenSubtree(this.noteContext.notePath) || await hoistedNoteService.isHoistedInHiddenSubtree())
if (this.noteContext?.notePath
&& (
!treeService.isNotePathInHiddenSubtree(this.noteContext.notePath)
|| await hoistedNoteService.isHoistedInHiddenSubtree()
)
) {
const newActiveNode = await this.getNodeFromPath(this.noteContext.notePath);
@ -1125,20 +1126,20 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
let parentsOfAddedNodes = [];
const allBranchRows = loadResults.getBranchRows();
const allBranchesDeleted = allBranchRows.every(branch => !!branch.isDeleted);
const allBranchesDeleted = allBranchRows.every(branchRow => !!branchRow.isDeleted);
for (const ecBranch of allBranchRows) {
if (ecBranch.parentNoteId === '_share') {
for (const branchRow of allBranchRows) {
if (branchRow.parentNoteId === '_share') {
// all shared notes have a sign in the tree, even the descendants of shared notes
noteIdsToReload.add(ecBranch.noteId);
noteIdsToReload.add(branchRow.noteId);
}
else {
// adding noteId itself to update all potential clones
noteIdsToUpdate.add(ecBranch.noteId);
noteIdsToUpdate.add(branchRow.noteId);
}
for (const node of this.getNodesByBranch(ecBranch)) {
if (ecBranch.isDeleted) {
for (const node of this.getNodesByBranch(branchRow)) {
if (branchRow.isDeleted) {
if (node.isActive()) {
if (allBranchesDeleted) {
const newActiveNode = node.getNextSibling()
@ -1157,23 +1158,23 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
node.remove();
}
noteIdsToUpdate.add(ecBranch.parentNoteId);
noteIdsToUpdate.add(branchRow.parentNoteId);
}
}
if (!ecBranch.isDeleted) {
for (const parentNode of this.getNodesByNoteId(ecBranch.parentNoteId)) {
if (!branchRow.isDeleted) {
for (const parentNode of this.getNodesByNoteId(branchRow.parentNoteId)) {
parentsOfAddedNodes.push(parentNode)
if (parentNode.isFolder() && !parentNode.isLoaded()) {
continue;
}
const found = (parentNode.getChildren() || []).find(child => child.data.noteId === ecBranch.noteId);
const found = (parentNode.getChildren() || []).find(child => child.data.noteId === branchRow.noteId);
if (!found) {
// make sure it's loaded
await froca.getNote(ecBranch.noteId);
const frocaBranch = froca.getBranch(ecBranch.branchId);
await froca.getNote(branchRow.noteId);
const frocaBranch = froca.getBranch(branchRow.branchId);
// we're forcing lazy since it's not clear if the whole required subtree is in froca
parentNode.addChildren([this.prepareNode(frocaBranch, true)]);
@ -1181,7 +1182,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
this.sortChildren(parentNode);
// this might be a first child which would force an icon change
noteIdsToUpdate.add(ecBranch.parentNoteId);
noteIdsToUpdate.add(branchRow.parentNoteId);
}
}
}

View File

@ -312,7 +312,9 @@ export default class SearchDefinitionWidget extends NoteContextAwareWidget {
entitiesReloadedEvent({loadResults}) {
// only refreshing deleted attrs, otherwise components update themselves
if (loadResults.getAttributeRows().find(attr => attr.type === 'label' && attr.name === 'action' && attr.isDeleted)) {
if (loadResults.getAttributeRows().find(attrRow =>
attrRow.type === 'label' && attrRow.name === 'action' && attrRow.isDeleted)) {
this.refresh();
}
}

View File

@ -72,9 +72,9 @@ export default class AttachmentDetailTypeWidget extends TypeWidget {
}
async entitiesReloadedEvent({loadResults}) {
const attachmentChange = loadResults.getAttachmentRows().find(att => att.attachmentId === this.attachmentId);
const attachmentRow = loadResults.getAttachmentRows().find(att => att.attachmentId === this.attachmentId);
if (attachmentChange?.isDeleted) {
if (attachmentRow?.isDeleted) {
this.refresh(); // all other updates are handled within AttachmentDetailWidget
}
}

View File

@ -1,20 +0,0 @@
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);
super.doRender();
}
}