diff --git a/web/src/lib/components/add-media-card.svelte b/web/src/lib/components/add-media-card.svelte index 0a6830b..dc4ad51 100644 --- a/web/src/lib/components/add-media-card.svelte +++ b/web/src/lib/components/add-media-card.svelte @@ -1,102 +1,100 @@ - - - {result.name} - {#if result.year != null} - ({result.year}) - {/if} - - {result.overview !== '' ? result.overview : 'No overview available'} - - - {#if result.poster_path != null} - {result.name}'s Poster Image - {:else} -
- -
- {/if} -
- - -
- {#if result.vote_average != null} + + + {result.name} + {#if result.year != null} + ({result.year}) + {/if} + + {result.overview !== '' ? result.overview : 'No overview available'} + + + {#if result.poster_path != null} + {result.name}'s Poster Image + {:else} +
+ +
+ {/if} +
+ + +
+ {#if result.vote_average != null} + > Rating: {Math.round(result.vote_average)}/10 - {/if} -
- {#if errorMessage} -

{errorMessage}

- {/if} -
+ {/if} +
+ {#if errorMessage} +

{errorMessage}

+ {/if} +
diff --git a/web/src/lib/components/download-movie-dialog.svelte b/web/src/lib/components/download-movie-dialog.svelte index 691f667..db89fe6 100644 --- a/web/src/lib/components/download-movie-dialog.svelte +++ b/web/src/lib/components/download-movie-dialog.svelte @@ -1,162 +1,160 @@ -{#snippet saveDirectoryPreview(movie: components["schemas"]["Movie"], filePathSuffix: string)} - /{getFullyQualifiedMediaName(movie)} [{movie.metadata_provider}id-{movie.external_id} - ]/{movie.name}{filePathSuffix === '' ? '' : ' - ' + filePathSuffix}.mkv +{#snippet saveDirectoryPreview(movie: components['schemas']['Movie'], filePathSuffix: string)} + /{getFullyQualifiedMediaName(movie)} [{movie.metadata_provider}id-{movie.external_id} + ]/{movie.name}{filePathSuffix === '' ? '' : ' - ' + filePathSuffix}.mkv {/snippet} - Download Movie - - - Download a Movie - - Search and download torrents for a specific season or season packs. - - - - - Standard Mode - Advanced Mode - - -
- - - {filePathSuffix} - - None - 2160p - 1080p - 720p - 480p - 360p - - -

- This is necessary to differentiate between versions of the same movie, for example a - 1080p and a 4K version. -

- -

- {@render saveDirectoryPreview(movie, filePathSuffix)} -

-
-
- -
- -
- - -
-

- The custom query will override the default search string like "A Minecraft Movie - (2025)". -

- - -

- This is necessary to differentiate between versions of the same movie, for example a - 1080p and a 4K version. -

+ variant="secondary" + > + Search + +
+

+ The custom query will override the default search string like "A Minecraft Movie + (2025)". +

+ + +

+ This is necessary to differentiate between versions of the same movie, for example a + 1080p and a 4K version. +

- -

- {@render saveDirectoryPreview(movie, filePathSuffix)} -

- -
-
-
- {#if isLoadingTorrents} -
- -

Loading torrents...

-
- {:else if torrentsError} -

Error: {torrentsError}

- {:else if torrents.length > 0} -

Found Torrents:

-
- - - - Title - Size - Seeders - Score - Indexer Flags - Actions - - - - {#each torrents as torrent (torrent.id)} - - {torrent.title} - {(torrent.size / 1024 / 1024 / 1024).toFixed(2)}GB - {torrent.seeders} - {torrent.score} - - {#each torrent.flags as flag (flag)} - {flag} - {/each} - - -
+ + +
+ {#if isLoadingTorrents} +
+ +

Loading torrents...

+
+ {:else if torrentsError} +

Error: {torrentsError}

+ {:else if torrents.length > 0} +

Found Torrents:

+
+ + + + Title + Size + Seeders + Score + Indexer Flags + Actions + + + + {#each torrents as torrent (torrent.id)} + + {torrent.title} + {(torrent.size / 1024 / 1024 / 1024).toFixed(2)}GB + {torrent.seeders} + {torrent.score} + + {#each torrent.flags as flag (flag)} + {flag} + {/each} + + + - - - {/each} - - -
- {:else} -

No torrents found!

- {/if} -
- + > + Download + + + + {/each} + + +
+ {:else} +

No torrents found!

+ {/if} + +
diff --git a/web/src/lib/components/download-season-dialog.svelte b/web/src/lib/components/download-season-dialog.svelte index 943254c..41a44e2 100644 --- a/web/src/lib/components/download-season-dialog.svelte +++ b/web/src/lib/components/download-season-dialog.svelte @@ -92,10 +92,7 @@ } -{#snippet saveDirectoryPreview( - show: components['schemas']['Show'], - filePathSuffix: string -)} +{#snippet saveDirectoryPreview(show: components['schemas']['Show'], filePathSuffix: string)} /{getFullyQualifiedMediaName(show)} [{show.metadata_provider}id-{show.external_id}]/ Season XX/{show.name} SXXEXX {filePathSuffix === '' ? '' : ' - ' + filePathSuffix}.mkv {/snippet} diff --git a/web/src/lib/components/library-combobox.svelte b/web/src/lib/components/library-combobox.svelte index 52d4a48..0f050f5 100644 --- a/web/src/lib/components/library-combobox.svelte +++ b/web/src/lib/components/library-combobox.svelte @@ -1,126 +1,122 @@ - - {#snippet child({props})} - - {/snippet} - - - - - - No library found. - - {#each libraries as item (item.name)} - { + + {#snippet child({ props })} + + {/snippet} + + + + + + No library found. + + {#each libraries as item (item.name)} + { value = item.name; handleSelect(); closeAndFocusTrigger(); }} - > - - {item.name} - - {/each} - - - - + > + + {item.name} + + {/each} + + + + diff --git a/web/src/lib/components/login-card.svelte b/web/src/lib/components/login-card.svelte index 7e48823..87bf6e6 100644 --- a/web/src/lib/components/login-card.svelte +++ b/web/src/lib/components/login-card.svelte @@ -1,151 +1,146 @@ - - Login - Enter your email below to log in to your account - - -
-
- - -
-
- - -
+ + Login + Enter your email below to log in to your account + + + +
+ + +
+
+ + +
- {#if errorMessage} - - - Error - {errorMessage} - - {/if} - {#if isLoading} - - {/if} - - - {#await oauthProvider} - - {:then result} - {#if result.oauth_name != null} -
+ {#if errorMessage} + + + Error + {errorMessage} + + {/if} + {#if isLoading} + + {/if} + + + {#await oauthProvider} + + {:then result} + {#if result.oauth_name != null} +
Or continue with -
- - {/if} - {/await} -
- -
- +
+ + {/if} + {/await} +
+ +
+
diff --git a/web/src/lib/components/recommended-media-carousel.svelte b/web/src/lib/components/recommended-media-carousel.svelte index 92cb71f..5932d5d 100644 --- a/web/src/lib/components/recommended-media-carousel.svelte +++ b/web/src/lib/components/recommended-media-carousel.svelte @@ -1,11 +1,10 @@ - { + { dialogOpen = true; }} - > - Request Movie - - - - Request {getFullyQualifiedMediaName(movie)} - Select desired qualities to submit a request. - -
- -
- - - - {minQuality ? getTorrentQualityString(parseInt(minQuality)) : 'Select Minimum Quality'} - - - {#each qualityOptions as option (option.value)} - {option.label} - {/each} - - -
+ > + Request Movie + + + + Request {getFullyQualifiedMediaName(movie)} + Select desired qualities to submit a request. + +
+ +
+ + + + {minQuality ? getTorrentQualityString(parseInt(minQuality)) : 'Select Minimum Quality'} + + + {#each qualityOptions as option (option.value)} + {option.label} + {/each} + + +
- -
- - - - {wantedQuality - ? getTorrentQualityString(parseInt(wantedQuality)) - : 'Select Wanted Quality'} - - - {#each qualityOptions as option (option.value)} - {option.label} - {/each} - - -
+ +
+ + + + {wantedQuality + ? getTorrentQualityString(parseInt(wantedQuality)) + : 'Select Wanted Quality'} + + + {#each qualityOptions as option (option.value)} + {option.label} + {/each} + + +
- {#if submitRequestError} -

{submitRequestError}

- {/if} -
- - - - -
+ {#if submitRequestError} +

{submitRequestError}

+ {/if} +
+ + + + +
diff --git a/web/src/lib/components/request-season-dialog.svelte b/web/src/lib/components/request-season-dialog.svelte index 44dfcbc..2b75403 100644 --- a/web/src/lib/components/request-season-dialog.svelte +++ b/web/src/lib/components/request-season-dialog.svelte @@ -1,16 +1,14 @@ - A list of all requests. - - - {isShow ? 'Show' : 'Movie'} - {#if isShow} - Season - {/if} - Minimum Quality - Wanted Quality - Requested by - Approved - Approved by - Actions - - - - {#each requests as request (request.id)} - {#if filter(request)} - - - {#if isShow} - {getFullyQualifiedMediaName((request as SeasonRequest).show)} - {:else} - {getFullyQualifiedMediaName((request as MovieRequest).movie)} - {/if} - - {#if isShow} - - {(request as SeasonRequest).season.number} - - {/if} - - {getTorrentQualityString(request.min_quality)} - - - {getTorrentQualityString(request.wanted_quality)} - - - {request.requested_by?.email ?? 'N/A'} - - - - - - {request.authorized_by?.email ?? 'N/A'} - - - - {#if user().is_superuser} - - {#if isShow} - - {:else} - + {#if isShow} + + {:else} + - {/if} - {/if} - {#if user().is_superuser || user().id === request.requested_by?.id} - - {/if} - - - {/if} - {:else} - - There are currently no requests. - - {/each} - + > + Download manually + + {/if} + {/if} + {#if user().is_superuser || user().id === request.requested_by?.id} + + {/if} + + + {/if} + {:else} + + There are currently no requests. + + {/each} + diff --git a/web/src/lib/components/signup-card.svelte b/web/src/lib/components/signup-card.svelte index ef2568a..35f1943 100644 --- a/web/src/lib/components/signup-card.svelte +++ b/web/src/lib/components/signup-card.svelte @@ -1,152 +1,148 @@ - - Sign Up - Enter your information to create an account - - -
-
- - -
-
- - -
-
- - -
- {#if errorMessage} - - - Error - {errorMessage} - - {/if} - {#if successMessage} - - - Success - {successMessage} - - {/if} - {#if isLoading} - - {/if} - - - {#await oauthProvider} - - {:then result} - {#if result.oauth_name != null} -
+ + Sign Up + Enter your information to create an account + + +
+
+ + +
+
+ + +
+
+ + +
+ {#if errorMessage} + + + Error + {errorMessage} + + {/if} + {#if successMessage} + + + Success + {successMessage} + + {/if} + {#if isLoading} + + {/if} + + + {#await oauthProvider} + + {:then result} + {#if result.oauth_name != null} +
Or continue with -
- - {/if} - {/await} -
- -
-
+
+ + {/if} + {/await} +
+ +
+
diff --git a/web/src/lib/components/user-data-table.svelte b/web/src/lib/components/user-data-table.svelte index aac6029..ea90184 100644 --- a/web/src/lib/components/user-data-table.svelte +++ b/web/src/lib/components/user-data-table.svelte @@ -3,7 +3,6 @@ import CheckmarkX from '$lib/components/checkmark-x.svelte'; import * as Table from '$lib/components/ui/table/index.js'; import { Button } from '$lib/components/ui/button/index.js'; - import { env } from '$env/dynamic/public'; import { toast } from 'svelte-sonner'; import * as Dialog from '$lib/components/ui/dialog/index.js'; import { Label } from '$lib/components/ui/label/index.js'; @@ -11,7 +10,6 @@ import { Input } from '$lib/components/ui/input/index.js'; import { invalidateAll } from '$app/navigation'; import client from '$lib/api'; - const apiUrl = env.PUBLIC_API_URL; let { users }: { users: User[] } = $props(); let sortedUsers = $derived(users.sort((a, b) => a.email.localeCompare(b.email))); let selectedUser: User | null = $state(null); @@ -21,7 +19,7 @@ async function saveUser() { if (!selectedUser) return; - const {data} = await client.PATCH("/api/v1/users/{id}", { + const { error } = await client.PATCH('/api/v1/users/{id}', { params: { query: { id: selectedUser.id @@ -34,13 +32,18 @@ ...(newPassword !== '' && { password: newPassword }), ...(newEmail !== '' && { email: newEmail }) } - }) - toast.success(`User ${selectedUser.email} updated successfully.`); - dialogOpen = false; - selectedUser = null; - newPassword = ''; - newEmail = ''; - await invalidateAll(); + }); + + if (error) { + toast.error(`Failed to update user ${selectedUser.email}: ${error}`); + } else { + toast.success(`User ${selectedUser.email} updated successfully.`); + dialogOpen = false; + selectedUser = null; + newPassword = ''; + newEmail = ''; + await invalidateAll(); + } } diff --git a/web/src/lib/components/user-settings.svelte b/web/src/lib/components/user-settings.svelte index a7730a4..12450cd 100644 --- a/web/src/lib/components/user-settings.svelte +++ b/web/src/lib/components/user-settings.svelte @@ -1,75 +1,72 @@ - - - - - - Edit User Details - - Change your email or password. Leave fields empty to not change them. - - -
- -
- - -
- -
- - -
-
-
- -
-
+ + + + + + Edit User Details + + Change your email or password. Leave fields empty to not change them. + + +
+ +
+ + +
+ +
+ + +
+
+
+ +
+
diff --git a/web/src/routes/dashboard/+layout.ts b/web/src/routes/dashboard/+layout.ts index b460e92..28a31ef 100644 --- a/web/src/routes/dashboard/+layout.ts +++ b/web/src/routes/dashboard/+layout.ts @@ -1,12 +1,9 @@ -import { env } from '$env/dynamic/public'; import type { LayoutLoad } from './$types'; import { redirect } from '@sveltejs/kit'; import { base } from '$app/paths'; import { browser } from '$app/environment'; import { goto } from '$app/navigation'; -import client from "$lib/api"; - -const apiUrl = env.PUBLIC_API_URL; +import client from '$lib/api'; export const load: LayoutLoad = async ({ fetch }) => { const { data, response } = await client.GET('/api/v1/users/me', { fetch: fetch }); diff --git a/web/src/routes/dashboard/+page.svelte b/web/src/routes/dashboard/+page.svelte index de25e99..8ebfce5 100644 --- a/web/src/routes/dashboard/+page.svelte +++ b/web/src/routes/dashboard/+page.svelte @@ -1,79 +1,75 @@ - Dashboard - MediaManager - + Dashboard - MediaManager +
-
- - - - - - - -
+
+ + + + + + + +
-

- Dashboard -

-
-
-

Trending Shows

- +

+ Dashboard +

+
+
+

Trending Shows

+ -

Trending Movies

- -
-
+

Trending Movies

+ +
+
- -
-
-

- Unread Notifications - {#if unreadNotifications.length > 0}: - {unreadNotifications.length} - {/if} -

-
+ {#if loading} +
+
+
+ {:else} + +
+
+

+ Unread Notifications + {#if unreadNotifications.length > 0}: + {unreadNotifications.length} + {/if} +

+
- {#if unreadNotifications.length === 0} -
-

All caught up!

-

No unread notifications

-
- {:else} -
- {#each unreadNotifications as notification (notification.id)} -
-
-
-
-

- {notification.message} -

-

- {new Date(notification.timestamp ?? 0).toLocaleDateString()} -

-
-
-
- -
-
-
- {/each} -
- {/if} -
+ {#if unreadNotifications.length === 0} +
+

All caught up!

+

No unread notifications

+
+ {:else} +
+ {#each unreadNotifications as notification (notification.id)} +
+
+
+
+

+ {notification.message} +

+

+ {new Date(notification.timestamp ?? 0).toLocaleDateString()} +

+
+
+
+ +
+
+
+ {/each} +
+ {/if} +
- -
- -
+ +
+ +
- - {#if showRead} -
- {#if readNotifications.length === 0} -
-

No read notifications

-
- {:else} -
- {#each readNotifications as notification (notification.id)} -
-
-
-
-

- {notification.message} -

-

- {new Date(notification.timestamp ?? 0).toLocaleDateString()} -

-
-
-
- -
-
-
- {/each} -
- {/if} -
- {/if} - {/if} + + {#if showRead} +
+ {#if readNotifications.length === 0} +
+

No read notifications

+
+ {:else} +
+ {#each readNotifications as notification (notification.id)} +
+
+
+
+

+ {notification.message} +

+

+ {new Date(notification.timestamp ?? 0).toLocaleDateString()} +

+
+
+
+ +
+
+
+ {/each} +
+ {/if} +
+ {/if} + {/if} diff --git a/web/src/routes/dashboard/settings/+page.ts b/web/src/routes/dashboard/settings/+page.ts index 5d0d5e5..7d963e1 100644 --- a/web/src/routes/dashboard/settings/+page.ts +++ b/web/src/routes/dashboard/settings/+page.ts @@ -1,12 +1,10 @@ -import {env} from '$env/dynamic/public'; -import type {PageLoad} from './$types'; -import client from "$lib/api"; +import type { PageLoad } from './$types'; +import client from '$lib/api'; -const apiUrl = env.PUBLIC_API_URL; -export const load: PageLoad = async ({fetch}) => { - const {data} = await client.GET('/api/v1/users/all', {fetch: fetch}); +export const load: PageLoad = async ({ fetch }) => { + const { data } = await client.GET('/api/v1/users/all', { fetch: fetch }); - return { - users: data - }; + return { + users: data + }; }; diff --git a/web/src/routes/dashboard/tv/+page.svelte b/web/src/routes/dashboard/tv/+page.svelte index 0347e23..ccd95bb 100644 --- a/web/src/routes/dashboard/tv/+page.svelte +++ b/web/src/routes/dashboard/tv/+page.svelte @@ -1,64 +1,64 @@ - TV Shows - MediaManager - + TV Shows - MediaManager +
-
- - - - - - - -
+
+ + + + + + + +
-

- TV Shows -

-
)} - {#each tvShows as show (show.id)} - - - - {getFullyQualifiedMediaName(show)} - {show.overview} - - - - - - - {:else} -
No TV shows added yet.
- {/each} -
+

+ TV Shows +

+
+ )} + {#each tvShows as show (show.id)} + + + + {getFullyQualifiedMediaName(show)} + {show.overview} + + + + + + + {:else} +
No TV shows added yet.
+ {/each} +
diff --git a/web/src/routes/dashboard/tv/+page.ts b/web/src/routes/dashboard/tv/+page.ts index 1812c0f..15c7172 100644 --- a/web/src/routes/dashboard/tv/+page.ts +++ b/web/src/routes/dashboard/tv/+page.ts @@ -1,9 +1,7 @@ -import {env} from '$env/dynamic/public'; import client from '$lib/api'; -import type {PageLoad} from './$types'; +import type { PageLoad } from './$types'; - -export const load: PageLoad = async ({fetch}) => { - const {data} = await client.GET('/api/v1/tv/shows', {fetch: fetch}); - return {tvShows: data}; +export const load: PageLoad = async ({ fetch }) => { + const { data } = await client.GET('/api/v1/tv/shows', { fetch: fetch }); + return { tvShows: data }; }; diff --git a/web/src/routes/dashboard/tv/[showId=uuid]/+layout.ts b/web/src/routes/dashboard/tv/[showId=uuid]/+layout.ts index 354a9cf..c551adc 100644 --- a/web/src/routes/dashboard/tv/[showId=uuid]/+layout.ts +++ b/web/src/routes/dashboard/tv/[showId=uuid]/+layout.ts @@ -1,20 +1,18 @@ -import {env} from '$env/dynamic/public'; -import type {LayoutLoad} from './$types'; -import client from "$lib/api"; +import type { LayoutLoad } from './$types'; +import client from '$lib/api'; -const apiUrl = env.PUBLIC_API_URL; -export const load: LayoutLoad = async ({params, fetch}) => { - const show = await client.GET('/api/v1/tv/shows/{show_id}', { - fetch: fetch, - params: {path: {show_id: params.showId}} - }); - const torrents = await client.GET('/api/v1/tv/shows/{show_id}/torrents', { - fetch: fetch, - params: {path: {show_id: params.showId}} - }); +export const load: LayoutLoad = async ({ params, fetch }) => { + const show = await client.GET('/api/v1/tv/shows/{show_id}', { + fetch: fetch, + params: { path: { show_id: params.showId } } + }); + const torrents = await client.GET('/api/v1/tv/shows/{show_id}/torrents', { + fetch: fetch, + params: { path: { show_id: params.showId } } + }); - return { - showData: show.data, - torrentsData: torrents.data - }; + return { + showData: show.data, + torrentsData: torrents.data + }; }; diff --git a/web/src/routes/dashboard/tv/[showId=uuid]/+page.svelte b/web/src/routes/dashboard/tv/[showId=uuid]/+page.svelte index 1a2a1bb..da5d9d4 100644 --- a/web/src/routes/dashboard/tv/[showId=uuid]/+page.svelte +++ b/web/src/routes/dashboard/tv/[showId=uuid]/+page.svelte @@ -1,211 +1,209 @@ - {getFullyQualifiedMediaName(show())} - MediaManager - + name="description" + />
-
- - - - - - - -
+
+ + + + + + + +

- {getFullyQualifiedMediaName(show())} + {getFullyQualifiedMediaName(show())}

-
-
- {#if show().id} - - {:else} -
- -
- {/if} -
-
- - - Overview - - -

- {show().overview} -

-
-
-
-
- {#if user().is_superuser} - - - Administrator Controls - - - {#if !show().ended} -
- continuousDownloadEnabled, toggle_continuous_download} - id="continuous-download-checkbox" - /> - -
- {/if} - -
-
- {/if} - - - Download Options - - - {#if user().is_superuser} - - {/if} - - - -
-
-
- - - Season Details - - A list of all seasons for {getFullyQualifiedMediaName(show())}. - - - - - A list of all seasons. - - - Number - Exists on file - Title - Overview - - - - {#if show().seasons.length > 0} - {#each show().seasons as season (season.id)} - goto(base + '/dashboard/tv/' + show().id + '/' + season.id)} - > - {season.number} - - - - {season.name} - {season.overview} - - {/each} - {:else} - - No season data available. - - {/if} - - - - -
-
- - - Torrent Information - A list of all torrents associated with this show. - +
+
+ {#if show().id} + + {:else} +
+ +
+ {/if} +
+
+ + + Overview + + +

+ {show().overview} +

+
+
+
+
+ {#if user().is_superuser} + + + Administrator Controls + + + {#if !show().ended} +
+ continuousDownloadEnabled, toggle_continuous_download} + id="continuous-download-checkbox" + /> + +
+ {/if} + +
+
+ {/if} + + + Download Options + + + {#if user().is_superuser} + + {/if} + + + +
+
+
+ + + Season Details + + A list of all seasons for {getFullyQualifiedMediaName(show())}. + + + + + A list of all seasons. + + + Number + Exists on file + Title + Overview + + + + {#if show().seasons.length > 0} + {#each show().seasons as season (season.id)} + goto(base + '/dashboard/tv/' + show().id + '/' + season.id)} + > + {season.number} + + + + {season.name} + {season.overview} + + {/each} + {:else} + + No season data available. + + {/if} + + + + +
+
+ + + Torrent Information + A list of all torrents associated with this show. + - - - - -
+ + + +
+
diff --git a/web/src/routes/dashboard/tv/[showId=uuid]/[SeasonId=uuid]/+page.ts b/web/src/routes/dashboard/tv/[showId=uuid]/[SeasonId=uuid]/+page.ts index 9ff5982..f32b960 100644 --- a/web/src/routes/dashboard/tv/[showId=uuid]/[SeasonId=uuid]/+page.ts +++ b/web/src/routes/dashboard/tv/[showId=uuid]/[SeasonId=uuid]/+page.ts @@ -1,8 +1,5 @@ -import { env } from '$env/dynamic/public'; import type { PageLoad } from './$types'; -import client from "$lib/api"; - -const apiUrl = env.PUBLIC_API_URL; +import client from '$lib/api'; export const load: PageLoad = async ({ fetch, params }) => { const season = await client.GET('/api/v1/tv/seasons/{season_id}', { @@ -10,7 +7,7 @@ export const load: PageLoad = async ({ fetch, params }) => { params: { path: { season_id: params.SeasonId - }, + } } }); const seasonFiles = await client.GET('/api/v1/tv/seasons/{season_id}/files', { @@ -18,7 +15,7 @@ export const load: PageLoad = async ({ fetch, params }) => { params: { path: { season_id: params.SeasonId - }, + } } }); return { diff --git a/web/src/routes/dashboard/tv/add-show/+page.svelte b/web/src/routes/dashboard/tv/add-show/+page.svelte index 83e65ad..151161d 100644 --- a/web/src/routes/dashboard/tv/add-show/+page.svelte +++ b/web/src/routes/dashboard/tv/add-show/+page.svelte @@ -1,134 +1,134 @@ - Add TV Show - MediaManager - + Add TV Show - MediaManager +
-
- - - - - - - -
+
+ + + + + + + +
-
-

- Add a Show -

-
- - -

Search for a Show to add.

-
-
- - -
-

Advanced Settings

- -
-
- - - -
- - -
-
- - -
-
-
-
-
-
- -
-
+
+

+ Add a Show +

+
+ + +

Search for a Show to add.

+
+
+ + +
+

Advanced Settings

+ +
+
+ + + +
+ + +
+
+ + +
+
+
+
+
+
+ +
+
- + - {#if data && data.length === 0} -

No Shows found.

- {:else if data} -
No Shows found. + {:else if data} +
- {#each data as dataItem (dataItem.external_id)} - - {/each} -
- {/if} + > + {#each data as dataItem (dataItem.external_id)} + + {/each} +
+ {/if}
diff --git a/web/src/routes/dashboard/tv/requests/+layout.ts b/web/src/routes/dashboard/tv/requests/+layout.ts index 56785e5..2a2c696 100644 --- a/web/src/routes/dashboard/tv/requests/+layout.ts +++ b/web/src/routes/dashboard/tv/requests/+layout.ts @@ -1,10 +1,8 @@ -import { env } from '$env/dynamic/public'; import type { LayoutLoad } from './$types'; -import client from "$lib/api"; +import client from '$lib/api'; -const apiUrl = env.PUBLIC_API_URL; export const load: LayoutLoad = async ({ fetch }) => { - const { data, error } = await client.GET('/api/v1/tv/seasons/requests', { fetch: fetch }); + const { data } = await client.GET('/api/v1/tv/seasons/requests', { fetch: fetch }); return { requestsData: data }; diff --git a/web/src/routes/dashboard/tv/torrents/+page.ts b/web/src/routes/dashboard/tv/torrents/+page.ts index 5fcce98..112e143 100644 --- a/web/src/routes/dashboard/tv/torrents/+page.ts +++ b/web/src/routes/dashboard/tv/torrents/+page.ts @@ -1,7 +1,5 @@ -import { env } from '$env/dynamic/public'; import type { PageLoad } from './$types'; -import client from "$lib/api"; - +import client from '$lib/api'; export const load: PageLoad = async ({ fetch }) => { const { data } = await client.GET('/api/v1/tv/shows/torrents', { fetch: fetch }); diff --git a/web/src/routes/login/forgot-password/+page.svelte b/web/src/routes/login/forgot-password/+page.svelte index 7d99e36..c9f7aa3 100644 --- a/web/src/routes/login/forgot-password/+page.svelte +++ b/web/src/routes/login/forgot-password/+page.svelte @@ -1,114 +1,112 @@ - Forgot Password - MediaManager - + Forgot Password - MediaManager + - - Forgot Password - - {#if isSuccess} - We've sent a password reset link to your email address if a SMTP server is configured. Check - your inbox and follow the instructions to reset your password. If you didn't receive an - email, please contact an administrator, the reset link will be in the logs of MediaManager. - {:else} - Enter your email address and we'll send you a link to reset your password. - {/if} - - - - {#if isSuccess} -
-
-

- Password reset email sent successfully! -

-
-
-

Didn't receive the email? Check your spam folder or

- -
-
- {:else} -
-
- - -
- -
- {/if} - -
+ > + try again + +
+ + {:else} +
+
+ + +
+ +
+ {/if} +
+ Back to Login +
+ diff --git a/web/src/routes/login/reset-password/+page.svelte b/web/src/routes/login/reset-password/+page.svelte index 23fd874..f1723bb 100644 --- a/web/src/routes/login/reset-password/+page.svelte +++ b/web/src/routes/login/reset-password/+page.svelte @@ -1,120 +1,118 @@ - Reset Password - MediaManager - + Reset Password - MediaManager + - - Reset Password - Enter your new password below. - - -
-
- - -
-
- - -
- -
- -
+ + Reset Password + Enter your new password below. + + +
+
+ + +
+
+ + +
+ +
+ +