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.
		
		
		
		
		
			
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
| import { isEmpty } from 'lodash';
 | |
| import { UserUtils } from '..';
 | |
| import { SettingsKey } from '../../../data/settings-key';
 | |
| import { Storage } from '../../../util/storage';
 | |
| import { UserConfigWrapperActions } from '../../../webworker/workers/browser/libsession_worker_interface';
 | |
| import { getConversationController } from '../../conversations';
 | |
| import { fromHexToArray } from '../String';
 | |
| import { CONVERSATION_PRIORITIES } from '../../../models/types';
 | |
| 
 | |
| async function insertUserProfileIntoWrapper(convoId: string) {
 | |
|   if (!SessionUtilUserProfile.isUserProfileToStoreInWrapper(convoId)) {
 | |
|     return null;
 | |
|   }
 | |
|   const us = UserUtils.getOurPubKeyStrFromCache();
 | |
|   const ourConvo = getConversationController().get(us);
 | |
| 
 | |
|   if (!ourConvo) {
 | |
|     throw new Error('insertUserProfileIntoWrapper needs a ourConvo to exist');
 | |
|   }
 | |
| 
 | |
|   const dbName = ourConvo.get('displayNameInProfile') || '';
 | |
|   const dbProfileUrl = ourConvo.get('avatarPointer') || '';
 | |
|   const dbProfileKey = fromHexToArray(ourConvo.get('profileKey') || '');
 | |
|   const priority = ourConvo.get('priority') || CONVERSATION_PRIORITIES.default;
 | |
| 
 | |
|   const areBlindedMsgRequestEnabled = !!Storage.get(SettingsKey.hasBlindedMsgRequestsEnabled);
 | |
| 
 | |
|   const expirySeconds = ourConvo.getExpireTimer() || 0;
 | |
|   window.log.debug(
 | |
|     `inserting into userprofile wrapper: username:"${dbName}", priority:${priority} image:${JSON.stringify(
 | |
|       {
 | |
|         url: dbProfileUrl,
 | |
|         key: dbProfileKey,
 | |
|       }
 | |
|     )}, settings: ${JSON.stringify({
 | |
|       areBlindedMsgRequestEnabled,
 | |
|       expirySeconds,
 | |
|     })}`
 | |
|   );
 | |
| 
 | |
|   // we don't want to throw if somehow our display name in the DB is too long here, so we use the truncated version.
 | |
|   await UserConfigWrapperActions.setNameTruncated(dbName);
 | |
|   await UserConfigWrapperActions.setPriority(priority);
 | |
|   if (dbProfileUrl && !isEmpty(dbProfileKey)) {
 | |
|     await UserConfigWrapperActions.setProfilePic({ key: dbProfileKey, url: dbProfileUrl });
 | |
|   } else {
 | |
|     await UserConfigWrapperActions.setProfilePic({ key: null, url: null });
 | |
|   }
 | |
| 
 | |
|   await UserConfigWrapperActions.setEnableBlindedMsgRequest(areBlindedMsgRequestEnabled);
 | |
|   await UserConfigWrapperActions.setNoteToSelfExpiry(expirySeconds);
 | |
| 
 | |
|   // returned for testing purposes only
 | |
|   return {
 | |
|     id: convoId,
 | |
|     name: dbName,
 | |
|     priority,
 | |
|     avatarPointer: dbProfileUrl,
 | |
|     expirySeconds,
 | |
|   };
 | |
| }
 | |
| 
 | |
| function isUserProfileToStoreInWrapper(convoId: string) {
 | |
|   try {
 | |
|     const us = UserUtils.getOurPubKeyStrFromCache();
 | |
|     return convoId === us;
 | |
|   } catch (e) {
 | |
|     return false;
 | |
|   }
 | |
| }
 | |
| 
 | |
| export const SessionUtilUserProfile = {
 | |
|   insertUserProfileIntoWrapper,
 | |
|   isUserProfileToStoreInWrapper,
 | |
| };
 |