feat: add migrated flag & update dateEdited on migration

This commit is contained in:
thecodrr
2020-12-06 15:35:23 +05:00
parent 10570e14b2
commit 2b30bd9bf0
5 changed files with 21 additions and 10 deletions

View File

@@ -37,10 +37,14 @@ class Collector {
_collect(array) { _collect(array) {
return Promise.all( return Promise.all(
tfun tfun
.filter((item) => item.dateEdited > this._lastSyncedTimestamp) .filter(
(item) => item.dateEdited > this._lastSyncedTimestamp || item.migrated
)
.map(async (item) => { .map(async (item) => {
// in case of resolved delta, we do not want to send this key to the server // in case of resolved delta
if (item.resolved) delete item.resolved; item.resolved = false;
// turn the migrated flag off so we don't keep syncing this item repeated
item.migrated = false;
return { return {
id: item.id, id: item.id,

View File

@@ -4,7 +4,8 @@ import getId from "../utils/id";
export default class Content extends Collection { export default class Content extends Collection {
async add(content) { async add(content) {
if (!content) return; if (!content) return;
if (content.deleted) return await this._collection.addItem(content); if (content.deleted || content.migrated)
return await this._collection.addItem(content);
if (content.id && (await this._collection.exists(content.id))) { if (content.id && (await this._collection.exists(content.id))) {
content = { content = {

View File

@@ -18,7 +18,7 @@ if (!tfun) {
export default class Notes extends Collection { export default class Notes extends Collection {
async add(noteArg) { async add(noteArg) {
if (!noteArg) return; if (!noteArg) return;
if (noteArg.remote) { if (noteArg.remote || noteArg.migrated) {
return await this._collection.addItem(noteArg); return await this._collection.addItem(noteArg);
} }

View File

@@ -26,7 +26,7 @@ export default class Trash extends Collection {
} }
async add(item) { async add(item) {
if (item.dateDeleted || item.deleted) { if (item.dateDeleted || item.deleted || item.migrated) {
return await this._collection.addItem(item); return await this._collection.addItem(item);
} }
await this._collection.addItem({ await this._collection.addItem({

View File

@@ -6,17 +6,20 @@ export const migrations = {
delete item.content; delete item.content;
item.contentId = contentId; item.contentId = contentId;
} }
if (item.notebook.id) { if (item.notebook) {
const notebook = item.notebook; const notebook = item.notebook;
delete item.notebook;
item.notebooks = [notebook]; item.notebooks = [notebook];
} }
delete item.notebook; item.dateEdited = Date.now();
item.remote = true; item.migrated = true;
return item; return item;
}, },
delta: function (item) { delta: function (item) {
item.data = item.data.ops; item.data = item.data.ops;
item.type = "delta"; item.type = "delta";
item.dateEdited = Date.now();
item.migrated = true;
return item; return item;
}, },
trash: function (item) { trash: function (item) {
@@ -26,6 +29,8 @@ export const migrations = {
item.contentId = item.content.delta; item.contentId = item.content.delta;
delete item.content; delete item.content;
} }
item.dateEdited = Date.now();
item.migrated = true;
return item; return item;
}, },
}, },
@@ -34,8 +39,9 @@ export const migrations = {
// notebook -> notebooks // notebook -> notebooks
const notebook = item.notebook; const notebook = item.notebook;
delete item.notebook; delete item.notebook;
item.remote = true;
if (notebook) item.notebooks = [notebook]; if (notebook) item.notebooks = [notebook];
item.dateEdited = Date.now();
item.migrated = true;
return item; return item;
}, },
}, },