0.1
This commit is contained in:
50
frontend/main.ts
Normal file
50
frontend/main.ts
Normal 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);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user