fix note cache for out of order synced entities

This commit is contained in:
zadam 2020-08-27 22:37:57 +02:00
parent 355780c595
commit 4cd1a0ee7d
4 changed files with 28 additions and 13 deletions

View File

@ -0,0 +1 @@
DELETE FROM options WHERE name = 'keyboardShortcutsActivateParentNote';

View File

@ -4,7 +4,7 @@ const build = require('./build');
const packageJson = require('../../package'); const packageJson = require('../../package');
const {TRILIUM_DATA_DIR} = require('./data_dir'); const {TRILIUM_DATA_DIR} = require('./data_dir');
const APP_DB_VERSION = 166; const APP_DB_VERSION = 167;
const SYNC_VERSION = 16; const SYNC_VERSION = 16;
const CLIPPER_PROTOCOL_VERSION = "1.0"; const CLIPPER_PROTOCOL_VERSION = "1.0";

View File

@ -1,5 +1,7 @@
"use strict"; "use strict";
import Note from './note.js';
class Attribute { class Attribute {
constructor(noteCache, row) { constructor(noteCache, row) {
/** @param {NoteCache} */ /** @param {NoteCache} */
@ -23,6 +25,12 @@ class Attribute {
this.isInheritable = !!row.isInheritable; this.isInheritable = !!row.isInheritable;
this.noteCache.attributes[this.attributeId] = this; this.noteCache.attributes[this.attributeId] = this;
if (!(this.noteId in this.noteCache.notes)) {
// entities can come out of order in sync, create skeleton which will be filled later
this.noteCache.notes[this.noteId] = new Note(this.noteCache, {noteId: this.noteId});
}
this.noteCache.notes[this.noteId].ownedAttributes.push(this); this.noteCache.notes[this.noteId].ownedAttributes.push(this);
const key = `${this.type}-${this.name}`; const key = `${this.type}-${this.name}`;

View File

@ -1,5 +1,7 @@
"use strict"; "use strict";
import Note from "./note.js";
class Branch { class Branch {
constructor(noteCache, row) { constructor(noteCache, row) {
/** @param {NoteCache} */ /** @param {NoteCache} */
@ -17,14 +19,9 @@ class Branch {
return; return;
} }
const childNote = this.noteCache.notes[this.noteId]; const childNote = this.childNote;
const parentNote = this.parentNote; const parentNote = this.parentNote;
if (!childNote) {
console.log(`Cannot find child note ${this.noteId} of a branch ${this.branchId}`);
return;
}
childNote.parents.push(parentNote); childNote.parents.push(parentNote);
childNote.parentBranches.push(this); childNote.parentBranches.push(this);
@ -35,14 +32,23 @@ class Branch {
} }
/** @return {Note} */ /** @return {Note} */
get parentNote() { get childNote() {
const note = this.noteCache.notes[this.parentNoteId]; if (!(this.noteId in this.noteCache.notes)) {
// entities can come out of order in sync, create skeleton which will be filled later
if (!note) { this.noteCache.notes[this.noteId] = new Note(this.noteCache, {noteId: this.noteId});
console.log(`Cannot find note ${this.parentNoteId}`);
} }
return note; return this.noteCache.notes[this.noteId];
}
/** @return {Note} */
get parentNote() {
if (!(this.parentNoteId in this.noteCache.notes)) {
// entities can come out of order in sync, create skeleton which will be filled later
this.noteCache.notes[this.parentNoteId] = new Note(this.noteCache, {noteId: this.parentNoteId});
}
return this.noteCache.notes[this.parentNoteId];
} }
} }