Files
everyone-can-use-english/enjoy/src/renderer/app.tsx
an-lee 3a98bd9f40 Feat: use ffmpeg wasm (#177)
* add ffmepg wasm

* refactor whisper config

* refactor ffmpeg config

* remove depected codes

* refactor model download

* decouple whipser & ffmpeg when transcribe

* do not always toast not found error

* ffmpeg works in renderer

* transcode in renderer & transcript in main

* improve transcode

* refactor

* remove ffmpeg check

* fix whisper config check

* update whisper check

* enable SharedArrayBuffer

* remove ffmpeg setting

* fix UI

* handle ffmpeg not ready

* may create issue when whisper check failed

* upgrade deps

* hide ffmpeg setting if not ready

* hide record button when not in region
2024-01-23 14:39:16 +08:00

66 lines
1.7 KiB
TypeScript

import {
ThemeProvider,
AISettingsProvider,
AppSettingsProvider,
DbProvider,
} from "@renderer/context";
import router from "./router";
import { RouterProvider } from "react-router-dom";
import { Toaster, toast } from "@renderer/components/ui";
import { Tooltip } from "react-tooltip";
import { useHotkeys } from "react-hotkeys-hook";
function App() {
window.__ENJOY_APP__.onNotification((_event, notification) => {
switch (notification.type) {
case "success":
toast.success(notification.message);
break;
case "error":
toast.error(notification.message);
break;
case "info":
toast.info(notification.message);
break;
case "warning":
toast.warning(notification.message);
break;
default:
toast.message(notification.message);
break;
}
});
const ControlOrCommand = navigator.platform.includes("Mac")
? "Meta"
: "Control";
useHotkeys(`${ControlOrCommand}+Comma`, () => {
document.getElementById("preferences-button")?.click();
});
useHotkeys(`${ControlOrCommand}+Q`, () => {
window.__ENJOY_APP__.app.quit();
});
useHotkeys(`${ControlOrCommand}+Shift+I`, () => {
window.__ENJOY_APP__.app.openDevTools();
});
return (
<ThemeProvider defaultTheme="light" storageKey="vite-ui-theme">
<AppSettingsProvider>
<AISettingsProvider>
<DbProvider>
<RouterProvider router={router} />
<Toaster richColors position="top-center" />
<Tooltip id="global-tooltip" />
</DbProvider>
</AISettingsProvider>
</AppSettingsProvider>
</ThemeProvider>
);
}
export default App;