feat(ui): load recording from waaudio://; remove download affordance

This commit is contained in:
iamdoubz committed 2026-07-06 18:40:16 -05:00
1 parent 90ba14cc2d
commit 2603e12b36
1 file changed
+11 -4
+11 -4
View File
@@ -1,7 +1,6 @@
<script lang="ts"> <script lang="ts">
// Right pane: LLM summary, action items, participants (Phase 5/6, FR-LLM-*/FR-CAL-*). // Right pane: LLM summary, action items, participants (Phase 5/6, FR-LLM-*/FR-CAL-*).
import { onMount } from "svelte"; import { onMount } from "svelte";
import { convertFileSrc } from "@tauri-apps/api/core";
import { meetings } from "../stores/meetings.svelte"; import { meetings } from "../stores/meetings.svelte";
import { calendar } from "../stores/calendar.svelte"; import { calendar } from "../stores/calendar.svelte";
import { settings } from "../stores/settings.svelte"; import { settings } from "../stores/settings.svelte";
@@ -38,8 +37,8 @@
const id = m.id; const id = m.id;
api api
.recordingPlaybackPath(id) .recordingPlaybackPath(id)
.then((p) => { .then((url) => {
if (meetings.selected?.id === id) audioSrc = convertFileSrc(p); if (meetings.selected?.id === id) audioSrc = url;
}) })
.catch((e) => { .catch((e) => {
if (meetings.selected?.id === id) audioError = errorMessage(e); if (meetings.selected?.id === id) audioError = errorMessage(e);
@@ -258,7 +257,15 @@
<h3><Mic2 size={14} aria-hidden="true" /> Recording</h3> <h3><Mic2 size={14} aria-hidden="true" /> Recording</h3>
{#if audioSrc} {#if audioSrc}
<!-- svelte-ignore a11y_media_has_caption -- a meeting recording has no caption track --> <!-- svelte-ignore a11y_media_has_caption -- a meeting recording has no caption track -->
<audio class="player" controls src={audioSrc}></audio> <!-- controlsList/contextmenu: no download affordance — the decrypted audio
must not be savable to disk (would undermine encryption at rest). -->
<audio
class="player"
controls
controlsList="nodownload noplaybackrate"
oncontextmenu={(e) => e.preventDefault()}
src={audioSrc}
></audio>
{:else if audioError} {:else if audioError}
<p class="muted">{audioError}</p> <p class="muted">{audioError}</p>
{:else} {:else}