Compare commits

...
1 Commits
Author SHA1 Message Date
Amirmahdi ec79ea2771 feat: add ispremium 2026-07-01 13:01:19 +03:30
+17
View File
@@ -6,6 +6,7 @@ import { useList } from "@/lib/useResource";
import { useToast } from "@/components/toast";
import { DataTable, type Column } from "@/components/DataTable";
import {
Badge,
Button,
ConfirmDialog,
Field,
@@ -13,6 +14,7 @@ import {
Textarea,
Modal,
PageHeader,
Switch,
} from "@/components/ui";
import { EditIcon, PlusIcon, TrashIcon } from "@/components/icons";
import { ImagePicker } from "@/components/ImagePicker";
@@ -28,6 +30,7 @@ interface Playlist {
image?: unknown;
detail_image_id?: number | null;
detail_image?: unknown;
is_premium?: boolean;
}
interface MusicCategory {
@@ -53,6 +56,7 @@ export default function MusicPlaylistsPage() {
const [imageFile, setImageFile] = useState<File | null>(null);
const [detailImageId, setDetailImageId] = useState<number | null>(null);
const [detailImageFile, setDetailImageFile] = useState<File | null>(null);
const [isPremium, setIsPremium] = useState(false);
const [deleting, setDeleting] = useState<Playlist | null>(null);
const [removing, setRemoving] = useState(false);
@@ -71,6 +75,7 @@ export default function MusicPlaylistsPage() {
setImageFile(null);
setDetailImageId(null);
setDetailImageFile(null);
setIsPremium(false);
setOpen(true);
}
function openEdit(row: Playlist) {
@@ -83,6 +88,7 @@ export default function MusicPlaylistsPage() {
setImageFile(null);
setDetailImageId(row.detail_image_id ?? null);
setDetailImageFile(null);
setIsPremium(row.is_premium ?? false);
setOpen(true);
}
@@ -101,6 +107,7 @@ export default function MusicPlaylistsPage() {
image: imageFile,
detail_image_id: detailImageId,
detail_image: detailImageFile,
is_premium: isPremium,
}),
});
toast.success("پلی‌لیست ویرایش شد.");
@@ -117,6 +124,7 @@ export default function MusicPlaylistsPage() {
image: imageFile,
detail_image_id: detailImageId,
detail_image: detailImageFile,
is_premium: isPremium,
}),
});
toast.success("پلی‌لیست افزوده شد.");
@@ -161,6 +169,13 @@ export default function MusicPlaylistsPage() {
header: "توضیحات",
render: (r) => r.description ?? "—",
},
{
key: "is_premium",
header: "ویژه",
className: "w-20",
render: (r) =>
r.is_premium ? <Badge tone="primary">ویژه</Badge> : <span className="text-muted"></span>,
},
];
return (
@@ -257,6 +272,8 @@ export default function MusicPlaylistsPage() {
/>
</Field>
<Switch checked={isPremium} onChange={setIsPremium} label="ویژه (پرمیوم)" />
{!editing && (
<>
<Field label="دسته‌بندی‌ها">