diff --git a/src/services/handlers.js b/src/services/handlers.js index 0a95deebd..b1ccfa63f 100644 --- a/src/services/handlers.js +++ b/src/services/handlers.js @@ -61,6 +61,12 @@ eventService.subscribe([ eventService.ENTITY_CHANGED, eventService.ENTITY_DELETE eventService.subscribe(eventService.ENTITY_CHANGED, ({entityName, entity}) => { if (entityName === 'note_contents') { // FIXME runAttachedRelations(entity, 'runOnNoteContentChange', entity); + } else if (entityName === 'branches') { + const parentNote = becca.getNote(entity.parentNoteId); + + if (parentNote?.hasLabel("sorted")) { + treeService.sortNotesIfNeeded(parentNote.noteId); + } } }); diff --git a/src/services/tree.js b/src/services/tree.js index 371b777f4..ac12481ca 100644 --- a/src/services/tree.js +++ b/src/services/tree.js @@ -90,22 +90,29 @@ function sortNotes(parentNoteId, customSortBy = 'title', reverse = false, folder } function fetchValue(note, key) { - const rawValue = ['title', 'dateCreated', 'dateModified'].includes(key) - ? note[key] - : note.getLabelValue(key); + let rawValue; + + if (key === 'title') { + const branch = note.getParentBranches().find(branch => branch.parentNoteId === parentNoteId); + const prefix = branch?.prefix; + rawValue = prefix ? `${prefix} - ${note.title}` : note.title; + } else { + rawValue = ['dateCreated', 'dateModified'].includes(key) + ? note[key] + : note.getLabelValue(key); + } return normalize(rawValue); } function compare(a, b) { - if (!sortNatural){ + if (!sortNatural) { // alphabetical sort return b === null || b === undefined || a < b ? -1 : 1; } else { // natural sort return a.localeCompare(b, sortLocale, {numeric: true, sensitivity: 'base'}); } - } const topAEl = fetchValue(a, 'top');