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/outgoing/content/data/ExpirationTimerUpdateMessag...

50 lines
1.5 KiB
TypeScript

import { ContentMessage } from '../ContentMessage';
import { SignalService } from '../../../../../protobuf';
import { MessageParams } from '../../Message';
import { StringUtils } from '../../../../utils';
import { DataMessage } from './DataMessage';
interface ExpirationTimerUpdateMessageParams extends MessageParams {
groupId?: string;
expireTimer: number | null;
profileKey?: Uint8Array;
}
export class ExpirationTimerUpdateMessage extends DataMessage {
private readonly groupId?: string;
private readonly expireTimer: number | null;
private readonly profileKey?: Uint8Array;
constructor(params: ExpirationTimerUpdateMessageParams) {
super({ timestamp: params.timestamp, identifier: params.identifier });
this.groupId = params.groupId;
this.expireTimer = params.expireTimer;
this.profileKey = params.profileKey;
}
public ttl(): number {
return this.getDefaultTTL();
}
protected dataProto(): SignalService.DataMessage {
const data = new SignalService.DataMessage();
const groupMessage = new SignalService.GroupContext();
if (this.groupId) {
groupMessage.id = new Uint8Array(
StringUtils.encode(this.groupId, 'utf8')
);
groupMessage.type = SignalService.GroupContext.Type.DELIVER;
}
data.flags = SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE;
if (this.expireTimer) {
data.expireTimer = this.expireTimer;
}
if (this.profileKey) {
data.profileKey = this.profileKey;
}
return data;
}
}