From 0e08aa2d6f907e96ac455c4a2128db94fb5e11b6 Mon Sep 17 00:00:00 2001 From: Aleksi Lassila Date: Mon, 9 Feb 2026 00:37:22 +0200 Subject: [PATCH] refactor: remove unused components from the project, cleanup Squashed commits: compstack purge part 1, next up modal rework purge 2, continuing with modals --- .../ComponentStack/ComponentStack.svelte | 22 - .../ComponentStackContainer.svelte | 53 --- .../ComponentStackContextProvider.svelte | 50 --- .../lib/components/DynamicMenu/DynamicMenu.ts | 28 -- .../DynamicMenu/DynamicMenuModal.svelte | 23 - .../DynamicMenu/DynamicMenuStack.svelte | 0 .../DynamicMenu/MediaSourceMenuModal.svelte | 116 ----- .../GlobalBackground/BackgroundStack.ts | 13 +- .../Integrations/JellyfinIntegration.svelte | 139 ------ .../JellyfinIntegrationUsersDialog.svelte | 29 -- .../Integrations/RadarrIntegration.svelte | 97 ---- .../Integrations/SonarrIntegration.svelte | 97 ---- .../Dialogs/MMConfirmDeleteFileDialog.svelte | 11 - .../Downloads/MMDownloadRow.svelte | 67 --- .../LocalFiles/MMLocalFileRow.svelte | 37 -- .../LocalFiles/MMLocalFilesTab.svelte | 138 ------ .../MMAddToRadarrDialog.svelte | 280 ------------ .../MMAddToSonarrDialog.svelte | 281 ------------ .../MediaManagerModal/MMMainLayout.svelte | 25 -- .../MediaManagerModal/MMModal.svelte | 28 -- .../MMSeasonSelectTab.svelte | 1 - .../MediaManagerModal/MMTitle.svelte | 8 - .../MediaManagerModal/MediaManagerModal.ts | 7 - .../RadarrMediaManagerModal.svelte | 56 --- .../Releases/MMReleaseListRow.svelte | 61 --- .../Releases/MMReleasesTab.svelte | 127 ------ .../SonarrMediaManagerModal.svelte | 63 --- .../src/lib/components/Menu/ListMenu.svelte | 188 -------- .../src/lib/components/Menu/menu.types.ts | 4 - .../src/lib/components/Modal/Modal.svelte | 9 +- .../StackRouter/stack-router.store.ts | 31 +- frontend/src/lib/pages/OnboardingPage.svelte | 302 ------------- .../ActionsPage/ActionListMenu.svelte | 44 -- .../ActionsPage/ActionPageTitle.svelte | 36 -- .../TitlePages/ActionsPage/ActionsMenu.svelte | 103 ----- .../ActionsPage/ActionsMenuContainer.svelte | 30 -- .../ActionsPage/MultipleListMenu.svelte | 142 ------ .../ActionsPage/StreamListMenu.svelte | 155 ------- .../ActionsPage/TheListContainer.svelte | 103 ----- .../TitlePages/ActionsPage/actions-page.ts | 58 +-- .../lib/pages/TitlePages/ManageMenu.svelte | 87 ---- .../TitlePages/MoviePage/MoviePage.svelte | 221 ++++++++- .../MoviePage/MoviePageDetails.svelte | 226 ---------- .../MoviePage/MovieStreams.MoviePage.svelte | 73 --- .../StreamDetailsDialog.MoviePage.svelte | 63 --- .../SeriesPage/DownloadDetailsDialog.svelte | 67 --- .../SeriesPage/FileDetailsDialog.svelte | 53 --- .../TitlePages/SeriesPage/SeriesPage.svelte | 423 +++++++++++++++++- .../SeriesPage/SeriesPageDetails.svelte | 409 ----------------- .../SeriesPage/StreamablesView.svelte | 219 +++++---- .../TitlePages/StreamSelectorModal.svelte | 112 ----- .../lib/pages/TitlePages/TitleSheet.svelte | 18 +- frontend/src/lib/selectable.ts | 5 +- .../src/lib/stores/component-stack.store.ts | 86 ---- .../stores/user-data/title-user-data.store.ts | 35 +- 55 files changed, 803 insertions(+), 4356 deletions(-) delete mode 100644 frontend/src/lib/components/ComponentStack/ComponentStack.svelte delete mode 100644 frontend/src/lib/components/ComponentStack/ComponentStackContainer.svelte delete mode 100644 frontend/src/lib/components/ComponentStack/ComponentStackContextProvider.svelte delete mode 100644 frontend/src/lib/components/DynamicMenu/DynamicMenu.ts delete mode 100644 frontend/src/lib/components/DynamicMenu/DynamicMenuModal.svelte delete mode 100644 frontend/src/lib/components/DynamicMenu/DynamicMenuStack.svelte delete mode 100644 frontend/src/lib/components/DynamicMenu/MediaSourceMenuModal.svelte delete mode 100644 frontend/src/lib/components/Integrations/JellyfinIntegration.svelte delete mode 100644 frontend/src/lib/components/Integrations/JellyfinIntegrationUsersDialog.svelte delete mode 100644 frontend/src/lib/components/Integrations/RadarrIntegration.svelte delete mode 100644 frontend/src/lib/components/Integrations/SonarrIntegration.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/Dialogs/MMConfirmDeleteFileDialog.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/Downloads/MMDownloadRow.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFileRow.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFilesTab.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/MMAddToRadarrDialog.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/MMAddToSonarrDialog.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/MMMainLayout.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/MMModal.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/MMSeasonSelectTab.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/MMTitle.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/MediaManagerModal.ts delete mode 100644 frontend/src/lib/components/MediaManagerModal/RadarrMediaManagerModal.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/Releases/MMReleaseListRow.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/Releases/MMReleasesTab.svelte delete mode 100644 frontend/src/lib/components/MediaManagerModal/SonarrMediaManagerModal.svelte delete mode 100644 frontend/src/lib/components/Menu/ListMenu.svelte delete mode 100644 frontend/src/lib/components/Menu/menu.types.ts delete mode 100644 frontend/src/lib/pages/OnboardingPage.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/ActionsPage/ActionListMenu.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/ActionsPage/ActionPageTitle.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/ActionsPage/ActionsMenu.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/ActionsPage/ActionsMenuContainer.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/ActionsPage/MultipleListMenu.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/ActionsPage/StreamListMenu.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/ActionsPage/TheListContainer.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/ManageMenu.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/MoviePage/MoviePageDetails.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/MoviePage/MovieStreams.MoviePage.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/MoviePage/StreamDetailsDialog.MoviePage.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/SeriesPage/DownloadDetailsDialog.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/SeriesPage/FileDetailsDialog.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/SeriesPage/SeriesPageDetails.svelte delete mode 100644 frontend/src/lib/pages/TitlePages/StreamSelectorModal.svelte delete mode 100644 frontend/src/lib/stores/component-stack.store.ts diff --git a/frontend/src/lib/components/ComponentStack/ComponentStack.svelte b/frontend/src/lib/components/ComponentStack/ComponentStack.svelte deleted file mode 100644 index f474a08..0000000 --- a/frontend/src/lib/components/ComponentStack/ComponentStack.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - -{#each $items as item, i (item.id)} - -{/each} diff --git a/frontend/src/lib/components/ComponentStack/ComponentStackContainer.svelte b/frontend/src/lib/components/ComponentStack/ComponentStackContainer.svelte deleted file mode 100644 index f8fe17e..0000000 --- a/frontend/src/lib/components/ComponentStack/ComponentStackContainer.svelte +++ /dev/null @@ -1,53 +0,0 @@ - - - - {#if ($top?.preventScroll || preventScroll) && $top === component} - - {/if} - - - - -{#if nextComponent} - -{/if} diff --git a/frontend/src/lib/components/ComponentStack/ComponentStackContextProvider.svelte b/frontend/src/lib/components/ComponentStack/ComponentStackContextProvider.svelte deleted file mode 100644 index f93c5dc..0000000 --- a/frontend/src/lib/components/ComponentStack/ComponentStackContextProvider.svelte +++ /dev/null @@ -1,50 +0,0 @@ - - - - {#if item.preventScroll && isTop} - - {/if} - - - - - diff --git a/frontend/src/lib/components/DynamicMenu/DynamicMenu.ts b/frontend/src/lib/components/DynamicMenu/DynamicMenu.ts deleted file mode 100644 index 89fbfaa..0000000 --- a/frontend/src/lib/components/DynamicMenu/DynamicMenu.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { writable } from 'svelte/store'; - -export type MenuStack = ReturnType; - -export function useMenuStack() { - type Page = { - id: symbol; - }; - - const pages = writable([]); - - function addPage(id: symbol) { - const page: Page = { id }; - pages.update((p) => [...p, page]); - } - - function removePage(id: symbol) { - pages.update((p) => { - return p.filter((page) => page.id !== id); - }); - } - - return { - subscribe: pages.subscribe, - addPage, - removePage - }; -} diff --git a/frontend/src/lib/components/DynamicMenu/DynamicMenuModal.svelte b/frontend/src/lib/components/DynamicMenu/DynamicMenuModal.svelte deleted file mode 100644 index d05157e..0000000 --- a/frontend/src/lib/components/DynamicMenu/DynamicMenuModal.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/DynamicMenu/DynamicMenuStack.svelte b/frontend/src/lib/components/DynamicMenu/DynamicMenuStack.svelte deleted file mode 100644 index e69de29..0000000 diff --git a/frontend/src/lib/components/DynamicMenu/MediaSourceMenuModal.svelte b/frontend/src/lib/components/DynamicMenu/MediaSourceMenuModal.svelte deleted file mode 100644 index f16b9a7..0000000 --- a/frontend/src/lib/components/DynamicMenu/MediaSourceMenuModal.svelte +++ /dev/null @@ -1,116 +0,0 @@ - - - - { - if (!$componentStack.length) { - close(); - } else { - componentStack.pop(); - detail.stopPropagation(); - } - }} - > - {#if !$componentStack.length} - {#await views then views} - {#each views as view} - - - {capitalize(view.label)} - {#if hasFocus} - - {/if} - - - {/each} - {/await} - {:else} - - {/if} - - diff --git a/frontend/src/lib/components/GlobalBackground/BackgroundStack.ts b/frontend/src/lib/components/GlobalBackground/BackgroundStack.ts index 4e89fc4..2ea0ed1 100644 --- a/frontend/src/lib/components/GlobalBackground/BackgroundStack.ts +++ b/frontend/src/lib/components/GlobalBackground/BackgroundStack.ts @@ -1,19 +1,12 @@ import { Selectable, useRegistrar } from '$lib/selectable'; -import { - getContext, - hasContext, - onDestroy, - setContext, - SvelteComponentTyped, - type ComponentProps, - type ComponentType -} from 'svelte'; +import { onDestroy, SvelteComponentTyped, type ComponentProps, type ComponentType } from 'svelte'; import { derived, get, writable } from 'svelte/store'; import YoutubeVideo from '../VideoPlayer/YoutubeVideo.svelte'; import TmdbVideoPlayer from '../VideoPlayer/TmdbVideoPlayer.svelte'; import type { MediaSourceDto } from '$lib/apis/reiverr/reiverr.openapi'; +import { getContext, hasContext, setContext } from '../StackRouter/stack-router.store'; -export const BACKGROUND_CONTEXT_KEY = Symbol('BACKGROUND_CONTEXT_KEY'); +export const BACKGROUND_CONTEXT_KEY = 'background-context'; export type Background = { backdropUri: string; diff --git a/frontend/src/lib/components/Integrations/JellyfinIntegration.svelte b/frontend/src/lib/components/Integrations/JellyfinIntegration.svelte deleted file mode 100644 index 888c491..0000000 --- a/frontend/src/lib/components/Integrations/JellyfinIntegration.svelte +++ /dev/null @@ -1,139 +0,0 @@ - - -
- !!u?.length)} - on:change={handleChange} - > - Base Url - - !!u?.length)} - on:change={handleChange} - > - API Key - -
- -{#await jellyfinUsers then users} - {#if users?.length} - - dispatch('click-user', { user: jellyfinUser, users, setJellyfinUser })} - class="mb-4" - > - User - - {/if} -{/await} - -{#if error} -
{error}
-{/if} - - diff --git a/frontend/src/lib/components/Integrations/JellyfinIntegrationUsersDialog.svelte b/frontend/src/lib/components/Integrations/JellyfinIntegrationUsersDialog.svelte deleted file mode 100644 index fbf8da2..0000000 --- a/frontend/src/lib/components/Integrations/JellyfinIntegrationUsersDialog.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - -

Users

-
- {#each users as user} - handleSelect(user)} - > - {user.Name} - - {/each} -
-
diff --git a/frontend/src/lib/components/Integrations/RadarrIntegration.svelte b/frontend/src/lib/components/Integrations/RadarrIntegration.svelte deleted file mode 100644 index 4e8e715..0000000 --- a/frontend/src/lib/components/Integrations/RadarrIntegration.svelte +++ /dev/null @@ -1,97 +0,0 @@ - - -
- - Base Url - - API Key -
- -{#if error} -
{error}
-{/if} - - diff --git a/frontend/src/lib/components/Integrations/SonarrIntegration.svelte b/frontend/src/lib/components/Integrations/SonarrIntegration.svelte deleted file mode 100644 index a0d3b73..0000000 --- a/frontend/src/lib/components/Integrations/SonarrIntegration.svelte +++ /dev/null @@ -1,97 +0,0 @@ - - -
- - Base Url - - API Key -
- -{#if error} -
{error}
-{/if} - - diff --git a/frontend/src/lib/components/MediaManagerModal/Dialogs/MMConfirmDeleteFileDialog.svelte b/frontend/src/lib/components/MediaManagerModal/Dialogs/MMConfirmDeleteFileDialog.svelte deleted file mode 100644 index 40cb919..0000000 --- a/frontend/src/lib/components/MediaManagerModal/Dialogs/MMConfirmDeleteFileDialog.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - -

Delete file?

-
Are you sure you want to permanently delete this file?
-
diff --git a/frontend/src/lib/components/MediaManagerModal/Downloads/MMDownloadRow.svelte b/frontend/src/lib/components/MediaManagerModal/Downloads/MMDownloadRow.svelte deleted file mode 100644 index 50c7985..0000000 --- a/frontend/src/lib/components/MediaManagerModal/Downloads/MMDownloadRow.svelte +++ /dev/null @@ -1,67 +0,0 @@ - - - -
- -
- -
-

{subtitle}

-

{title}

-
-
- - - -
-
- diff --git a/frontend/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFileRow.svelte b/frontend/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFileRow.svelte deleted file mode 100644 index e3f84f3..0000000 --- a/frontend/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFileRow.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - - - -
- {file.sceneName} -
-
- {file.mediaInfo?.runTime} - {formatSize(file.size || 0)} - {file.quality?.quality?.name} - - - modalStack.create(MMConfirmDeleteFileDialog, { - deleteFile: () => deleteFile(file.id || -1) - })} - > - - - -
diff --git a/frontend/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFilesTab.svelte b/frontend/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFilesTab.svelte deleted file mode 100644 index d68c4b3..0000000 --- a/frontend/src/lib/components/MediaManagerModal/LocalFiles/MMLocalFilesTab.svelte +++ /dev/null @@ -1,138 +0,0 @@ - - -{#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/frontend/src/lib/components/MediaManagerModal/MMAddToRadarrDialog.svelte b/frontend/src/lib/components/MediaManagerModal/MMAddToRadarrDialog.svelte deleted file mode 100644 index 422995f..0000000 --- a/frontend/src/lib/components/MediaManagerModal/MMAddToRadarrDialog.svelte +++ /dev/null @@ -1,280 +0,0 @@ - - - - {#if backgroundUrl && tab === 'add-to-radarr'} -
- {/if} - - {#await sonarrOptions then { qualityProfiles, rootFolders }} - {@const selectedRootFolder = rootFolders.find( - (f) => f.path === $addOptionsStore.rootFolderPath - )} - {@const selectedQualityProfile = qualityProfiles.find( - (f) => f.id === $addOptionsStore.qualityProfileId - )} - - -
-
-

Add {title} to Sonarr?

-
- Before you can fetch episodes, you need to add this series to Sonarr. -
- (tab = 'root-folders')} - let:hasFocus - > -
-

Root Folder

- {selectedRootFolder?.path} - ({formatSize(selectedRootFolder?.freeSpace || 0)} left) -
- -
- - (tab = 'quality-profiles')} - let:hasFocus - > -
-

- Quality Profile -

- - {selectedQualityProfile?.name} - -
- -
- - (tab = 'monitor-settings')} - let:hasFocus - > -
-

- Minimum Availability -

- - {capitalize($addOptionsStore.minimumAvailability || 'released')} - -
- -
- - - - - - - - - -
- - - - - - - -

Root Folder

-
- {#each rootFolders as rootFolder} - - addOptionsStore.update((prev) => ({ ...prev, rootFolderId: rootFolder.id || 0 }))} - focusOnClick - focusOnMount={$addOptionsStore.rootFolderPath === rootFolder.path} - > -
- {rootFolder.path} ({formatSize(rootFolder.freeSpace || 0)} left) -
- {#if selectedRootFolder?.id === rootFolder.id} - - {/if} -
- {/each} -
-
- - -

Quality Profile

-
- {#each qualityProfiles as qualityProfile} - - addOptionsStore.update((prev) => ({ - ...prev, - qualityProfileId: qualityProfile.id || 0 - }))} - focusOnClick - focusOnMount={$addOptionsStore.qualityProfileId === qualityProfile.id} - > -
{qualityProfile.name}
- {#if selectedQualityProfile?.id === qualityProfile.id} - - {/if} -
- {/each} -
-
- - -

Monitor Episodes

-
- {#each movieAvailabilities as availibility} - - addOptionsStore.update((prev) => ({ ...prev, monitorOptions: availibility }))} - focusOnClick - focusOnMount={$addOptionsStore.minimumAvailability === availibility} - > -
{capitalize(availibility)}
- {#if $addOptionsStore.minimumAvailability === availibility} - - {/if} -
- {/each} -
-
- - {/await} -
diff --git a/frontend/src/lib/components/MediaManagerModal/MMAddToSonarrDialog.svelte b/frontend/src/lib/components/MediaManagerModal/MMAddToSonarrDialog.svelte deleted file mode 100644 index d86241a..0000000 --- a/frontend/src/lib/components/MediaManagerModal/MMAddToSonarrDialog.svelte +++ /dev/null @@ -1,281 +0,0 @@ - - - - {#if backgroundUrl && tab === 'add-to-sonarr'} -
- {/if} - - {#await sonarrOptions then { qualityProfiles, rootFolders }} - {@const selectedRootFolder = rootFolders.find( - (f) => f.path === $addOptionsStore.rootFolderPath - )} - {@const selectedQualityProfile = qualityProfiles.find( - (f) => f.id === $addOptionsStore.qualityProfileId - )} - - -
-
-

Add {title} to Sonarr?

-
- Before you can fetch episodes, you need to add this series to Sonarr. -
- (tab = 'root-folders')} - let:hasFocus - > -
-

Root Folder

- {selectedRootFolder?.path} - ({formatSize(selectedRootFolder?.freeSpace || 0)} left) -
- -
- - (tab = 'quality-profiles')} - let:hasFocus - > -
-

- Quality Profile -

- - {selectedQualityProfile?.name} - -
- -
- - (tab = 'monitor-settings')} - let:hasFocus - > -
-

- Monitor Strategy -

- - {capitalize($addOptionsStore.monitorOptions || 'none')} - -
- -
- - - - - - - - - -
- - - - - - - -

Root Folder

-
- {#each rootFolders as rootFolder} - - addOptionsStore.update((prev) => ({ ...prev, rootFolderId: rootFolder.id || 0 }))} - focusOnClick - focusOnMount={$addOptionsStore.rootFolderPath === rootFolder.path} - > -
- {rootFolder.path} ({formatSize(rootFolder.freeSpace || 0)} left) -
- {#if selectedRootFolder?.id === rootFolder.id} - - {/if} -
- {/each} -
-
- - -

Quality Profile

-
- {#each qualityProfiles as qualityProfile} - - addOptionsStore.update((prev) => ({ - ...prev, - qualityProfileId: qualityProfile.id || 0 - }))} - focusOnClick - focusOnMount={$addOptionsStore.qualityProfileId === qualityProfile.id} - > -
{qualityProfile.name}
- {#if selectedQualityProfile?.id === qualityProfile.id} - - {/if} -
- {/each} -
-
- - -

Monitor Episodes

-
- {#each sonarrMonitorOptions as monitorOption} - - addOptionsStore.update((prev) => ({ ...prev, monitorOptions: monitorOption }))} - focusOnClick - focusOnMount={$addOptionsStore.monitorOptions === monitorOption} - > -
{capitalize(monitorOption)}
- {#if $addOptionsStore.monitorOptions === monitorOption} - - {/if} -
- {/each} -
-
- - {/await} -
diff --git a/frontend/src/lib/components/MediaManagerModal/MMMainLayout.svelte b/frontend/src/lib/components/MediaManagerModal/MMMainLayout.svelte deleted file mode 100644 index 86097e5..0000000 --- a/frontend/src/lib/components/MediaManagerModal/MMMainLayout.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - -
-
-
- - - - -
-
- - -
-
- - - -
diff --git a/frontend/src/lib/components/MediaManagerModal/MMModal.svelte b/frontend/src/lib/components/MediaManagerModal/MMModal.svelte deleted file mode 100644 index 2a6ff40..0000000 --- a/frontend/src/lib/components/MediaManagerModal/MMModal.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - - -