You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
| /* eslint-disable no-unused-expressions */
 | |
| import * as BetterSqlite3 from '@signalapp/better-sqlite3';
 | |
| import { isArray } from 'lodash';
 | |
| import { CONVERSATIONS_TABLE } from '../database_utility';
 | |
| import { getIdentityKeys, sqlNode } from '../sql';
 | |
| 
 | |
| export const hasDebugEnvVariable = Boolean(process.env.SESSION_DEBUG);
 | |
| 
 | |
| /**
 | |
|  * Verify we are calling the correct helper function in the correct migration before running it.
 | |
|  *
 | |
|  * You don't need to call this on functions that aren't being exported as helper functions in a file
 | |
|  * @param version
 | |
|  * @param targetVersion
 | |
|  */
 | |
| export function checkTargetMigration(version: number, targetVersion: number) {
 | |
|   if (version !== targetVersion) {
 | |
|     throw new Error(`Migration target mismatch. Expected: ${targetVersion}, Found: ${version}`);
 | |
|   }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Returns the logged in user conversation attributes and the keys.
 | |
|  * If the keys exists but a conversation for that pubkey does not exist yet, the keys are still returned
 | |
|  */
 | |
| export function getLoggedInUserConvoDuringMigration(db: BetterSqlite3.Database) {
 | |
|   const ourKeys = getIdentityKeys(db);
 | |
| 
 | |
|   if (!ourKeys || !ourKeys.publicKeyHex || !ourKeys.privateEd25519) {
 | |
|     return null;
 | |
|   }
 | |
| 
 | |
|   const ourConversation = db.prepare(`SELECT * FROM ${CONVERSATIONS_TABLE} WHERE id = $id;`).get({
 | |
|     id: ourKeys.publicKeyHex,
 | |
|   }) as Record<string, any> | null;
 | |
| 
 | |
|   return { ourKeys, ourConversation: ourConversation || null };
 | |
| }
 | |
| 
 | |
| export function getBlockedNumbersDuringMigration(db: BetterSqlite3.Database) {
 | |
|   try {
 | |
|     const blockedItem = sqlNode.getItemById('blocked', db);
 | |
|     if (!blockedItem) {
 | |
|       return [];
 | |
|     }
 | |
|     const foundBlocked = blockedItem?.value;
 | |
|     hasDebugEnvVariable && console.info('foundBlockedNumbers during migration', foundBlocked);
 | |
|     if (isArray(foundBlocked)) {
 | |
|       return foundBlocked;
 | |
|     }
 | |
|     return [];
 | |
|   } catch (e) {
 | |
|     console.info('failed to read blocked numbers. Considering no blocked numbers', e.stack);
 | |
|     return [];
 | |
|   }
 | |
| }
 |