(feat): improve mobile
(feat): add camera sharing (fix): vite tauri connection (fix): methanium/ui theme not applied to call popout
This commit is contained in:
parent
b5ce3c554d
commit
62aaa7c01d
31 changed files with 1915 additions and 859 deletions
54
packages/call/src/mediaShare/electron.ts
Normal file
54
packages/call/src/mediaShare/electron.ts
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import type {} from "@tensamin/shared/desktopMedia";
|
||||
import { BrowserMediaShareAdapter, listCameraSources } from "./browser";
|
||||
import type {
|
||||
MediaShareCapabilities,
|
||||
MediaShareKind,
|
||||
MediaShareRequest,
|
||||
MediaShareSession,
|
||||
MediaShareSource,
|
||||
} from "./types";
|
||||
|
||||
export class ElectronMediaShareAdapter extends BrowserMediaShareAdapter {
|
||||
override async getCapabilities(): Promise<MediaShareCapabilities> {
|
||||
const capabilities =
|
||||
await window.tensaminDesktop?.media?.getScreenShareCapabilities?.();
|
||||
|
||||
return {
|
||||
runtime: "electron",
|
||||
screenPicker: "sources",
|
||||
canShareScreenAudio: capabilities?.hasReliableSystemAudio ?? false,
|
||||
canSelectScreenAudioOutput:
|
||||
capabilities?.showAudioOutputSelector ?? false,
|
||||
};
|
||||
}
|
||||
|
||||
override async listSources(
|
||||
kind: MediaShareKind,
|
||||
): Promise<MediaShareSource[]> {
|
||||
if (kind === "camera") {
|
||||
return listCameraSources();
|
||||
}
|
||||
|
||||
return (
|
||||
(await window.tensaminDesktop?.media?.listScreenShareSources?.()) ?? []
|
||||
);
|
||||
}
|
||||
|
||||
override async start(request: MediaShareRequest): Promise<MediaShareSession> {
|
||||
if (request.kind === "camera") {
|
||||
return super.start(request);
|
||||
}
|
||||
|
||||
if (!request.sourceId) {
|
||||
throw new Error("Choose a screen or window to share.");
|
||||
}
|
||||
|
||||
const select = window.tensaminDesktop?.media?.selectScreenShareSource;
|
||||
if (!select) {
|
||||
throw new Error("Electron screen capture is unavailable.");
|
||||
}
|
||||
|
||||
await select(request.sourceId);
|
||||
return super.start({ ...request, sourceId: undefined });
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue