Something went wrong. Try again.
Embeddable matrix client for JS applications
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import { registerOidcClient, OidcClientConfig, OidcRegistrationClientMetadata, createClient, MatrixClient,} from "matrix-js-sdk";import { SessionConfigStore, SessionConfig } from "./storage/SessionStore.js";
const CLIENT_PREFIX = "wildcard";
export class SessionManager { store: SessionConfigStore; constructor(store: SessionConfigStore) { this.store = store; } async createSession(config: SessionConfig): Promise<MatrixClient> { const client = createClient({ baseUrl: config.baseUrl, accessToken: config.accessToken, deviceId: config.deviceId, ...(config.refreshToken && { refreshToken: config.refreshToken }), }); void (await this.store.storeNewSessionConfig(config)); return client; }}
/** * Registers a client with the homeserver for authentication. * @param oidcClientConfig - The OIDC client configuration provided by MatrixClient.getAuthMetadata(). * @param clientMetadata - The OIDC registration client metadata, should be configured by your app. * @returns A promise that resolves to the client ID you should use when logging in clients. */export async function registerClientWithHomeserver( oidcClientConfig: OidcClientConfig, clientMetadata: OidcRegistrationClientMetadata,): Promise<string> { const clientId = await registerOidcClient(oidcClientConfig, clientMetadata); return clientId;}
export function generateDeviceId(): string { function generateRandomChars(length: number): string { const allowedCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; let result = ""; for (let i = 0; i < length; i++) { result += allowedCharacters.charAt(Math.floor(Math.random() * allowedCharacters.length)); } return result; } return CLIENT_PREFIX + generateRandomChars(10);}