Browse Source

refactor: enhance platform service for ActiveDid migration

- Update PlatformServiceMixin interface to include $getActiveIdentity
- Improve apiServer default handling across all platforms
- Add better error handling for platform service methods
- Ensure consistent behavior across web and electron platforms
pull/188/head
Matthew Raymer 2 weeks ago
parent
commit
552de23ef2
  1. 1
      src/services/PlatformService.ts
  2. 42
      src/services/platforms/WebPlatformService.ts

1
src/services/PlatformService.ts

@ -173,6 +173,7 @@ export interface PlatformService {
* @returns Promise that resolves when the update is complete * @returns Promise that resolves when the update is complete
*/ */
updateDefaultSettings(settings: Record<string, unknown>): Promise<void>; updateDefaultSettings(settings: Record<string, unknown>): Promise<void>;
updateActiveDid(did: string): Promise<void>;
/** /**
* Inserts a new DID into the settings table. * Inserts a new DID into the settings table.

42
src/services/platforms/WebPlatformService.ts

@ -674,15 +674,51 @@ export class WebPlatformService implements PlatformService {
async updateDefaultSettings( async updateDefaultSettings(
settings: Record<string, unknown>, settings: Record<string, unknown>,
): Promise<void> { ): Promise<void> {
// Get current active DID and update that identity's settings
const activeIdentity = await this.getActiveIdentity();
const activeDid = activeIdentity.activeDid;
if (!activeDid) {
logger.warn(
"[WebPlatformService] No active DID found, cannot update default settings",
);
return;
}
const keys = Object.keys(settings); const keys = Object.keys(settings);
const setClause = keys.map((key) => `${key} = ?`).join(", "); const setClause = keys.map((key) => `${key} = ?`).join(", ");
const sql = `UPDATE settings SET ${setClause} WHERE id = 1`; const sql = `UPDATE settings SET ${setClause} WHERE accountDid = ?`;
const params = keys.map((key) => settings[key]); const params = [...keys.map((key) => settings[key]), activeDid];
await this.dbExec(sql, params); await this.dbExec(sql, params);
} }
async updateActiveDid(did: string): Promise<void> {
await this.dbExec(
"INSERT OR REPLACE INTO active_identity (id, activeDid, lastUpdated) VALUES (1, ?, ?)",
[did, new Date().toISOString()],
);
}
async getActiveIdentity(): Promise<{ activeDid: string }> {
const result = await this.dbQuery(
"SELECT activeDid FROM active_identity WHERE id = 1",
);
return {
activeDid: (result?.values?.[0]?.[0] as string) || "",
};
}
async insertNewDidIntoSettings(did: string): Promise<void> { async insertNewDidIntoSettings(did: string): Promise<void> {
await this.dbExec("INSERT INTO settings (accountDid) VALUES (?)", [did]); // Import constants dynamically to avoid circular dependencies
const { DEFAULT_ENDORSER_API_SERVER, DEFAULT_PARTNER_API_SERVER } =
await import("@/constants/app");
// Use INSERT OR REPLACE to handle case where settings already exist for this DID
// This prevents duplicate accountDid entries and ensures data integrity
await this.dbExec(
"INSERT OR REPLACE INTO settings (accountDid, finishedOnboarding, apiServer, partnerApiServer) VALUES (?, ?, ?, ?)",
[did, false, DEFAULT_ENDORSER_API_SERVER, DEFAULT_PARTNER_API_SERVER],
);
} }
async updateDidSpecificSettings( async updateDidSpecificSettings(

Loading…
Cancel
Save