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
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
| import Long from 'long';
 | |
| import { SignalService } from '../../../protobuf';
 | |
| 
 | |
| type IncomingMessageAvailableTypes =
 | |
|   | SignalService.DataMessage
 | |
|   | SignalService.CallMessage
 | |
|   | SignalService.ReceiptMessage
 | |
|   | SignalService.TypingMessage
 | |
|   | SignalService.ConfigurationMessage
 | |
|   | SignalService.DataExtractionNotification
 | |
|   | SignalService.Unsend
 | |
|   | SignalService.MessageRequestResponse
 | |
|   | SignalService.ISharedConfigMessage;
 | |
| 
 | |
| export class IncomingMessage<T extends IncomingMessageAvailableTypes> {
 | |
|   public readonly envelopeTimestamp: number;
 | |
|   public readonly authorOrGroupPubkey: any;
 | |
|   public readonly authorInGroup: string | null;
 | |
|   public readonly messageHash: string;
 | |
|   public readonly message: T;
 | |
| 
 | |
|   /**
 | |
|    *
 | |
|    * - `messageHash` is the hash as retrieved from the `/receive` request
 | |
|    * - `envelopeTimestamp` is part of the message envelope and the what our sent timestamp must be.
 | |
|    * - `authorOrGroupPubkey`:
 | |
|    *      * for a 1o1 message, the is the sender
 | |
|    *      * for a message in a group, this is the pubkey of the group (as everyone
 | |
|    *            in a group send message to the group pubkey)
 | |
|    * - `authorInGroup` is only set when this message is incoming from a closed group. This is the old `senderIdentity` and is the publicKey of the sender inside the message itself once decrypted. This is the real sender of a closed group message.
 | |
|    * - `message` is the data of the ContentMessage itself.
 | |
|    */
 | |
|   constructor({
 | |
|     envelopeTimestamp,
 | |
|     authorOrGroupPubkey,
 | |
|     authorInGroup,
 | |
|     message,
 | |
|     messageHash,
 | |
|   }: {
 | |
|     messageHash: string;
 | |
|     envelopeTimestamp: Long;
 | |
|     authorOrGroupPubkey: string;
 | |
|     authorInGroup: string | null;
 | |
|     message: T;
 | |
|   }) {
 | |
|     if (envelopeTimestamp > Long.fromNumber(Number.MAX_SAFE_INTEGER)) {
 | |
|       throw new Error('envelopeTimestamp as Long is > Number.MAX_SAFE_INTEGER');
 | |
|     }
 | |
| 
 | |
|     this.envelopeTimestamp = envelopeTimestamp.toNumber();
 | |
|     this.authorOrGroupPubkey = authorOrGroupPubkey;
 | |
|     this.authorInGroup = authorInGroup;
 | |
|     this.messageHash = messageHash;
 | |
|     this.message = message;
 | |
|   }
 | |
| }
 |