Add "Playing It Safe" draft and improve type-checking
- Remove most type assertions and improve types - Validate wordCount property - Add "Vore Day" tag - Add licenses
This commit is contained in:
parent
17ef8c652c
commit
fe908a4989
37 changed files with 1309 additions and 841 deletions
|
|
@ -16,7 +16,7 @@ type Props = CollectionEntry<"games">["data"];
|
|||
|
||||
const { props } = Astro;
|
||||
const series = props.series && (await getEntry(props.series));
|
||||
const authors = await getEntries([props.authors].flat());
|
||||
const authorsList = await getEntries(props.authors);
|
||||
const copyrightedCharacters = await formatCopyrightedCharacters(props.copyrightedCharacters);
|
||||
// const relatedStories = (await getEntries(props.relatedStories)).filter((story) => !story.data.isDraft);
|
||||
// const relatedGames = (await getEntries(props.relatedGames)).filter((game) => !game.data.isDraft);
|
||||
|
|
@ -37,7 +37,7 @@ const tags = props.tags.map<{ id: string; name: string }>((tag) => {
|
|||
console.warn(`No "${props.lang}" translation for tag "${tag}"`);
|
||||
return { id, name: tag };
|
||||
}
|
||||
return { id, name: categorizedTags[tag]! };
|
||||
return { id, name: categorizedTags[tag] };
|
||||
});
|
||||
const thumbnail =
|
||||
props.thumbnail &&
|
||||
|
|
@ -128,7 +128,7 @@ const thumbnail =
|
|||
class="mt-1 space-y-2 px-2 font-serif font-light italic text-stone-600 dark:text-stone-200"
|
||||
>
|
||||
<Authors lang={props.lang}>
|
||||
{authors.map((author) => <UserComponent lang={props.lang} user={author} />)}
|
||||
{authorsList.map((author) => <UserComponent user={author} lang={props.lang} />)}
|
||||
</Authors>
|
||||
<div id="platforms">
|
||||
<p>{t(props.lang, "game/platforms", props.platforms)}</p>
|
||||
|
|
@ -140,9 +140,13 @@ const thumbnail =
|
|||
</p>
|
||||
) : null
|
||||
}
|
||||
<div id="content-warning">
|
||||
<p>{props.contentWarning}</p>
|
||||
</div>
|
||||
{
|
||||
props.contentWarning ? (
|
||||
<div id="content-warning">
|
||||
<p>{props.contentWarning}</p>
|
||||
</div>
|
||||
) : null
|
||||
}
|
||||
</section>
|
||||
{
|
||||
thumbnail ? (
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@ if (next && next.data.isDraft) {
|
|||
next = undefined;
|
||||
}
|
||||
const series = props.series && (await getEntry(props.series));
|
||||
const authors = await getEntries([props.authors].flat());
|
||||
const commissioner = props.commissioner && (await getEntry(props.commissioner));
|
||||
const requester = props.requester && (await getEntry(props.requester));
|
||||
const authorsList = await getEntries(props.authors);
|
||||
const commissionersList = props.commissioner && (await getEntries(props.commissioner));
|
||||
const requestersList = props.requester && (await getEntries(props.requester));
|
||||
const copyrightedCharacters = await formatCopyrightedCharacters(props.copyrightedCharacters);
|
||||
const relatedStories = (await getEntries(props.relatedStories)).filter((story) => !story.data.isDraft);
|
||||
// const relatedGames = (await getEntries(props.relatedGames)).filter((game) => !game.data.isDraft);
|
||||
|
|
@ -49,7 +49,7 @@ const tags = props.tags.map<{ id: string; name: string }>((tag) => {
|
|||
console.warn(`No "${props.lang}" translation for tag "${tag}"`);
|
||||
return { id: tagSlug, name: tag };
|
||||
}
|
||||
return { id: tagSlug, name: categorizedTags[tag]! };
|
||||
return { id: tagSlug, name: categorizedTags[tag] };
|
||||
});
|
||||
const thumbnail =
|
||||
props.thumbnail &&
|
||||
|
|
@ -60,7 +60,7 @@ const wordCount = props.wordCount?.toString();
|
|||
<BaseLayout pageTitle={props.title}>
|
||||
<Fragment slot="head">
|
||||
<meta property="og:title" content={props.title} data-pagefind-meta="title[content]" />
|
||||
<meta property="og:description" content={t(props.lang, "story/warnings", wordCount, props.contentWarning.trim())} />
|
||||
<meta property="og:description" content={t(props.lang, "story/warnings", wordCount, props.contentWarning)} />
|
||||
<meta property="og:url" content={Astro.url} data-pagefind-meta="url[content]" />
|
||||
{
|
||||
thumbnail ? (
|
||||
|
|
@ -178,7 +178,7 @@ const wordCount = props.wordCount?.toString();
|
|||
class="mt-1 space-y-2 px-2 font-serif font-light italic text-stone-600 dark:text-stone-200"
|
||||
>
|
||||
<Authors lang={props.lang}>
|
||||
{authors.map((author) => <UserComponent lang={props.lang} user={author} />)}
|
||||
{authorsList.map((author) => <UserComponent user={author} lang={props.lang} />)}
|
||||
</Authors>
|
||||
{
|
||||
props.isDraft ? (
|
||||
|
|
@ -188,22 +188,26 @@ const wordCount = props.wordCount?.toString();
|
|||
) : null
|
||||
}
|
||||
{
|
||||
commissioner && (
|
||||
<Commissioners lang={props.lang}>
|
||||
<UserComponent user={commissioner} lang={props.lang} />
|
||||
</Commissioners>
|
||||
requestersList && (
|
||||
<Requesters lang={props.lang}>
|
||||
{requestersList.map((requester) => (
|
||||
<UserComponent user={requester} lang={props.lang} />
|
||||
))}
|
||||
</Requesters>
|
||||
)
|
||||
}
|
||||
{
|
||||
requester && (
|
||||
<Requesters lang={props.lang}>
|
||||
<UserComponent user={requester} lang={props.lang} />
|
||||
</Requesters>
|
||||
commissionersList && (
|
||||
<Commissioners lang={props.lang}>
|
||||
{commissionersList.map((commissioner) => (
|
||||
<UserComponent user={commissioner} lang={props.lang} />
|
||||
))}
|
||||
</Commissioners>
|
||||
)
|
||||
}
|
||||
<div id="content-warning">
|
||||
<p>
|
||||
{t(props.lang, "story/warnings", wordCount, props.contentWarning.trim())}
|
||||
{t(props.lang, "story/warnings", wordCount, props.contentWarning)}
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue