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.
		
		
		
		
		
			
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
import { RawMessage } from '../types/RawMessage';
 | 
						|
import {
 | 
						|
  ContentMessage,
 | 
						|
  MediumGroupChatMessage,
 | 
						|
  SessionRequestMessage,
 | 
						|
} from '../messages/outgoing';
 | 
						|
import { EncryptionType, PubKey } from '../types';
 | 
						|
import { SessionProtocol } from '../protocols';
 | 
						|
 | 
						|
export async function toRawMessage(
 | 
						|
  device: PubKey,
 | 
						|
  message: ContentMessage
 | 
						|
): Promise<RawMessage> {
 | 
						|
  const timestamp = message.timestamp;
 | 
						|
  const ttl = message.ttl();
 | 
						|
  const plainTextBuffer = message.plainTextBuffer();
 | 
						|
 | 
						|
  let encryption: EncryptionType;
 | 
						|
  if (message instanceof MediumGroupChatMessage) {
 | 
						|
    encryption = EncryptionType.MediumGroup;
 | 
						|
  } else if (message instanceof SessionRequestMessage) {
 | 
						|
    encryption = EncryptionType.Fallback;
 | 
						|
  } else {
 | 
						|
    // If we don't have a session yet then send using fallback encryption until we have a session
 | 
						|
    const hasSession = await SessionProtocol.hasSession(device);
 | 
						|
    encryption = hasSession ? EncryptionType.Signal : EncryptionType.Fallback;
 | 
						|
  }
 | 
						|
 | 
						|
  // tslint:disable-next-line: no-unnecessary-local-variable
 | 
						|
  const rawMessage: RawMessage = {
 | 
						|
    identifier: message.identifier,
 | 
						|
    plainTextBuffer,
 | 
						|
    timestamp,
 | 
						|
    device: device.key,
 | 
						|
    ttl,
 | 
						|
    encryption,
 | 
						|
  };
 | 
						|
 | 
						|
  return rawMessage;
 | 
						|
}
 |