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.
		
		
		
		
		
			
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
| import { SyncMessage } from './SyncMessage';
 | |
| import { SignalService } from '../../../../../protobuf';
 | |
| import { MessageParams } from '../../Message';
 | |
| import { PubKey } from '../../../../types';
 | |
| import { ProtobufUtils } from '../../../../utils';
 | |
| 
 | |
| interface SentSyncMessageParams extends MessageParams {
 | |
|   dataMessage: SignalService.IDataMessage;
 | |
|   expirationStartTimestamp?: number;
 | |
|   sentTo?: Array<PubKey>;
 | |
|   unidentifiedDeliveries?: Array<PubKey>;
 | |
|   destination?: PubKey | string;
 | |
| }
 | |
| 
 | |
| export class SentSyncMessage extends SyncMessage {
 | |
|   public readonly dataMessage: SignalService.IDataMessage;
 | |
|   public readonly expirationStartTimestamp?: number;
 | |
|   public readonly sentTo?: Array<PubKey>;
 | |
|   public readonly unidentifiedDeliveries?: Array<PubKey>;
 | |
|   public readonly destination?: PubKey;
 | |
| 
 | |
|   constructor(params: SentSyncMessageParams) {
 | |
|     super({ timestamp: params.timestamp, identifier: params.identifier });
 | |
| 
 | |
|     this.dataMessage = ProtobufUtils.convertToTS(params.dataMessage);
 | |
|     this.expirationStartTimestamp = params.expirationStartTimestamp;
 | |
|     this.sentTo = params.sentTo;
 | |
|     this.unidentifiedDeliveries = params.unidentifiedDeliveries;
 | |
| 
 | |
|     const { destination } = params;
 | |
|     this.destination = destination ? PubKey.cast(destination) : undefined;
 | |
|   }
 | |
| 
 | |
|   protected syncProto(): SignalService.SyncMessage {
 | |
|     const syncMessage = super.syncProto();
 | |
|     syncMessage.sent = new SignalService.SyncMessage.Sent();
 | |
|     syncMessage.sent.timestamp = this.timestamp;
 | |
|     syncMessage.sent.message = this.dataMessage;
 | |
|     if (this.destination) {
 | |
|       syncMessage.sent.destination = this.destination.key;
 | |
|     }
 | |
|     if (this.expirationStartTimestamp) {
 | |
|       syncMessage.sent.expirationStartTimestamp = this.expirationStartTimestamp;
 | |
|     }
 | |
| 
 | |
|     if (this.unidentifiedDeliveries) {
 | |
|       const unidentifiedLookup = this.unidentifiedDeliveries.reduce(
 | |
|         (accumulator, item) => {
 | |
|           // eslint-disable-next-line no-param-reassign
 | |
|           accumulator[item.key] = true;
 | |
|           return accumulator;
 | |
|         },
 | |
|         Object.create(null)
 | |
|       );
 | |
| 
 | |
|       // Though this field has 'unidenified' in the name, it should have entries for each
 | |
|       //   number we sent to.
 | |
|       if (this.sentTo && this.sentTo.length) {
 | |
|         syncMessage.sent.unidentifiedStatus = this.sentTo.map(number => {
 | |
|           const status = new SignalService.SyncMessage.Sent.UnidentifiedDeliveryStatus();
 | |
|           status.destination = number.key;
 | |
|           status.unidentified = Boolean(unidentifiedLookup[number.key]);
 | |
|           return status;
 | |
|         });
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return syncMessage;
 | |
|   }
 | |
| }
 |