Files
libsignal/node/ts/zkgroup/calllinks/CreateCallLinkCredentialRequestContext.ts
Jordan Rose 85686caa01 node: Combine Native.js and .d.ts into Native.ts
This allows the file to be checked by tsc, which would have caught
some of the missing type aliases sooner (now added to Native.ts.in).
Strictly speaking the behavior is slightly different: we have returned
to exporting many items individually instead of collecting them on a
single object.

Co-authored-by: Alex Bakon <akonradi@signal.org>
2025-10-15 17:50:37 -07:00

66 lines
1.9 KiB
TypeScript

//
// Copyright 2023 Signal Messenger, LLC.
// SPDX-License-Identifier: AGPL-3.0-only
//
import { randomBytes } from 'node:crypto';
import ByteArray from '../internal/ByteArray.js';
import { RANDOM_LENGTH } from '../internal/Constants.js';
import * as Native from '../../Native.js';
import CreateCallLinkCredentialRequest from './CreateCallLinkCredentialRequest.js';
import CreateCallLinkCredentialResponse from './CreateCallLinkCredentialResponse.js';
import CreateCallLinkCredential from './CreateCallLinkCredential.js';
import GenericServerPublicParams from '../GenericServerPublicParams.js';
import { Aci } from '../../Address.js';
export default class CreateCallLinkCredentialRequestContext extends ByteArray {
private readonly __type?: never;
constructor(contents: Uint8Array) {
super(
contents,
Native.CreateCallLinkCredentialRequestContext_CheckValidContents
);
}
static forRoomId(roomId: Uint8Array): CreateCallLinkCredentialRequestContext {
const random = randomBytes(RANDOM_LENGTH);
return this.forRoomIdWithRandom(roomId, random);
}
static forRoomIdWithRandom(
roomId: Uint8Array,
random: Uint8Array
): CreateCallLinkCredentialRequestContext {
return new CreateCallLinkCredentialRequestContext(
Native.CreateCallLinkCredentialRequestContext_NewDeterministic(
roomId,
random
)
);
}
getRequest(): CreateCallLinkCredentialRequest {
return new CreateCallLinkCredentialRequest(
Native.CreateCallLinkCredentialRequestContext_GetRequest(this.contents)
);
}
receive(
response: CreateCallLinkCredentialResponse,
userId: Aci,
params: GenericServerPublicParams
): CreateCallLinkCredential {
return new CreateCallLinkCredential(
Native.CreateCallLinkCredentialRequestContext_ReceiveResponse(
this.contents,
response.contents,
userId.getServiceIdFixedWidthBinary(),
params.contents
)
);
}
}