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.
session-desktop/ts/session/messages/incoming/IncomingMessage.ts

59 lines
2.0 KiB
TypeScript

import Long from 'long';
import { SignalService } from '../../../protobuf';
type IncomingMessageAvailableTypes =
| SignalService.DataMessage
| SignalService.CallMessage
| SignalService.ReceiptMessage
| SignalService.TypingMessage
| 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;
}
}