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 {TRILIUM_DATA_DIR} = require('./data_dir');
const APP_DB_VERSION = 166;
const APP_DB_VERSION = 167;
const SYNC_VERSION = 16;
const CLIPPER_PROTOCOL_VERSION = "1.0";

View File

@ -1,5 +1,7 @@
"use strict";
import Note from './note.js';
class Attribute {
constructor(noteCache, row) {
/** @param {NoteCache} */
@ -23,6 +25,12 @@ class Attribute {
this.isInheritable = !!row.isInheritable;
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);
const key = `${this.type}-${this.name}`;

View File

@ -1,5 +1,7 @@
"use strict";
import Note from "./note.js";
class Branch {
constructor(noteCache, row) {
/** @param {NoteCache} */
@ -17,14 +19,9 @@ class Branch {
return;
}
const childNote = this.noteCache.notes[this.noteId];
const childNote = this.childNote;
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.parentBranches.push(this);
@ -35,14 +32,23 @@ class Branch {
}
/** @return {Note} */
get parentNote() {
const note = this.noteCache.notes[this.parentNoteId];
if (!note) {
console.log(`Cannot find note ${this.parentNoteId}`);
get childNote() {
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});
}
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];
}
}