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/controlMessage/group/v3/GroupInviteMessage.ts

49 lines
1.5 KiB
TypeScript

import { SignalService } from '../../../../../../protobuf';
import { isEmpty, isString } from 'lodash';
import { GroupMessage, GroupMessageParams } from './GroupMessage';
import { PubKey } from '../../../../../types';
import { from_hex } from 'libsodium-wrappers-sumo';
export interface GroupInviteMessageParams extends GroupMessageParams {
name: string;
/**
* hex string of that member private key
*/
memberPrivateKey: string;
}
export class GroupInviteMessage extends GroupMessage {
private readonly name: string;
private readonly memberPrivateKey: string;
constructor(params: GroupInviteMessageParams) {
super(params);
if (!params.name || isEmpty(params.name) || !isString(params.name)) {
throw new Error('name parameter must be valid');
}
if (
!params.memberPrivateKey ||
isEmpty(params.memberPrivateKey) ||
!isString(params.memberPrivateKey) ||
!PubKey.isHexOnly(params.memberPrivateKey)
) {
throw new Error('memberPrivateKey parameter must be valid');
}
this.name = params.name;
this.memberPrivateKey = params.memberPrivateKey;
}
public dataProto(): SignalService.DataMessage {
const dataMessage = new SignalService.DataMessage();
dataMessage.groupMessage = super.groupMessage();
dataMessage.groupMessage.inviteMessage = new SignalService.GroupInviteMessage();
dataMessage.groupMessage.inviteMessage.name = this.name;
dataMessage.groupMessage.inviteMessage.memberPrivateKey = from_hex(this.memberPrivateKey);
return dataMessage;
}
}