| 
						
						
							
								
							
						
						
					 | 
					@ -6,6 +6,12 @@ import { DEFAULT_ENDORSER_API_SERVER } from "@/constants/app"; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import { arrayBufferToBase64 } from "@/libs/crypto"; | 
					 | 
					 | 
					import { arrayBufferToBase64 } from "@/libs/crypto"; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import { logger } from "@/utils/logger"; | 
					 | 
					 | 
					import { logger } from "@/utils/logger"; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					// Database result interface for SQLite queries
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					interface DatabaseResult { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					  values?: unknown[][]; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					  [key: string]: unknown; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					// Generate a random secret for the secret table
 | 
					 | 
					 | 
					// Generate a random secret for the secret table
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					// It's not really secure to maintain the secret next to the user's data.
 | 
					 | 
					 | 
					// It's not really secure to maintain the secret next to the user's data.
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -123,6 +129,7 @@ const MIGRATIONS = [ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        blobB64 TEXT | 
					 | 
					 | 
					        blobB64 TEXT | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      ); | 
					 | 
					 | 
					      ); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					       | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      CREATE TABLE IF NOT EXISTS migrations ( | 
					 | 
					 | 
					      CREATE TABLE IF NOT EXISTS migrations ( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        name TEXT PRIMARY KEY, | 
					 | 
					 | 
					        name TEXT PRIMARY KEY, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        applied_at TEXT NOT NULL DEFAULT (datetime('now')) | 
					 | 
					 | 
					        applied_at TEXT NOT NULL DEFAULT (datetime('now')) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -177,15 +184,17 @@ export async function runMigrations<T>( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  try { | 
					 | 
					 | 
					  try { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    // Check if we have accounts but no active selection
 | 
					 | 
					 | 
					    // Check if we have accounts but no active selection
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    const accountsResult = await sqlQuery("SELECT COUNT(*) FROM accounts"); | 
					 | 
					 | 
					    const accountsResult = await sqlQuery("SELECT COUNT(*) FROM accounts"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    const accountsCount = accountsResult | 
					 | 
					 | 
					    const accountsCount = | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					      ? (accountsResult.values?.[0]?.[0] as number) | 
					 | 
					 | 
					      accountsResult && (accountsResult as DatabaseResult).values | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        ? ((accountsResult as DatabaseResult).values?.[0]?.[0] as number) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        : 0; | 
					 | 
					 | 
					        : 0; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    const activeResult = await sqlQuery( | 
					 | 
					 | 
					    const activeResult = await sqlQuery( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      "SELECT activeDid FROM active_identity WHERE id = 1", | 
					 | 
					 | 
					      "SELECT activeDid FROM active_identity WHERE id = 1", | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    ); | 
					 | 
					 | 
					    ); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    const activeDid = activeResult | 
					 | 
					 | 
					    const activeDid = | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					      ? (activeResult.values?.[0]?.[0] as string) | 
					 | 
					 | 
					      activeResult && (activeResult as DatabaseResult).values | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        ? ((activeResult as DatabaseResult).values?.[0]?.[0] as string) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        : null; | 
					 | 
					 | 
					        : null; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    if (accountsCount > 0 && (!activeDid || activeDid === "")) { | 
					 | 
					 | 
					    if (accountsCount > 0 && (!activeDid || activeDid === "")) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -193,8 +202,9 @@ export async function runMigrations<T>( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      const firstAccountResult = await sqlQuery( | 
					 | 
					 | 
					      const firstAccountResult = await sqlQuery( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        "SELECT did FROM accounts ORDER BY dateCreated, did LIMIT 1", | 
					 | 
					 | 
					        "SELECT did FROM accounts ORDER BY dateCreated, did LIMIT 1", | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      ); | 
					 | 
					 | 
					      ); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					      const firstAccountDid = firstAccountResult | 
					 | 
					 | 
					      const firstAccountDid = | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        ? (firstAccountResult.values?.[0]?.[0] as string) | 
					 | 
					 | 
					        firstAccountResult && (firstAccountResult as DatabaseResult).values | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					          ? ((firstAccountResult as DatabaseResult).values?.[0]?.[0] as string) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          : null; | 
					 | 
					 | 
					          : null; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      if (firstAccountDid) { | 
					 | 
					 | 
					      if (firstAccountDid) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |