This commit is contained in:
2026-03-30 10:08:57 +02:00
commit 1272f2c44e
38 changed files with 708 additions and 0 deletions

50
frontend/main.ts Normal file
View File

@@ -0,0 +1,50 @@
import { invoke } from "@tauri-apps/api/core";
const startAudioBtn = document.querySelector<HTMLButtonElement>("#start-audio-btn");
const stopAudioBtn = document.querySelector<HTMLButtonElement>("#stop-audio-btn");
const audioStatus = document.querySelector<HTMLElement>("#audio-status");
if (startAudioBtn === null || stopAudioBtn === null || audioStatus === null) {
throw new Error("missing UI elements");
}
function setAudioStatus(message: string): void {
if (audioStatus) {
audioStatus.textContent = message;
}
}
function setAudioButtons(isRecording: boolean): void {
if (startAudioBtn) {
startAudioBtn.disabled = isRecording;
}
if (stopAudioBtn) {
stopAudioBtn.disabled = !isRecording;
}
}
startAudioBtn.addEventListener("click", async () => {
startAudioBtn.disabled = true;
try {
const path = await invoke<string>("start_audio_recording");
setAudioStatus(`Audio recording started.\nOutput: ${path}`);
setAudioButtons(true);
} catch (error) {
setAudioStatus(`Start audio failed.\n${String(error)}`);
setAudioButtons(false);
}
});
stopAudioBtn.addEventListener("click", async () => {
stopAudioBtn.disabled = true;
try {
const path = await invoke<string>("stop_audio_recording");
setAudioStatus(`Audio recording stopped.\nSaved file: ${path}`);
setAudioButtons(false);
} catch (error) {
setAudioStatus(`Stop audio failed.\n${String(error)}`);
setAudioButtons(true);
}
});