diff --git a/src/script/backup/BackupService.ts b/src/script/backup/BackupService.ts index 077b21f839d..fc180deb4b7 100644 --- a/src/script/backup/BackupService.ts +++ b/src/script/backup/BackupService.ts @@ -81,7 +81,7 @@ export class BackupService { { generatePrimaryKey, generateId, - }: {generatePrimaryKey?: (entry: T) => string; generateId?: (entry: T) => string} = {}, + }: {generatePrimaryKey?: (entry: T) => string; generateId?: (entry: T) => string | undefined} = {}, ): Promise { if (this.storageService.db) { const table = await this.storageService.db.table(tableName); @@ -112,14 +112,14 @@ export class BackupService { private async addByIds( table: Dexie.Table, entities: T[], - generateId?: (entry: T) => string, + generateId?: (entry: T) => string | undefined, ): Promise { if (!generateId) { await table.bulkAdd(entities); return entities.length; } - const ids = entities.map(generateId); + const ids = entities.map(generateId).filter((id): id is string => typeof id === 'string'); const existingEntities = await table.where('id').anyOf(ids).toArray(); const newEntities = entities.filter( entity => !existingEntities.some(existingEntity => generateId(existingEntity) === generateId(entity)), diff --git a/src/script/storage/record/EventRecord.ts b/src/script/storage/record/EventRecord.ts index 1582638842b..90294702bef 100644 --- a/src/script/storage/record/EventRecord.ts +++ b/src/script/storage/record/EventRecord.ts @@ -61,7 +61,7 @@ export type StoredEvent = { /** Only used with IndexedDB table 'event' */ primary_key: string; category: number; - id: string; + id?: string; /** if the message is ephemeral, that's the amount of time it should be displayed to the user * the different types are * - string: a datestring