Add DISALLOWED_IDS to conf

This commit is contained in:
Jip Fr 2023-12-01 14:34:52 +01:00
parent 1f6318360e
commit 43d1e290fc
2 changed files with 41 additions and 0 deletions

View File

@ -7,6 +7,7 @@ interface Config {
TMDB_READ_API_KEY: string;
CORS_PROXY_URL: string;
NORMAL_ROUTER: boolean;
DISALLOWED_IDS: string;
}
export interface RuntimeConfig {
@ -16,6 +17,7 @@ export interface RuntimeConfig {
TMDB_READ_API_KEY: string;
NORMAL_ROUTER: boolean;
PROXY_URLS: string[];
DISALLOWED_IDS: string[];
}
const env: Record<keyof Config, undefined | string> = {
@ -25,6 +27,7 @@ const env: Record<keyof Config, undefined | string> = {
DISCORD_LINK: undefined,
CORS_PROXY_URL: import.meta.env.VITE_CORS_PROXY_URL,
NORMAL_ROUTER: import.meta.env.VITE_NORMAL_ROUTER,
DISALLOWED_IDS: import.meta.env.VITE_DISALLOWED_IDS,
};
// loads from different locations, in order: environment (VITE_{KEY}), window (public/config.js)
@ -61,5 +64,8 @@ export function conf(): RuntimeConfig {
.split(",")
.map((v) => v.trim()),
NORMAL_ROUTER: getKey("NORMAL_ROUTER", "false") === "true",
DISALLOWED_IDS: getKey("DISALLOWED_IDS", "")
.split(",")
.map((v) => v.trim()),
};
}

View File

@ -15,10 +15,12 @@ import {
} from "@/backend/metadata/types/mw";
import { IconPatch } from "@/components/buttons/IconPatch";
import { Icons } from "@/components/Icon";
import { ErrorMessage } from "@/components/layout/ErrorBoundary";
import { Loading } from "@/components/layout/Loading";
import { useGoBack } from "@/hooks/useGoBack";
import { useLoading } from "@/hooks/useLoading";
import { SelectedMediaData, useScrape } from "@/hooks/useScrape";
import { conf } from "@/setup/config";
import { useWatchedItem } from "@/state/watched";
import { MetaController } from "@/video/components/controllers/MetaController";
import { ProgressListenerController } from "@/video/components/controllers/ProgressListenerController";
@ -53,6 +55,31 @@ function MediaViewLoading(props: { onGoBack(): void }) {
);
}
function MediaVIewNotAllowed(props: { onGoBack(): void }) {
const { t } = useTranslation();
return (
<div className="relative flex flex-1 items-center justify-center">
<Helmet>
<title>{t("videoPlayer.got")}</title>
</Helmet>
<div className="absolute inset-x-0 top-0 px-8 py-6">
<VideoPlayerHeader onClick={props.onGoBack} />
</div>
<div className="flex flex-col items-center">
<ErrorMessage
error={{
name: "Media not allowed",
description:
"this movie is disabled on movie-web and will not be added.",
path: "",
}}
/>
</div>
</div>
);
}
interface MediaViewScrapingProps {
onStream(stream: MWStream): void;
onGoBack(): void;
@ -240,6 +267,14 @@ export function MediaView() {
});
}, [exec, history, params]);
const disallowedEntries = conf().DISALLOWED_IDS.map((id) => id.split("-"));
if (
disallowedEntries.find(
(entry) => meta?.tmdbId === entry[1] && meta?.meta?.type === entry[0]
)
)
return <MediaVIewNotAllowed onGoBack={goBack} />;
if (loading) return <MediaViewLoading onGoBack={goBack} />;
if (error) return <MediaFetchErrorView />;
if (!meta || !selected)