feat: fetching VNDB characters

This commit is contained in:
2025-11-24 21:24:19 +08:00
parent 79441a7226
commit 762ca44873

View File

@@ -19,7 +19,7 @@ import {
SelectAndUploadImageButton, SelectAndUploadImageButton,
UploadClipboardImageButton, UploadClipboardImageButton,
} from "../components/image_selector.tsx"; } from "../components/image_selector.tsx";
import CharacterEditer from "../components/character_edit.tsx"; import CharacterEditer, { FetchVndbCharactersButton } from "../components/character_edit.tsx";
export default function PublishPage() { export default function PublishPage() {
const [title, setTitle] = useState<string>(""); const [title, setTitle] = useState<string>("");
@@ -436,13 +436,13 @@ export default function PublishPage() {
<div className="grid grid-cols-1 md:grid-cols-2 my-2 gap-4"> <div className="grid grid-cols-1 md:grid-cols-2 my-2 gap-4">
{ {
characters.map((character, index) => { characters.map((character, index) => {
return <CharacterEditer return <CharacterEditer
character={character} character={character}
setCharacter={(newCharacter) => { setCharacter={(newCharacter) => {
const newCharacters = [...characters]; const newCharacters = [...characters];
newCharacters[index] = newCharacter; newCharacters[index] = newCharacter;
setCharacters(newCharacters); setCharacters(newCharacters);
}} }}
onDelete={() => { onDelete={() => {
const newCharacters = [...characters]; const newCharacters = [...characters];
newCharacters.splice(index, 1); newCharacters.splice(index, 1);
@@ -456,12 +456,23 @@ export default function PublishPage() {
className={"btn my-2"} className={"btn my-2"}
type={"button"} type={"button"}
onClick={() => { onClick={() => {
setCharacters([...characters, { name: "", alias: [], cv: "", image: 0, role: "primary"}]); setCharacters([...characters, { name: "", alias: [], cv: "", image: 0, role: "primary" }]);
}} }}
> >
<MdAdd /> <MdAdd />
{t("Add Character")} {t("Add Character")}
</button> </button>
{
links.find(link => link.label.toLowerCase() === "vndb") &&
<div className="ml-4">
<FetchVndbCharactersButton
vnID={links.find(link => link.label.toLowerCase() === "vndb")?.url.split("/").pop() ?? ""}
onFetch={(fetchedCharacters) => {
setCharacters(fetchedCharacters);
}}
/>
</div>
}
</div> </div>
</div> </div>
{error && ( {error && (