zwischenstand
This commit is contained in:
@@ -15,17 +15,22 @@
|
||||
WarningCircleIcon,
|
||||
} from "phosphor-svelte";
|
||||
import {
|
||||
isFetchingRemote,
|
||||
isTransferingRemote,
|
||||
transferStats,
|
||||
transferDetails,
|
||||
buzzerAudioFiles,
|
||||
localAudioFiles,
|
||||
syncStateMap,
|
||||
fsInfo,
|
||||
} from "../lib/store";
|
||||
|
||||
import { SETTINGS } from "../lib/settings";
|
||||
import { tagEditorState } from "../lib/store";
|
||||
import { tooltip } from "../lib/actions/tooltip";
|
||||
import { deleteRemoteFile } from "../lib/transport";
|
||||
import { deleteLocalFile } from "../lib/db";
|
||||
import { refreshRemote, refreshLocal } from "../lib/sync";
|
||||
import { addToast } from "../lib/toast";
|
||||
|
||||
export let file: BuzzerFile;
|
||||
export let type: "local" | "buzzer" = "buzzer";
|
||||
@@ -37,7 +42,7 @@
|
||||
$: myIndex = selectedFiles.findIndex((f) => f.name === file.name);
|
||||
|
||||
$: state = (() => {
|
||||
if (!file.selected || !$isFetchingRemote) return "default";
|
||||
if (!file.selected || !$isTransferingRemote) return "default";
|
||||
if (file.name === $transferStats.currentFileName) return "active";
|
||||
if (myIndex < currentIndex) return "done";
|
||||
if (myIndex > currentIndex) return "pending";
|
||||
@@ -93,7 +98,7 @@
|
||||
})();
|
||||
|
||||
function toggleSelection() {
|
||||
if ($isFetchingRemote) return;
|
||||
if ($isTransferingRemote) return;
|
||||
|
||||
if (type === "buzzer") {
|
||||
buzzerAudioFiles.update((files) =>
|
||||
@@ -110,6 +115,35 @@
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
async function handleDeleteClick() {
|
||||
if (!confirm(`Möchten Sie die Datei "${file.name}" wirklich löschen?`)) {
|
||||
menuOpen = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (type === "buzzer") {
|
||||
try {
|
||||
const basePath = $fsInfo?.audioPath || "/lfs/a";
|
||||
const fullPath = `${basePath}/${file.name}`;
|
||||
await deleteRemoteFile(fullPath);
|
||||
addToast(`Datei ${file.name} erfolgreich vom Buzzer gelöscht.`, "success");
|
||||
await refreshRemote();
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Löschen:", error);
|
||||
addToast("Fehler beim Löschen der Datei auf dem Buzzer.", "error");
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
await deleteLocalFile(file.name);
|
||||
addToast(`Lokale Datei ${file.name} gelöscht.`, "success");
|
||||
await refreshLocal();
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Löschen:", error);
|
||||
}
|
||||
}
|
||||
menuOpen = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<svelte:window on:click={() => (menuOpen = false)} />
|
||||
@@ -128,14 +162,14 @@
|
||||
class="relative z-10 w-full text-left flex-1 px-3 py-1 pr-16 flex items-center border-l-4 transition-colors border-b border-b-border-card
|
||||
{file.selected ? 'border-l-blue-600' : 'border-l-transparent'}
|
||||
{file.selected && state !== 'active' ? 'bg-blue-50' : ''}
|
||||
{!$isFetchingRemote && file.selected ? 'hover:bg-blue-100 cursor-pointer' : ''}
|
||||
{!$isFetchingRemote && !file.selected
|
||||
{!$isTransferingRemote && file.selected ? 'hover:bg-blue-100 cursor-pointer' : ''}
|
||||
{!$isTransferingRemote && !file.selected
|
||||
? 'hover:bg-slate-100 hover:border-l-blue-200 cursor-pointer'
|
||||
: ''}
|
||||
{$isFetchingRemote ? 'cursor-default' : ''}
|
||||
{$isTransferingRemote ? 'cursor-default' : ''}
|
||||
{state === 'pending' ? 'grayscale opacity-80' : ''}"
|
||||
on:click={toggleSelection}
|
||||
disabled={$isFetchingRemote}
|
||||
disabled={$isTransferingRemote}
|
||||
>
|
||||
<MusicNotesIcon weight="fill" class="mr-3 w-5 h-5 shrink-0" />
|
||||
|
||||
@@ -198,10 +232,7 @@
|
||||
<button
|
||||
class="menu-btn danger"
|
||||
title="Löschen"
|
||||
on:click|stopPropagation={() => {
|
||||
console.log("Delete", file.name);
|
||||
menuOpen = false;
|
||||
}}
|
||||
on:click|stopPropagation={handleDeleteClick}
|
||||
>
|
||||
<TrashIcon class="list-menu-icon" />
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user