mirror of
https://github.com/zadam/trilium.git
synced 2025-02-24 23:13:43 +08:00
fix infinite recursion, closes #2292
This commit is contained in:
parent
e42357f1f8
commit
ce57a13002
1 changed files with 31 additions and 21 deletions
|
@ -45,33 +45,33 @@ class Note extends AbstractEntity {
|
|||
update([noteId, title, type, mime, isProtected, dateCreated, dateModified, utcDateCreated, utcDateModified]) {
|
||||
// ------ Database persisted attributes ------
|
||||
|
||||
/** @param {string} */
|
||||
/** @type {string} */
|
||||
this.noteId = noteId;
|
||||
/** @param {string} */
|
||||
/** @type {string} */
|
||||
this.title = title;
|
||||
/** @param {boolean} */
|
||||
/** @type {boolean} */
|
||||
this.isProtected = !!isProtected;
|
||||
/** @param {string} */
|
||||
/** @type {string} */
|
||||
this.type = type;
|
||||
/** @param {string} */
|
||||
/** @type {string} */
|
||||
this.mime = mime;
|
||||
/** @param {string} */
|
||||
/** @type {string} */
|
||||
this.dateCreated = dateCreated || dateUtils.localNowDateTime();
|
||||
/** @param {string} */
|
||||
/** @type {string} */
|
||||
this.dateModified = dateModified;
|
||||
/** @param {string} */
|
||||
/** @type {string} */
|
||||
this.utcDateCreated = utcDateCreated || dateUtils.utcNowDateTime();
|
||||
/** @param {string} */
|
||||
/** @type {string} */
|
||||
this.utcDateModified = utcDateModified;
|
||||
|
||||
// ------ Derived attributes ------
|
||||
|
||||
/** @param {boolean} */
|
||||
/** @type {boolean} */
|
||||
this.isDecrypted = !this.noteId || !this.isProtected;
|
||||
|
||||
this.decrypt();
|
||||
|
||||
/** @param {string|null} */
|
||||
/** @type {string|null} */
|
||||
this.flatTextCache = null;
|
||||
|
||||
return this;
|
||||
|
@ -729,23 +729,33 @@ class Note extends AbstractEntity {
|
|||
|
||||
/** @returns {Note[]} */
|
||||
getSubtreeNotesIncludingTemplated() {
|
||||
const arr = [[this]];
|
||||
const set = new Set();
|
||||
|
||||
for (const childNote of this.children) {
|
||||
arr.push(childNote.getSubtreeNotesIncludingTemplated());
|
||||
function inner(note) {
|
||||
if (set.has(note)) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (const targetRelation of this.targetRelations) {
|
||||
set.add(note);
|
||||
|
||||
for (const childNote of note.children) {
|
||||
inner(childNote);
|
||||
}
|
||||
|
||||
for (const targetRelation of note.targetRelations) {
|
||||
if (targetRelation.name === 'template') {
|
||||
const note = targetRelation.note;
|
||||
const targetNote = targetRelation.note;
|
||||
|
||||
if (note) {
|
||||
arr.push(note.getSubtreeNotesIncludingTemplated());
|
||||
if (targetNote) {
|
||||
inner(targetNote);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return arr.flat();
|
||||
inner(this);
|
||||
|
||||
return Array.from(set);
|
||||
}
|
||||
|
||||
/** @returns {Note[]} */
|
||||
|
|
Loading…
Reference in a new issue