mirror of
https://github.com/wgh136/nysoure.git
synced 2025-12-16 15:51:14 +00:00
feat: frontend support for release date
This commit is contained in:
@@ -25,6 +25,7 @@ import CharacterEditer, { FetchVndbCharactersButton } from "../components/charac
|
|||||||
export default function EditResourcePage() {
|
export default function EditResourcePage() {
|
||||||
const [title, setTitle] = useState<string>("");
|
const [title, setTitle] = useState<string>("");
|
||||||
const [altTitles, setAltTitles] = useState<string[]>([]);
|
const [altTitles, setAltTitles] = useState<string[]>([]);
|
||||||
|
const [releaseDate, setReleaseDate] = useState<string | undefined>(undefined);
|
||||||
const [tags, setTags] = useState<Tag[]>([]);
|
const [tags, setTags] = useState<Tag[]>([]);
|
||||||
const [article, setArticle] = useState<string>("");
|
const [article, setArticle] = useState<string>("");
|
||||||
const [images, setImages] = useState<number[]>([]);
|
const [images, setImages] = useState<number[]>([]);
|
||||||
@@ -61,6 +62,7 @@ export default function EditResourcePage() {
|
|||||||
setLinks(data.links ?? []);
|
setLinks(data.links ?? []);
|
||||||
setGalleryImages(data.gallery ?? []);
|
setGalleryImages(data.gallery ?? []);
|
||||||
setGalleryNsfw(data.galleryNsfw ?? []);
|
setGalleryNsfw(data.galleryNsfw ?? []);
|
||||||
|
setReleaseDate(data.releaseDate ?? undefined);
|
||||||
setCharacters(data.characters ?? []);
|
setCharacters(data.characters ?? []);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
} else {
|
} else {
|
||||||
@@ -108,6 +110,7 @@ export default function EditResourcePage() {
|
|||||||
gallery: galleryImages,
|
gallery: galleryImages,
|
||||||
gallery_nsfw: galleryNsfw,
|
gallery_nsfw: galleryNsfw,
|
||||||
characters: characters,
|
characters: characters,
|
||||||
|
release_date: releaseDate,
|
||||||
});
|
});
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
@@ -194,6 +197,14 @@ export default function EditResourcePage() {
|
|||||||
{t("Add Alternative Title")}
|
{t("Add Alternative Title")}
|
||||||
</button>
|
</button>
|
||||||
<div className={"h-2"}></div>
|
<div className={"h-2"}></div>
|
||||||
|
<p className={"my-1"}>{t("Release Date")}</p>
|
||||||
|
<input
|
||||||
|
type="date"
|
||||||
|
className="input"
|
||||||
|
value={releaseDate || ""}
|
||||||
|
onChange={(e) => setReleaseDate(e.target.value || undefined)}
|
||||||
|
/>
|
||||||
|
<div className={"h-4"}></div>
|
||||||
<p className={"my-1"}>{t("Links")}</p>
|
<p className={"my-1"}>{t("Links")}</p>
|
||||||
<div className={"flex flex-col"}>
|
<div className={"flex flex-col"}>
|
||||||
{links.map((link, index) => {
|
{links.map((link, index) => {
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import CharacterEditer, { FetchVndbCharactersButton } from "../components/charac
|
|||||||
export default function PublishPage() {
|
export default function PublishPage() {
|
||||||
const [title, setTitle] = useState<string>("");
|
const [title, setTitle] = useState<string>("");
|
||||||
const [altTitles, setAltTitles] = useState<string[]>([]);
|
const [altTitles, setAltTitles] = useState<string[]>([]);
|
||||||
|
const [releaseDate, setReleaseDate] = useState<string | undefined>(undefined);
|
||||||
const [tags, setTags] = useState<Tag[]>([]);
|
const [tags, setTags] = useState<Tag[]>([]);
|
||||||
const [article, setArticle] = useState<string>("");
|
const [article, setArticle] = useState<string>("");
|
||||||
const [images, setImages] = useState<number[]>([]);
|
const [images, setImages] = useState<number[]>([]);
|
||||||
@@ -43,9 +44,14 @@ export default function PublishPage() {
|
|||||||
const data = JSON.parse(oldData);
|
const data = JSON.parse(oldData);
|
||||||
setTitle(data.title || "");
|
setTitle(data.title || "");
|
||||||
setAltTitles(data.alternative_titles || []);
|
setAltTitles(data.alternative_titles || []);
|
||||||
|
setReleaseDate(data.release_date || undefined);
|
||||||
setTags(data.tags || []);
|
setTags(data.tags || []);
|
||||||
setArticle(data.article || "");
|
setArticle(data.article || "");
|
||||||
setImages(data.images || []);
|
setImages(data.images || []);
|
||||||
|
setLinks(data.links || []);
|
||||||
|
setGalleryImages(data.gallery || []);
|
||||||
|
setGalleryNsfw(data.gallery_nsfw || []);
|
||||||
|
setCharacters(data.characters || []);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Failed to parse publish_data from localStorage", e);
|
console.error("Failed to parse publish_data from localStorage", e);
|
||||||
}
|
}
|
||||||
@@ -58,11 +64,16 @@ export default function PublishPage() {
|
|||||||
tags: tags,
|
tags: tags,
|
||||||
article: article,
|
article: article,
|
||||||
images: images,
|
images: images,
|
||||||
|
links: links,
|
||||||
|
gallery: galleryImages,
|
||||||
|
gallery_nsfw: galleryNsfw,
|
||||||
|
characters: characters,
|
||||||
|
release_date: releaseDate,
|
||||||
};
|
};
|
||||||
const dataString = JSON.stringify(data);
|
const dataString = JSON.stringify(data);
|
||||||
localStorage.setItem("publish_data", dataString);
|
localStorage.setItem("publish_data", dataString);
|
||||||
}
|
}
|
||||||
}, [altTitles, article, images, tags, title]);
|
}, [altTitles, article, images, tags, title, links, galleryImages, galleryNsfw, characters, releaseDate]);
|
||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -105,6 +116,7 @@ export default function PublishPage() {
|
|||||||
const res = await network.createResource({
|
const res = await network.createResource({
|
||||||
title: title,
|
title: title,
|
||||||
alternative_titles: altTitles,
|
alternative_titles: altTitles,
|
||||||
|
release_date: releaseDate,
|
||||||
tags: tags.map((tag) => tag.id),
|
tags: tags.map((tag) => tag.id),
|
||||||
article: article,
|
article: article,
|
||||||
images: images,
|
images: images,
|
||||||
@@ -201,6 +213,14 @@ export default function PublishPage() {
|
|||||||
{t("Add Alternative Title")}
|
{t("Add Alternative Title")}
|
||||||
</button>
|
</button>
|
||||||
<div className={"h-2"}></div>
|
<div className={"h-2"}></div>
|
||||||
|
<p className={"my-1"}>{t("Release Date")}</p>
|
||||||
|
<input
|
||||||
|
type="date"
|
||||||
|
className="input"
|
||||||
|
value={releaseDate || ""}
|
||||||
|
onChange={(e) => setReleaseDate(e.target.value || undefined)}
|
||||||
|
/>
|
||||||
|
<div className={"h-4"}></div>
|
||||||
<p className={"my-1"}>{t("Links")}</p>
|
<p className={"my-1"}>{t("Links")}</p>
|
||||||
<div className={"flex flex-col"}>
|
<div className={"flex flex-col"}>
|
||||||
{links.map((link, index) => {
|
{links.map((link, index) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user