diff --git a/packages/core/src/collections/settings.ts b/packages/core/src/collections/settings.ts index d9f67a955..7e610411b 100644 --- a/packages/core/src/collections/settings.ts +++ b/packages/core/src/collections/settings.ts @@ -26,7 +26,8 @@ import { GroupingKey, SettingsItem, ToolbarConfig, - TrashCleanupInterval + TrashCleanupInterval, + isDeleted } from "../types"; import { ICollection } from "./collection"; import { TimeFormat } from "../utils/date"; @@ -58,18 +59,25 @@ class Settings implements ICollection { async merge(remoteItem: SettingsItem, lastSynced: number) { if (this.settings.dateModified > lastSynced) { - this.settings.id = remoteItem.id; - this.settings.groupOptions = { - ...this.settings.groupOptions, - ...remoteItem.groupOptions - }; - this.settings.toolbarConfig = { - ...this.settings.toolbarConfig, - ...remoteItem.toolbarConfig - }; - this.settings.aliases = { - ...this.settings.aliases, - ...remoteItem.aliases + this.settings = { + ...this.settings, + ...(isDeleted(remoteItem) + ? {} + : { + ...remoteItem, + groupOptions: { + ...this.settings.groupOptions, + ...remoteItem.groupOptions + }, + toolbarConfig: { + ...this.settings.toolbarConfig, + ...remoteItem.toolbarConfig + }, + aliases: { + ...this.settings.aliases, + ...remoteItem.aliases + } + }) }; this.settings.dateModified = Date.now(); } else { diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 9b28f239f..7a303a201 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -75,6 +75,7 @@ export type GroupableItem = ValueOf< | "relation" | "tiny" | "tiptap" + | "content" | "session" | "sessioncontent" | "settings" @@ -289,13 +290,16 @@ export type DefaultNotebook = { id: string; topic?: string }; export interface SettingsItem extends BaseItem<"settings"> { groupOptions?: Partial>; toolbarConfig?: Record; - aliases?: Record; trashCleanupInterval?: 7 | 30 | 365 | -1; titleFormat?: string; timeFormat?: TimeFormat; dateFormat?: string; defaultNotebook?: DefaultNotebook; + /** + * @deprecated only kept here for migration purposes. + */ + aliases?: Record; /** * @deprecated only kept here for migration purposes. */