(feat): migrate experimental tauri cef to electron
Some checks failed
/ build-web (push) Successful in 1m19s
/ build-desktop (linux) (push) Failing after 2m33s
/ release (push) Has been cancelled
/ build-mobile (push) Has been cancelled

(feat): add flake to expose tensamin desktop package
(qol): update todo
This commit is contained in:
Alois 2026-05-25 13:16:56 +02:00
commit a209ade10b
32 changed files with 1649 additions and 459 deletions

View file

@ -1,96 +0,0 @@
import { createContext, useContext, useMemo, type ReactNode } from "react";
import { invoke, isTauri } from "@tauri-apps/api/core";
export type DesktopScreenShareSource = {
id: string;
kind: "screen" | "window";
name: string;
subtitle?: string | null;
};
export type DesktopScreenShareAudioOutput = {
id: string;
name: string;
isDefault: boolean;
};
export type DesktopScreenShareCapabilities = {
platform: "linux" | "macos" | "windows" | "other";
showAudioOutputSelector: boolean;
showAudioSwitch: boolean;
hasReliableSystemAudio: boolean;
};
type DesktopMediaContextValue = {
getScreenShareCapabilities: () => Promise<DesktopScreenShareCapabilities>;
listScreenShareSources: () => Promise<DesktopScreenShareSource[]>;
listScreenShareAudioOutputs: () => Promise<DesktopScreenShareAudioOutput[]>;
};
const defaultCapabilities: DesktopScreenShareCapabilities = {
platform: "other",
showAudioOutputSelector: false,
showAudioSwitch: false,
hasReliableSystemAudio: false,
};
const desktopMediaContext = createContext<DesktopMediaContextValue | undefined>(
undefined,
);
async function listScreenShareSources(): Promise<DesktopScreenShareSource[]> {
if (!isTauri()) {
return [];
}
return invoke<DesktopScreenShareSource[]>("list_screen_share_sources");
}
async function listScreenShareAudioOutputs(): Promise<
DesktopScreenShareAudioOutput[]
> {
if (!isTauri()) {
return [];
}
return invoke<DesktopScreenShareAudioOutput[]>(
"list_screen_share_audio_outputs",
);
}
async function getScreenShareCapabilities(): Promise<DesktopScreenShareCapabilities> {
if (!isTauri()) {
return defaultCapabilities;
}
return invoke<DesktopScreenShareCapabilities>(
"get_screen_share_capabilities",
);
}
export function useDesktopMedia() {
const value = useContext(desktopMediaContext);
if (!value) {
throw new Error("useDesktopMedia must be used within the desktop provider");
}
return value;
}
export default function Provider({ children }: { children: ReactNode }) {
const value = useMemo<DesktopMediaContextValue>(
() => ({
getScreenShareCapabilities,
listScreenShareSources,
listScreenShareAudioOutputs,
}),
[],
);
return (
<desktopMediaContext.Provider value={value}>
{children}
</desktopMediaContext.Provider>
);
}