33 lines
900 B
TypeScript
33 lines
900 B
TypeScript
import {
|
|
invoke as nativeInvoke,
|
|
isTauri,
|
|
convertFileSrc,
|
|
} from "@tauri-apps/api/core";
|
|
import { CaptureBridge } from "./capture-bridge";
|
|
import { nativePreviewToken } from "./media-access";
|
|
|
|
const capture = new CaptureBridge();
|
|
export const isNativeDesktop = () => isTauri();
|
|
export const isCaptureSurface = () => capture.active;
|
|
export const isDesktopSurface = () => isTauri() || capture.active;
|
|
|
|
export async function initializeDesktopSurface() {
|
|
if (isTauri()) return;
|
|
await capture.initialize(window.location.href);
|
|
}
|
|
|
|
export function invoke<T>(
|
|
command: string,
|
|
args?: Record<string, unknown>,
|
|
): Promise<T> {
|
|
return isTauri()
|
|
? nativeInvoke<T>(command, args)
|
|
: capture.invoke<T>(command, args);
|
|
}
|
|
|
|
export function prepareMediaURL(path: string) {
|
|
if (isTauri())
|
|
return convertFileSrc(nativePreviewToken(path), "searchi-media");
|
|
return capture.mediaURL(path);
|
|
}
|