mirror of https://github.com/gabehf/Koito.git
parent
dc5dcbd474
commit
57cc60534d
@ -0,0 +1,79 @@
|
|||||||
|
import { useQuery } from "@tanstack/react-query";
|
||||||
|
import { getAlbum } from "api/api";
|
||||||
|
import { useEffect, useState } from "react"
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
id: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function SetVariousArtists({ id }: Props) {
|
||||||
|
const [err, setErr] = useState('')
|
||||||
|
const [va, setVA] = useState(false)
|
||||||
|
const [success, setSuccess] = useState('')
|
||||||
|
|
||||||
|
const { isPending, isError, data, error } = useQuery({
|
||||||
|
queryKey: [
|
||||||
|
'get-album',
|
||||||
|
{
|
||||||
|
id: id
|
||||||
|
},
|
||||||
|
],
|
||||||
|
queryFn: ({ queryKey }) => {
|
||||||
|
const params = queryKey[1] as { id: number };
|
||||||
|
return getAlbum(params.id);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (data) {
|
||||||
|
setVA(data.is_various_artists)
|
||||||
|
}
|
||||||
|
}, [data])
|
||||||
|
|
||||||
|
if (isError) {
|
||||||
|
return (
|
||||||
|
<p className="error">Error: {error.message}</p>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if (isPending) {
|
||||||
|
return (
|
||||||
|
<p>Loading...</p>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateVA = (val: boolean) => {
|
||||||
|
setErr('');
|
||||||
|
setSuccess('');
|
||||||
|
fetch(`/apis/web/v1/album?id=${id}&is_various_artists=${val}`, { method: 'PATCH' })
|
||||||
|
.then(r => {
|
||||||
|
if (r.ok) {
|
||||||
|
setSuccess('Successfully updated album');
|
||||||
|
} else {
|
||||||
|
r.json().then(r => setErr(r.error));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="w-full">
|
||||||
|
<h2>Mark as Various Artists</h2>
|
||||||
|
<div className="flex flex-col gap-4">
|
||||||
|
<select
|
||||||
|
name="mark-various-artists"
|
||||||
|
id="mark-various-artists"
|
||||||
|
className="w-30 px-3 py-2 rounded-md"
|
||||||
|
value={va.toString()}
|
||||||
|
onChange={(e) => {
|
||||||
|
const val = e.target.value === 'true';
|
||||||
|
setVA(val);
|
||||||
|
updateVA(val);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<option value="true">True</option>
|
||||||
|
<option value="false">False</option>
|
||||||
|
</select>
|
||||||
|
{err && <p className="error">{err}</p>}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
Loading…
Reference in new issue