diff --git a/src/lib/apis/sonarr/sonarr-api.ts b/src/lib/apis/sonarr/sonarr-api.ts index 6d4fd18..fa19cf7 100644 --- a/src/lib/apis/sonarr/sonarr-api.ts +++ b/src/lib/apis/sonarr/sonarr-api.ts @@ -150,7 +150,7 @@ export class SonarrApi implements Api { .then((r) => r.data); }; - cancelDownloadSonarrEpisode = async (downloadId: number) => { + cancelDownload = async (downloadId: number) => { const deleteResponse = await this.getClient() ?.DELETE('/api/v3/queue/{id}', { params: { @@ -168,6 +168,15 @@ export class SonarrApi implements Api { return !!deleteResponse?.response.ok; }; + cancelDownloads = async (downloadIds: number[]) => + this.getClient() + ?.DELETE('/api/v3/queue/bulk', { + body: { + ids: downloadIds + } + }) + .then((r) => r.response.ok) || Promise.resolve(false); + downloadSonarrRelease = (guid: string, indexerId: number) => this.getClient() ?.POST('/api/v3/release', { diff --git a/src/lib/components/DebugElements.svelte b/src/lib/components/DebugElements.svelte index e82c262..01f29e9 100644 --- a/src/lib/components/DebugElements.svelte +++ b/src/lib/components/DebugElements.svelte @@ -27,12 +27,12 @@ const handleKeydown = (event: KeyboardEvent) => { if (event.repeat) return; - if (event.key === 'Shift') showOverlay = !showOverlay; + if (event.key === 'Shift') showOverlay = true; }; const handleKeyup = (event: KeyboardEvent) => { if (event.repeat) return; - if (event.key === 'Shift') showOverlay = !showOverlay; + if (event.key === 'Shift') showOverlay = false; }; onMount(() => { diff --git a/src/lib/components/MediaManager/FileList.svelte b/src/lib/components/MediaManager/FileList.svelte deleted file mode 100644 index 526b546..0000000 --- a/src/lib/components/MediaManager/FileList.svelte +++ /dev/null @@ -1,88 +0,0 @@ - - -{#await files} - {#each new Array(5) as _, index} -
- -
- {/each} -{:then files} -
- - Title - Runtime - Size - Quality - - - {#each files as file} - - {/each} -
- {#if files?.length} - - - - {:else} -
-

No local files found

-
Your local files will appear here.
-
- {/if} -{/await} diff --git a/src/lib/components/MediaManager/modals/ReleaseListModal.svelte b/src/lib/components/MediaManager/modals/ReleaseListModal.svelte index 81ba294..3fe04f3 100644 --- a/src/lib/components/MediaManager/modals/ReleaseListModal.svelte +++ b/src/lib/components/MediaManager/modals/ReleaseListModal.svelte @@ -1,6 +1,6 @@ + + +
+ +
+ +
+

{subtitle}

+

{title}

+
+
+ + + +
+
+ diff --git a/src/lib/components/MediaManagerModal/EpisodeMediaManagerModal.svelte b/src/lib/components/MediaManagerModal/EpisodeMediaManagerModal.svelte index 306bbb7..7c20f27 100644 --- a/src/lib/components/MediaManagerModal/EpisodeMediaManagerModal.svelte +++ b/src/lib/components/MediaManagerModal/EpisodeMediaManagerModal.svelte @@ -2,10 +2,10 @@ import { sonarrApi } from '../../apis/sonarr/sonarr-api'; import MMMainLayout from './MMMainLayout.svelte'; import MMAddToSonarr from './MMAddToSonarr.svelte'; - import MMModal from '../MediaManager/MMModal.svelte'; - import ReleaseList from '../MediaManager/ReleaseList.svelte'; + import MMModal from './MMModal.svelte'; + import ReleaseList from './Releases/MMReleasesTab.svelte'; import DownloadList from '../MediaManager/DownloadList.svelte'; - import FileList from '../MediaManager/FileList.svelte'; + import FileList from './LocalFiles/MMLocalFilesTab.svelte'; import { log } from '../../utils'; export let id: number; // Tmdb ID @@ -32,7 +32,7 @@ const getReleases = () => sonarrEpisode.then((se) => sonarrApi.getEpisodeReleases(se?.id || -1)); const selectRelease = () => {}; - const cancelDownload = sonarrApi.cancelDownloadSonarrEpisode; + const cancelDownload = sonarrApi.cancelDownload; const handleSelectFile = () => {}; diff --git a/src/lib/components/MediaManagerModal/MMLocalFileRow.svelte b/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFileRow.svelte similarity index 56% rename from src/lib/components/MediaManagerModal/MMLocalFileRow.svelte rename to src/lib/components/MediaManagerModal/LocalFiles/MMLocalFileRow.svelte index dd367c7..6915eac 100644 --- a/src/lib/components/MediaManagerModal/MMLocalFileRow.svelte +++ b/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFileRow.svelte @@ -1,18 +1,17 @@ diff --git a/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFilesTab.svelte b/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFilesTab.svelte new file mode 100644 index 0000000..8317882 --- /dev/null +++ b/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFilesTab.svelte @@ -0,0 +1,128 @@ + + +{#await downloads then downloads} + {#if downloads?.length} +

Downloads

+ +
+ {#each downloads as download} + + {/each} +
+ + + + + +

Local Files

+ {/if} +{/await} + +{#await files} + {#each new Array(5) as _, index} +
+ +
+ {/each} +{:then files} +
+ + Title + Runtime + Size + Quality + + + {#each files as file} + + {/each} +
+ {#if files?.length} + + + + {:else} +
+

No local files found

+
Your local files will appear here.
+
+ {/if} +{/await} diff --git a/src/lib/components/MediaManagerModal/MMAddToLayout.svelte b/src/lib/components/MediaManagerModal/MMAddToLayout.svelte deleted file mode 100644 index e69de29..0000000 diff --git a/src/lib/components/MediaManagerModal/MMMainLayout.svelte b/src/lib/components/MediaManagerModal/MMMainLayout.svelte index bd41d6c..9ac6771 100644 --- a/src/lib/components/MediaManagerModal/MMMainLayout.svelte +++ b/src/lib/components/MediaManagerModal/MMMainLayout.svelte @@ -6,7 +6,7 @@
-
+
@@ -20,30 +20,30 @@
-
-

+

-

+

+
(activeTab = 'releases')} class={classNames( - 'row-start-1 col-start-1 pb-16 mx-16', + 'row-start-1 col-start-1 pb-16 mx-20', 'transition-all overflow-y-auto overflow-x-hidden scrollbar-hide', { 'opacity-30 -translate-x-full': activeTab !== 'releases' @@ -55,7 +55,7 @@ (activeTab = 'local-files')} class={classNames( - 'row-start-1 col-start-1 pb-16 mx-16', + 'row-start-1 col-start-1 pb-16 mx-20', 'transition-all overflow-y-auto overflow-x-hidden scrollbar-hide', { 'opacity-30 translate-x-full': activeTab !== 'local-files' diff --git a/src/lib/components/MediaManager/MMModal.svelte b/src/lib/components/MediaManagerModal/MMModal.svelte similarity index 94% rename from src/lib/components/MediaManager/MMModal.svelte rename to src/lib/components/MediaManagerModal/MMModal.svelte index ef66122..3c16776 100644 --- a/src/lib/components/MediaManager/MMModal.svelte +++ b/src/lib/components/MediaManagerModal/MMModal.svelte @@ -17,7 +17,7 @@ focusOnMount trapFocus class={classNames( - 'fixed inset-0 overflow-x-hidden overflow-y-auto', + 'fixed inset-0 overflow-hidden', { 'opacity-0': hidden }, diff --git a/src/lib/components/MediaManagerModal/MediaManagerModal.ts b/src/lib/components/MediaManagerModal/MediaManagerModal.ts index 38d8275..5520a84 100644 --- a/src/lib/components/MediaManagerModal/MediaManagerModal.ts +++ b/src/lib/components/MediaManagerModal/MediaManagerModal.ts @@ -1,4 +1,7 @@ import type { Release } from '../../apis/combined-types'; -export type GrabRelease = (release: Release) => Promise; -export type DeleteFile = (id: number) => Promise; +export type GrabReleaseFn = (release: Release) => Promise; +export type DeleteFileFn = (id: number) => Promise; +export type DeleteFilesFn = (ids: number[]) => Promise; +export type CancelDownloadFn = (downloadId: number) => Promise; +export type CancelDownloadsFn = (downloadIds: number[]) => Promise; diff --git a/src/lib/components/MediaManagerModal/MovieMediaManagerModal.svelte b/src/lib/components/MediaManagerModal/MovieMediaManagerModal.svelte index 89c0e56..3d46d34 100644 --- a/src/lib/components/MediaManagerModal/MovieMediaManagerModal.svelte +++ b/src/lib/components/MediaManagerModal/MovieMediaManagerModal.svelte @@ -1,10 +1,10 @@ @@ -37,9 +84,17 @@

{series?.title}

Season {season} Packs

- - - + + +
{/if} {/await}