More types
This commit is contained in:
parent
a05501a909
commit
7bd95621f1
1 changed files with 28 additions and 12 deletions
|
@ -6,8 +6,10 @@ import { MemoryStore } from "matrix-js-sdk/src/store/memory";
|
||||||
import { IndexedDBCryptoStore } from "matrix-js-sdk/src/crypto/store/indexeddb-crypto-store";
|
import { IndexedDBCryptoStore } from "matrix-js-sdk/src/crypto/store/indexeddb-crypto-store";
|
||||||
import { createClient, MatrixClient } from "matrix-js-sdk/src/matrix";
|
import { createClient, MatrixClient } from "matrix-js-sdk/src/matrix";
|
||||||
import { ICreateClientOpts } from "matrix-js-sdk/src/matrix";
|
import { ICreateClientOpts } from "matrix-js-sdk/src/matrix";
|
||||||
|
import { ClientEvent } from "matrix-js-sdk/src/client";
|
||||||
import { Visibility, Preset, GroupCallIntent } from "matrix-js-sdk";
|
import { Visibility, Preset, GroupCallIntent } from "matrix-js-sdk";
|
||||||
import { GroupCallType } from "matrix-js-sdk";
|
import { GroupCallType } from "matrix-js-sdk";
|
||||||
|
import { ISyncStateData, SyncState } from "matrix-js-sdk/src/sync";
|
||||||
|
|
||||||
import IndexedDBWorker from "./IndexedDBWorker?worker";
|
import IndexedDBWorker from "./IndexedDBWorker?worker";
|
||||||
|
|
||||||
|
@ -17,22 +19,28 @@ export const defaultHomeserver =
|
||||||
|
|
||||||
export const defaultHomeserverHost = new URL(defaultHomeserver).host;
|
export const defaultHomeserverHost = new URL(defaultHomeserver).host;
|
||||||
|
|
||||||
function waitForSync(client) {
|
function waitForSync(client: MatrixClient) {
|
||||||
return new Promise<void>((resolve, reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
const onSync = (state, _old, data) => {
|
const onSync = (
|
||||||
|
state: SyncState,
|
||||||
|
_old: SyncState,
|
||||||
|
data: ISyncStateData
|
||||||
|
) => {
|
||||||
if (state === "PREPARED") {
|
if (state === "PREPARED") {
|
||||||
resolve();
|
resolve();
|
||||||
client.removeListener("sync", onSync);
|
client.removeListener(ClientEvent.Sync, onSync);
|
||||||
} else if (state === "ERROR") {
|
} else if (state === "ERROR") {
|
||||||
reject(data?.error);
|
reject(data?.error);
|
||||||
client.removeListener("sync", onSync);
|
client.removeListener(ClientEvent.Sync, onSync);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
client.on("sync", onSync);
|
client.on(ClientEvent.Sync, onSync);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function initClient(clientOptions: ICreateClientOpts) {
|
export async function initClient(
|
||||||
|
clientOptions: ICreateClientOpts
|
||||||
|
): Promise<MatrixClient> {
|
||||||
// TODO: https://gitlab.matrix.org/matrix-org/olm/-/issues/10
|
// TODO: https://gitlab.matrix.org/matrix-org/olm/-/issues/10
|
||||||
window.OLM_OPTIONS = {};
|
window.OLM_OPTIONS = {};
|
||||||
await Olm.init({ locateFile: () => olmWasmPath });
|
await Olm.init({ locateFile: () => olmWasmPath });
|
||||||
|
@ -97,7 +105,7 @@ export async function initClient(clientOptions: ICreateClientOpts) {
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function roomAliasFromRoomName(roomName) {
|
export function roomAliasFromRoomName(roomName: string): string {
|
||||||
return roomName
|
return roomName
|
||||||
.trim()
|
.trim()
|
||||||
.replace(/\s/g, "-")
|
.replace(/\s/g, "-")
|
||||||
|
@ -105,7 +113,7 @@ export function roomAliasFromRoomName(roomName) {
|
||||||
.toLowerCase();
|
.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function roomNameFromRoomId(roomId) {
|
export function roomNameFromRoomId(roomId: string): string {
|
||||||
return roomId
|
return roomId
|
||||||
.match(/([^:]+):.*$/)[1]
|
.match(/([^:]+):.*$/)[1]
|
||||||
.substring(1)
|
.substring(1)
|
||||||
|
@ -117,7 +125,7 @@ export function roomNameFromRoomId(roomId) {
|
||||||
.toLowerCase();
|
.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isLocalRoomId(roomId) {
|
export function isLocalRoomId(roomId: string): boolean {
|
||||||
if (!roomId) {
|
if (!roomId) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -131,7 +139,11 @@ export function isLocalRoomId(roomId) {
|
||||||
return parts[1] === defaultHomeserverHost;
|
return parts[1] === defaultHomeserverHost;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function createRoom(client: MatrixClient, name, isPtt = false) {
|
export async function createRoom(
|
||||||
|
client: MatrixClient,
|
||||||
|
name: string,
|
||||||
|
isPtt = false
|
||||||
|
): Promise<string> {
|
||||||
const createRoomResult = await client.createRoom({
|
const createRoomResult = await client.createRoom({
|
||||||
visibility: Visibility.Private,
|
visibility: Visibility.Private,
|
||||||
preset: Preset.PublicChat,
|
preset: Preset.PublicChat,
|
||||||
|
@ -174,7 +186,7 @@ export async function createRoom(client: MatrixClient, name, isPtt = false) {
|
||||||
return createRoomResult.room_id;
|
return createRoomResult.room_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getRoomUrl(roomId) {
|
export function getRoomUrl(roomId: string): string {
|
||||||
if (roomId.startsWith("#")) {
|
if (roomId.startsWith("#")) {
|
||||||
const [localPart, host] = roomId.replace("#", "").split(":");
|
const [localPart, host] = roomId.replace("#", "").split(":");
|
||||||
|
|
||||||
|
@ -188,7 +200,11 @@ export function getRoomUrl(roomId) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getAvatarUrl(client, mxcUrl, avatarSize = 96) {
|
export function getAvatarUrl(
|
||||||
|
client: MatrixClient,
|
||||||
|
mxcUrl: string,
|
||||||
|
avatarSize = 96
|
||||||
|
): string {
|
||||||
const width = Math.floor(avatarSize * window.devicePixelRatio);
|
const width = Math.floor(avatarSize * window.devicePixelRatio);
|
||||||
const height = Math.floor(avatarSize * window.devicePixelRatio);
|
const height = Math.floor(avatarSize * window.devicePixelRatio);
|
||||||
return mxcUrl && client.mxcUrlToHttp(mxcUrl, width, height, "crop");
|
return mxcUrl && client.mxcUrlToHttp(mxcUrl, width, height, "crop");
|
||||||
|
|
Loading…
Reference in a new issue