From 471539804c3962122e1a0c76a97bcb1df5b52603 Mon Sep 17 00:00:00 2001
From: Rama Priyanto
Date: Tue, 21 Jan 2025 18:20:58 +0700
Subject: [PATCH] feat:magazine edit
---
.../form/magazine/create-magazine-form.tsx | 43 ++-
.../form/magazine/edit-magazine-form.tsx | 261 ++++++++++++++++--
components/icons/globals.tsx | 20 ++
service/magazine.tsx | 4 +
4 files changed, 281 insertions(+), 47 deletions(-)
diff --git a/components/form/magazine/create-magazine-form.tsx b/components/form/magazine/create-magazine-form.tsx
index 6e87668..c077722 100644
--- a/components/form/magazine/create-magazine-form.tsx
+++ b/components/form/magazine/create-magazine-form.tsx
@@ -33,7 +33,7 @@ import {
PptIcon,
WordIcon,
} from "@/components/icons/globals";
-import { createMagazine } from "@/service/magazine";
+import { createMagazine, uploadMagazineFile } from "@/service/magazine";
// const CustomEditor = dynamic(
// () => {
@@ -85,11 +85,6 @@ export default function NewCreateMagazineForm() {
const router = useRouter();
const editor = useRef(null);
const [files, setFiles] = useState([]);
- const [useAi, setUseAI] = useState(false);
- const [listCategory, setListCategory] = useState([]);
- const [tag, setTag] = useState("");
- const [thumbnailImg, setThumbnailImg] = useState([]);
- const [selectedMainImage, setSelectedMainImage] = useState();
const { getRootProps, getInputProps } = useDropzone({
onDrop: (acceptedFiles) => {
@@ -160,28 +155,23 @@ export default function NewCreateMagazineForm() {
// rows: values.rows,
};
console.log("formd", formData);
- // const response = await createMagazine(formData);
+ const response = await createMagazine(formData);
- // if (response?.error) {
- // error(response.message);
- // return false;
- // }
- // const magazineId = response?.data?.data?.id;
- // if (files?.length > 0) {
- // const formFiles = new FormData();
+ if (response?.error) {
+ error(response.message);
+ return false;
+ }
+ const magazineId = response?.data?.data?.id;
+ if (files?.length > 0) {
+ const formFiles = new FormData();
- // for (const element of files) {
- // formFiles.append("file", element);
- // const resFile = await uploadArticleFile(magazineId, formFiles);
- // }
- // }
-
- // if (thumbnailImg?.length > 0) {
- // const formFiles = new FormData();
-
- // formFiles.append("file", thumbnailImg[0]);
- // const resFile = await uploadArticleThumbnail(magazineId, formFiles);
- // }
+ for (let i = 0; i < files.length; i++) {
+ formFiles.append("files", files[i]);
+ formFiles.append("title", values.rows[i].title);
+ formFiles.append("file", values.rows[i].description);
+ const resFile = await uploadMagazineFile(magazineId, formFiles);
+ }
+ }
close();
successSubmit("/admin/magazine");
@@ -310,6 +300,7 @@ export default function NewCreateMagazineForm() {
-
- {!isDetail && (
+ {!isDetail && (
+
- )}
+
+ {files.length ? (
+
+ {fileList}
- {files.length ? (
-
- {fileList}
- {files.length > 1 && (
-
-
setFiles([])} size="sm">
- Hapus Semua
+ {/* {files.length > 1 && (
+
+ setFiles([])} size="sm">
+ Hapus Semua
+
+
+ )} */}
+
+ ) : null}
+ {detailfiles?.map((file: any, index: number) => (
+
+
+
+ {renderPreview(file, file.fileName)}
+
+
+
+
Nama File
+
+
+ {file.fileName}
+
+
+ {Math.round(file.size / 100) / 10 > 1000 ? (
+ <>
+ {(Math.round(file.size / 100) / 10000).toFixed(1)}
+ >
+ ) : (
+ <>{(Math.round(file.size / 100) / 10).toFixed(1)}>
+ )}
+ {" kb"}
+
+
+
Judul
+
+ setValue(`rows.${index}.title`, e)
+ }
+ labelPlacement="outside"
+ className="w-full "
+ classNames={{
+ inputWrapper: [
+ "border-1 rounded-lg",
+ "dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
+ ],
+ }}
+ variant="bordered"
+ />
+
Deskripsi
+
+
+
+
handleDeleteFile(file?.id)}
+ >
+
- )}
-
- ) : null}
-
+ ))}
+
+
+ )}
+ {isDetail && (
+
+ {detailfiles?.map((file: any, index: number) => (
+
+
+
+ {renderPreview(file, file.fileName)}
+
+
+
+
Nama File
+
+
+ {file.fileName}
+
+
+ {Math.round(file.size / 100) / 10 > 1000 ? (
+ <>
+ {(Math.round(file.size / 100) / 10000).toFixed(1)}
+ >
+ ) : (
+ <>{(Math.round(file.size / 100) / 10).toFixed(1)}>
+ )}
+ {" kb"}
+
+
+
Judul
+
setValue(`rows.${index}.title`, e)}
+ labelPlacement="outside"
+ className="w-full "
+ classNames={{
+ inputWrapper: [
+ "border-1 rounded-lg",
+ "dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
+ ],
+ }}
+ variant="bordered"
+ />
+
Deskripsi
+
+
+
+ {/*
handleRemoveFile(file)}
+ >
+
+ */}
+
+ ))}
+
+ )}
+
{!isDetail && (
diff --git a/components/icons/globals.tsx b/components/icons/globals.tsx
index bdfad64..f90059a 100644
--- a/components/icons/globals.tsx
+++ b/components/icons/globals.tsx
@@ -128,3 +128,23 @@ export const PptIcon = ({
/>
);
+export const FileIcon = ({
+ size,
+ height = 24,
+ width = 24,
+ fill = "currentColor",
+ ...props
+}: IconSvgProps) => (
+
+);
diff --git a/service/magazine.tsx b/service/magazine.tsx
index 7ba65ce..2a420fe 100644
--- a/service/magazine.tsx
+++ b/service/magazine.tsx
@@ -56,3 +56,7 @@ export async function uploadMagazineFile(id: string, data: any) {
};
return await httpPost(`/magazine-files/${id}`, headers, data);
}
+
+export async function deleteMagazineFiles(id: number) {
+ return await httpDeleteInterceptor(`magazine-files/${id}`);
+}