mirror of
https://github.com/movie-web/movie-web.git
synced 2024-11-11 05:55:10 +01:00
Re-implement disallowed ids in v4
This commit is contained in:
parent
ad750ef3d9
commit
4a7c18e3e8
@ -13,11 +13,19 @@ import { Loading } from "@/components/layout/Loading";
|
||||
import { Paragraph } from "@/components/text/Paragraph";
|
||||
import { Title } from "@/components/text/Title";
|
||||
import { ErrorContainer, ErrorLayout } from "@/pages/layouts/ErrorLayout";
|
||||
import { conf } from "@/setup/config";
|
||||
|
||||
export interface MetaPartProps {
|
||||
onGetMeta?: (meta: DetailedMeta, episodeId?: string) => void;
|
||||
}
|
||||
|
||||
function isDisallowedMedia(id: string, type: MWMediaType): boolean {
|
||||
const disallowedEntries = conf().DISALLOWED_IDS.map((v) => v.split("-"));
|
||||
if (disallowedEntries.find((entry) => id === entry[1] && type === entry[0]))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
export function MetaPart(props: MetaPartProps) {
|
||||
const { t } = useTranslation();
|
||||
const params = useParams<{
|
||||
@ -36,6 +44,8 @@ export function MetaPart(props: MetaPartProps) {
|
||||
}
|
||||
if (!data) return null;
|
||||
|
||||
if (isDisallowedMedia(data.id, data.type)) throw new Error("dmca");
|
||||
|
||||
let meta: AsyncReturnType<typeof getMetaFromId> = null;
|
||||
try {
|
||||
meta = await getMetaFromId(data.type, data.id, params.season);
|
||||
@ -68,6 +78,29 @@ export function MetaPart(props: MetaPartProps) {
|
||||
props.onGetMeta?.(meta, epId);
|
||||
}, []);
|
||||
|
||||
if (error && error.message === "dmca") {
|
||||
return (
|
||||
<ErrorLayout>
|
||||
<ErrorContainer>
|
||||
<IconPill icon={Icons.DRAGON}>Removed</IconPill>
|
||||
<Title>Media has been removed</Title>
|
||||
<Paragraph>
|
||||
This media is no longer available due to a takedown notice or
|
||||
copyright claim.
|
||||
</Paragraph>
|
||||
<Button
|
||||
href="/"
|
||||
theme="purple"
|
||||
padding="md:px-12 p-2.5"
|
||||
className="mt-6"
|
||||
>
|
||||
{t("player.metadata.failed.homeButton")}
|
||||
</Button>
|
||||
</ErrorContainer>
|
||||
</ErrorLayout>
|
||||
);
|
||||
}
|
||||
|
||||
if (error) {
|
||||
return (
|
||||
<ErrorLayout>
|
||||
|
@ -67,6 +67,7 @@ export function conf(): RuntimeConfig {
|
||||
NORMAL_ROUTER: getKey("NORMAL_ROUTER", "false") === "true",
|
||||
DISALLOWED_IDS: getKey("DISALLOWED_IDS", "")
|
||||
.split(",")
|
||||
.map((v) => v.trim()), // Should be comma-seperated and contain the media type and ID, formatted like so: movie-753342,movie-753342,movie-753342
|
||||
.map((v) => v.trim())
|
||||
.filter((v) => v.length > 0), // Should be comma-seperated and contain the media type and ID, formatted like so: movie-753342,movie-753342,movie-753342
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user