mirror of
https://github.com/Radiquum/AniX.git
synced 2025-04-06 00:04:39 +00:00
72 lines
2.2 KiB
TypeScript
72 lines
2.2 KiB
TypeScript
"use client";
|
||
import { Card, Button } from "flowbite-react";
|
||
import { useState } from "react";
|
||
import { useUserStore } from "#/store/auth";
|
||
import { ENDPOINTS } from "#/api/config";
|
||
import { useRouter } from "next/navigation";
|
||
|
||
export const CollectionInfoControls = (props: {
|
||
isFavorite: boolean;
|
||
id: number;
|
||
authorId: number;
|
||
isPrivate: boolean;
|
||
}) => {
|
||
const [isFavorite, setIsFavorite] = useState(props.isFavorite);
|
||
const userStore = useUserStore();
|
||
const router = useRouter();
|
||
|
||
async function _addToFavorite() {
|
||
if (userStore.user) {
|
||
setIsFavorite(!isFavorite);
|
||
if (isFavorite) {
|
||
fetch(
|
||
`${ENDPOINTS.collection.favoriteCollections}/delete/${props.id}?token=${userStore.token}`
|
||
);
|
||
} else {
|
||
fetch(
|
||
`${ENDPOINTS.collection.favoriteCollections}/add/${props.id}?token=${userStore.token}`
|
||
);
|
||
}
|
||
}
|
||
}
|
||
|
||
async function _deleteCollection() {
|
||
if (userStore.user) {
|
||
fetch(
|
||
`${ENDPOINTS.collection.delete}/${props.id}?token=${userStore.token}`
|
||
);
|
||
router.push("/collections");
|
||
}
|
||
}
|
||
|
||
return (
|
||
<Card className="w-full h-fit ">
|
||
<Button color={"blue"} onClick={() => _addToFavorite()}>
|
||
<span
|
||
className={`iconify w-6 h-6 mr-2 ${
|
||
isFavorite ? "mdi--heart" : "mdi--heart-outline"
|
||
}`}
|
||
></span>
|
||
{!isFavorite ? "Добавить в избранное" : "Убрать из избранного"}
|
||
</Button>
|
||
{props.isPrivate && (
|
||
<p>Это приватная коллекция, доступ к ней имеете только вы</p>
|
||
)}
|
||
{userStore.user && userStore.user.id == props.authorId && (
|
||
<div className="flex flex-wrap gap-2">
|
||
<Button color={"blue"} className="w-full sm:max-w-64">
|
||
<span className={`iconify w-6 h-6 mr-2 mdi--pencil`}></span>{" "}
|
||
Редактировать
|
||
</Button>
|
||
<Button
|
||
color={"red"}
|
||
className="w-full sm:max-w-64"
|
||
onClick={() => _deleteCollection()}
|
||
>
|
||
<span className={`iconify w-6 h-6 mr-2 mdi--trash`}></span> Удалить
|
||
</Button>
|
||
</div>
|
||
)}
|
||
</Card>
|
||
);
|
||
};
|