diff --git a/packages/app/lib/electronDb.ts b/packages/app/lib/electronDb.ts index 0d45fa24ab..4de0987fab 100644 --- a/packages/app/lib/electronDb.ts +++ b/packages/app/lib/electronDb.ts @@ -1,5 +1,6 @@ import { schema, setClient } from '@tloncorp/shared/db'; import { handleChange } from '@tloncorp/shared/db'; +import * as kv from '@tloncorp/shared/db'; import { migrations } from '@tloncorp/shared/db/migrations'; import { drizzle } from 'drizzle-orm/sqlite-proxy'; @@ -128,6 +129,9 @@ export class ElectronDb extends BaseDb { await window.sqliteBridge.purgeDb(); this.client = null; + // reset values related to tracking db sync state + await kv.headsSyncedAt.resetValue(); + logger.log('Purged Electron SQLite database, reconnecting'); await this.setupDb(); } @@ -170,18 +174,22 @@ export class ElectronDb extends BaseDb { } catch (e) { // Check if this is a "table already exists" error, which isn't fatal if (e.message && e.message.includes('already exists')) { - logger.log('Migration contains tables that already exist, continuing', e); + logger.log( + 'Migration contains tables that already exist, continuing', + e + ); return; - } - + } + // For other errors, log but don't purge database logger.error('Migration failed:', e); - + // Only purge the database for critical errors that prevent app from working - if (e.message && ( - e.message.includes('database is corrupted') || - e.message.includes('database disk image is malformed') - )) { + if ( + e.message && + (e.message.includes('database is corrupted') || + e.message.includes('database disk image is malformed')) + ) { logger.error('Database appears corrupted, purging and retrying'); await this.purgeDb(); await window.sqliteBridge.runMigrations(formattedMigrations); diff --git a/packages/app/lib/nativeDb.ts b/packages/app/lib/nativeDb.ts index 7fd0d2b5ba..d0730fc77d 100644 --- a/packages/app/lib/nativeDb.ts +++ b/packages/app/lib/nativeDb.ts @@ -1,5 +1,6 @@ import { open } from '@op-engineering/op-sqlite'; import { escapeLog } from '@tloncorp/shared'; +import * as kv from '@tloncorp/shared/db'; import { schema, setClient } from '@tloncorp/shared/db'; import { @@ -73,6 +74,10 @@ export class NativeDb extends BaseDb { this.connection.delete(); this.connection = null; this.client = null; + + // reset values related to tracking db sync state + await kv.headsSyncedAt.resetValue(); + logger.log('purged sqlite database, recreating'); await this.setupDb(); } diff --git a/packages/shared/src/db/keyValue.ts b/packages/shared/src/db/keyValue.ts index c8236ca2cf..4db4ebf6e3 100644 --- a/packages/shared/src/db/keyValue.ts +++ b/packages/shared/src/db/keyValue.ts @@ -10,11 +10,6 @@ import * as ub from '../urbit'; import { NodeBootPhase, SignupParams } from './domainTypes'; import { createStorageItem } from './storageItem'; -export const activitySeenMarker = createStorageItem({ - key: 'activitySeenMarker', - defaultValue: 1, -}); - export const pushNotificationSettings = createStorageItem({ key: 'settings:pushNotifications',