Initial work on getting series working

This commit is contained in:
Aleksi Lassila
2023-07-11 00:59:47 +03:00
parent a6a994fa05
commit 7a738c0459
21 changed files with 20153 additions and 115 deletions

View File

@@ -1,38 +0,0 @@
<script lang="ts">
import type { TmdbMovie } from '$lib/apis/tmdbApi';
import { onMount } from 'svelte';
import { fetchTmdbMovie, fetchTmdbMovieImages } from '$lib/apis/tmdbApi';
import { TMDB_IMAGES } from '$lib/constants';
import { getJellyfinItemByTmdbId } from '$lib/apis/jellyfin/jellyfinApi';
import CardPlaceholder from './CardPlaceholder.svelte';
import Card from './Card.svelte';
export let tmdbId: string;
export let type: 'default' | 'download' | 'in-library' = 'default';
let tmdbMoviePromise: Promise<TmdbMovie>;
let jellyfinItemPromise;
let radarrItemPromise;
let backdropUrlPromise;
onMount(async () => {
if (!tmdbId) throw new Error('No tmdbId provided');
backdropUrlPromise = fetchTmdbMovieImages(String(tmdbId)).then(
(r) => TMDB_IMAGES + r.backdrops.filter((b) => b.iso_639_1 === 'en')[0].file_path
);
tmdbMoviePromise = fetchTmdbMovie(tmdbId);
if (type === 'in-library') jellyfinItemPromise = getJellyfinItemByTmdbId(tmdbId);
if (type === 'download')
radarrItemPromise = fetch(`/movie/${tmdbId}/radarr`).then((r) => r.json());
});
</script>
{#await Promise.all([tmdbMoviePromise, jellyfinItemPromise, backdropUrlPromise])}
<CardPlaceholder {...$$restProps} />
{:then [tmdbMovie, jellyfinItem, backdropUrl]}
<Card {...$$restProps} {tmdbMovie} {backdropUrl} {jellyfinItem} />
{:catch err}
Error
{/await}

View File

@@ -1,6 +1,6 @@
import type { RadarrMovie } from '$lib/apis/radarr/radarrApi';
import { fetchTmdbMovieImages } from '$lib/apis/tmdbApi';
import type { TmdbMovie } from '$lib/apis/tmdbApi';
import { fetchTmdbMovieImages } from '$lib/apis/tmdb/tmdbApi';
import type { TmdbMovie } from '$lib/apis/tmdb/tmdbApi';
export interface CardProps {
tmdbId: string;

View File

@@ -3,8 +3,8 @@
import ModalContent from '../Modal/ModalContent.svelte';
import { Cross1, Cross2, MagnifyingGlass } from 'radix-icons-svelte';
import IconButton from '../IconButton.svelte';
import { TmdbApi } from '$lib/apis/tmdbApi';
import type { MultiSearchResponse } from '$lib/apis/tmdbApi';
import { TmdbApi } from '$lib/apis/tmdb/tmdbApi';
import type { MultiSearchResponse } from '$lib/apis/tmdb/tmdbApi';
import { TMDB_IMAGES } from '$lib/constants';
import ModalHeader from '../Modal/ModalHeader.svelte';
import { onMount } from 'svelte';

View File

@@ -1,6 +1,6 @@
<script lang="ts">
import { TmdbApi } from '$lib/apis/tmdbApi';
import type { TmdbMovie } from '$lib/apis/tmdbApi';
import { TmdbApi } from '$lib/apis/tmdb/tmdbApi';
import type { TmdbMovie } from '$lib/apis/tmdb/tmdbApi';
import { getContext, onMount } from 'svelte';
import { TMDB_IMAGES } from '$lib/constants';
import { formatMinutesToTime } from '$lib/utils';

View File

@@ -10,14 +10,14 @@
let isRequestModalVisible = false;
export let tmdbId: string;
export let jellyfinStreamDisabled;
export let openJellyfinStream;
export let jellyfinStreamDisabled: boolean;
export let openJellyfinStream: () => void;
let response;
let response: Promise<any>;
const headerStyle = 'uppercase tracking-widest font-bold';
let refetchTimeout;
let refetchTimeout: NodeJS.Timeout;
let isRefetching = false;
async function refetch() {
console.log('refetching...');

View File

@@ -4,8 +4,8 @@
import { fade, fly } from 'svelte/transition';
import { TMDB_IMAGES } from '$lib/constants';
import Button from '$lib/components/Button.svelte';
import type { CastMember, TmdbMovie, Video } from '$lib/apis/tmdbApi';
import { fetchTmdbMovieCredits, fetchTmdbMovieVideos } from '$lib/apis/tmdbApi';
import type { CastMember, TmdbMovie, Video } from '$lib/apis/tmdb/tmdbApi';
import { fetchTmdbMovieCredits, fetchTmdbMovieVideos } from '$lib/apis/tmdb/tmdbApi';
import LibraryDetails from './LibraryDetails.svelte';
import { getJellyfinItemByTmdbId } from '$lib/apis/jellyfin/jellyfinApi';
import HeightHider from '../HeightHider.svelte';

View File

@@ -4,6 +4,7 @@
import StatsPlaceholder from './StatsPlaceholder.svelte';
import StatsContainer from './StatsContainer.svelte';
import SonarrIcon from '../svgs/SonarrIcon.svelte';
import { PUBLIC_SONARR_BASE_URL } from '$env/static/public';
export let large = false;
@@ -25,6 +26,7 @@
{large}
title="Sonarr"
subtitle="Shows Provider"
href={PUBLIC_SONARR_BASE_URL}
stats={[
{ title: 'Movies', value: String(moviesAmount) },
{ title: 'Space Taken', value: formatSize(120_000_000_000) },