refactor: Update ImportReviewCard to support AniList ID alongside MyAnimeList ID #28

Merged
rov merged 1 commits from refactor into main 2026-03-29 14:16:23 -03:00
2 changed files with 23 additions and 10 deletions

View File

@ -200,9 +200,9 @@ export interface PageMangaImportJobDTO {
export interface PageableObject { export interface PageableObject {
offset?: number; offset?: number;
paged?: boolean;
pageNumber?: number; pageNumber?: number;
pageSize?: number; pageSize?: number;
paged?: boolean;
unpaged?: boolean; unpaged?: boolean;
sort?: SortObject; sort?: SortObject;
} }
@ -353,7 +353,8 @@ export const DownloadContentArchiveContentArchiveFileType = {
export type ResolveMangaIngestReviewParams = { export type ResolveMangaIngestReviewParams = {
id: number; id: number;
malId: string; malId?: number;
aniListId?: number;
}; };
export type GetContentProvidersParams = { export type GetContentProvidersParams = {

View File

@ -23,6 +23,7 @@ export function ImportReviewCard({
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const [malId, setMalId] = useState(""); const [malId, setMalId] = useState("");
const [aniListId, setAniListId] = useState("");
const { mutate: mutateDeleteImportReview } = useDeleteMangaIngestReview({ const { mutate: mutateDeleteImportReview } = useDeleteMangaIngestReview({
mutation: { mutation: {
@ -47,13 +48,13 @@ export function ImportReviewCard({
}); });
const handleResolve = () => { const handleResolve = () => {
if (!malId.trim()) { if (!malId.trim() && !aniListId.trim()) {
alert("Please enter a MyAnimeList ID"); alert("Please enter an AniListID and/or a MyAnimeList ID");
return; return;
} }
mutateResolveImportReview({ mutateResolveImportReview({
params: { id: importReview.id, malId }, params: { id: importReview.id, malId: Number(malId), aniListId: Number(aniListId) },
}); });
}; };
@ -96,15 +97,26 @@ export function ImportReviewCard({
</div> </div>
<div className="space-y-3"> <div className="space-y-3">
<div> <div className="flex flex-row gap-4 w-full">
<label className="text-sm font-medium">MyAnimeList Manga ID</label> <div className="w-full">
<label className="text-sm font-medium">AniList Manga ID</label>
<Input <Input
placeholder="Enter MAL ID to match manually" placeholder="Enter AniList ID to match manually"
value={malId} value={aniListId}
onChange={(e) => setMalId(e.target.value)} onChange={(e) => setAniListId(e.target.value)}
className="mt-2" className="mt-2"
/> />
</div> </div>
<div className="w-full">
<label className="text-sm font-medium">MyAnimeList Manga ID</label>
<Input
placeholder="Enter MAL ID to match manually"
value={malId}
onChange={(e) => setMalId(e.target.value)}
className="mt-2"
/>
</div>
</div>
<div className="flex gap-2"> <div className="flex gap-2">
<Button <Button