From b68ec64dee2a148d6a52985b063838ababb20bad Mon Sep 17 00:00:00 2001 From: hanif salafi Date: Fri, 10 Jan 2025 10:30:32 +0700 Subject: [PATCH] feat: update fixing error, update csrf --- .../components/notifications-table.tsx | 2 +- .../content-management/download/page.tsx | 2 +- .../content-management/galery/page.tsx | 2 +- .../rewrite/create/[id]/page.tsx | 32 +++++++++---------- .../rewrite/detail/[id]/page.tsx | 2 +- .../content-management/rewrite/page.tsx | 2 +- components/form/blog/blog-form.tsx | 4 +-- components/form/content/audio-detail-form.tsx | 2 +- components/form/content/audio-form.tsx | 4 +-- components/form/content/audio-update-form.tsx | 2 +- components/form/content/image-ai-form.tsx | 2 +- components/form/content/image-detail-form.tsx | 2 +- components/form/content/image-form.tsx | 22 +++++++++---- components/form/content/image-update-form.tsx | 2 +- components/form/content/spit-convert-form.tsx | 2 +- components/form/content/teks-detail-form.tsx | 2 +- components/form/content/teks-form.tsx | 4 +-- components/form/content/teks-update-form.tsx | 2 +- components/form/content/video-detail-form.tsx | 2 +- components/form/content/video-form.tsx | 4 +-- components/form/content/video-update-form.tsx | 2 +- components/landing-page/header-management.tsx | 6 ++-- .../landing-page/sidebar-management.tsx | 6 ++-- components/partials/auth/login-form.tsx | 2 +- components/partials/header/notifications.tsx | 2 +- .../http-config/axios-interceptor-instance.ts | 4 ++- .../http-config/http-interceptor-service.ts | 16 +++++++++- 27 files changed, 81 insertions(+), 55 deletions(-) diff --git a/app/[locale]/(protected)/notifications/components/notifications-table.tsx b/app/[locale]/(protected)/notifications/components/notifications-table.tsx index f079f739..05fda5df 100644 --- a/app/[locale]/(protected)/notifications/components/notifications-table.tsx +++ b/app/[locale]/(protected)/notifications/components/notifications-table.tsx @@ -83,7 +83,7 @@ const NotificationsList: React.FC = () => {
{notifications.length > 0 ? ( - notifications.map((notification) => ( + notifications?.map((notification) => (
{ loading(); const response = await getInfoProfile(); - // console.log(response?.data.data); + // console.log(response?.data?.data); setProfile(response?.data?.data); close(); } diff --git a/app/[locale]/(public)/content-management/galery/page.tsx b/app/[locale]/(public)/content-management/galery/page.tsx index cfecc7fa..797500b8 100644 --- a/app/[locale]/(public)/content-management/galery/page.tsx +++ b/app/[locale]/(public)/content-management/galery/page.tsx @@ -67,7 +67,7 @@ const Galery = (props: any) => { loading(); const response = await getInfoProfile(); - // console.log(response?.data.data); + // console.log(response?.data?.data); setProfile(response?.data?.data); close(); } diff --git a/app/[locale]/(public)/content-management/rewrite/create/[id]/page.tsx b/app/[locale]/(public)/content-management/rewrite/create/[id]/page.tsx index f82b734f..9cba820d 100644 --- a/app/[locale]/(public)/content-management/rewrite/create/[id]/page.tsx +++ b/app/[locale]/(public)/content-management/rewrite/create/[id]/page.tsx @@ -163,30 +163,30 @@ const page = (props: { states?: string }) => { setValue("title", response?.data?.data?.title); setValue("mainKeyword", response?.data?.data?.title); setValue("seo", response?.data?.data?.description); - setContent(response?.data.data); - setIsFromSPIT(response?.data.data?.isFromSPIT); + setContent(response?.data?.data); + setIsFromSPIT(response?.data?.data?.isFromSPIT); setListSuggestion(responseGet?.data?.data); console.log("data list file", response?.data?.data); - // const mainUrl = response?.data.data?.files[0]?.url; - // const ticket = response?.data.data?.files[0]?.ticket; + // const mainUrl = response?.data?.data?.files[0]?.url; + // const ticket = response?.data?.data?.files[0]?.ticket; // const urlBlob = await getBlobContent(mainUrl, ticket); setMain({ - id: response?.data.data?.files[0]?.id, - type: response?.data.data?.fileType.name, - url: Number(response?.data.data?.fileType?.id) == 4 ? response?.data.data?.files[0]?.secondaryUrl : response?.data.data?.files[0]?.url, - thumbnailFileUrl: response?.data.data?.files[0]?.thumbnailFileUrl, - names: response?.data.data?.files[0]?.fileName, - format: response?.data.data?.files[0]?.format, - widthPixel: response?.data.data?.files[0]?.widthPixel, - heightPixel: response?.data.data?.files[0]?.heightPixel, - size: response?.data.data?.files[0]?.size, - caption: response?.data.data?.files[0]?.caption, + id: response?.data?.data?.files[0]?.id, + type: response?.data?.data?.fileType.name, + url: Number(response?.data?.data?.fileType?.id) == 4 ? response?.data?.data?.files[0]?.secondaryUrl : response?.data?.data?.files[0]?.url, + thumbnailFileUrl: response?.data?.data?.files[0]?.thumbnailFileUrl, + names: response?.data?.data?.files[0]?.fileName, + format: response?.data?.data?.files[0]?.format, + widthPixel: response?.data?.data?.files[0]?.widthPixel, + heightPixel: response?.data?.data?.files[0]?.heightPixel, + size: response?.data?.data?.files[0]?.size, + caption: response?.data?.data?.files[0]?.caption, }); // Send Meta Data const metaData = { - title: response?.data.data?.title, - image: response?.data.data?.thumbnailLink, + title: response?.data?.data?.title, + image: response?.data?.data?.thumbnailLink, }; setCookiesEncrypt("meta_data", metaData); diff --git a/app/[locale]/(public)/content-management/rewrite/detail/[id]/page.tsx b/app/[locale]/(public)/content-management/rewrite/detail/[id]/page.tsx index 056fcbf5..74a90820 100644 --- a/app/[locale]/(public)/content-management/rewrite/detail/[id]/page.tsx +++ b/app/[locale]/(public)/content-management/rewrite/detail/[id]/page.tsx @@ -59,7 +59,7 @@ const page = (props: any) => { loading(); const response = await getInfoProfile(); - // console.log(response?.data.data); + // console.log(response?.data?.data); setProfile(response?.data?.data); close(); } diff --git a/app/[locale]/(public)/content-management/rewrite/page.tsx b/app/[locale]/(public)/content-management/rewrite/page.tsx index ae8e1f99..ec35c993 100644 --- a/app/[locale]/(public)/content-management/rewrite/page.tsx +++ b/app/[locale]/(public)/content-management/rewrite/page.tsx @@ -43,7 +43,7 @@ const page = (props: any) => { async function initState() { loading(); const response = await getInfoProfile(); - console.log(response?.data.data); + console.log(response?.data?.data); setProfile(response?.data?.data); close(); } diff --git a/components/form/blog/blog-form.tsx b/components/form/blog/blog-form.tsx index cfddf815..513e7401 100644 --- a/components/form/blog/blog-form.tsx +++ b/components/form/blog/blog-form.tsx @@ -147,7 +147,7 @@ export default function FormBlog() { // // setValue("categoryId", findCategory.id); // setSelectedCategory(findCategory.id); // Set the selected category // const response = await getTagsBySubCategoryId(findCategory.id); - // setTags(response?.data.data); + // setTags(response?.data?.data); // } // } // } catch (error) { @@ -176,7 +176,7 @@ export default function FormBlog() { return; } - const blogId = response?.data.data.id; + const blogId = response?.data?.data.id; if (blogId && thumbnail) { const formMedia = new FormData(); formMedia.append("file", thumbnail); diff --git a/components/form/content/audio-detail-form.tsx b/components/form/content/audio-detail-form.tsx index 952611d6..4eabe091 100644 --- a/components/form/content/audio-detail-form.tsx +++ b/components/form/content/audio-detail-form.tsx @@ -204,7 +204,7 @@ export default function FormAudioDetail() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/form/content/audio-form.tsx b/components/form/content/audio-form.tsx index 4e1983d9..df77cc94 100644 --- a/components/form/content/audio-form.tsx +++ b/components/form/content/audio-form.tsx @@ -395,7 +395,7 @@ export default function FormAudio() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { @@ -467,7 +467,7 @@ export default function FormAudio() { MySwal.fire("Error", response?.message, "error"); return; } - Cookies.set("idCreate", response?.data.data, { expires: 1 }); + Cookies.set("idCreate", response?.data?.data, { expires: 1 }); id = response?.data?.data; // Upload Thumbnail diff --git a/components/form/content/audio-update-form.tsx b/components/form/content/audio-update-form.tsx index af65d77a..0d441faa 100644 --- a/components/form/content/audio-update-form.tsx +++ b/components/form/content/audio-update-form.tsx @@ -163,7 +163,7 @@ export default function FormAudioUpdate() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/form/content/image-ai-form.tsx b/components/form/content/image-ai-form.tsx index 2c206dc2..b8561915 100644 --- a/components/form/content/image-ai-form.tsx +++ b/components/form/content/image-ai-form.tsx @@ -312,7 +312,7 @@ export default function FormImageAI() { if (findCategory) { setSelectedCategory(findCategory.id); const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/form/content/image-detail-form.tsx b/components/form/content/image-detail-form.tsx index b88f67dc..86bd37de 100644 --- a/components/form/content/image-detail-form.tsx +++ b/components/form/content/image-detail-form.tsx @@ -192,7 +192,7 @@ export default function FormImageDetail() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/form/content/image-form.tsx b/components/form/content/image-form.tsx index a9736127..a0375ca3 100644 --- a/components/form/content/image-form.tsx +++ b/components/form/content/image-form.tsx @@ -54,6 +54,7 @@ import { Item } from "@radix-ui/react-dropdown-menu"; import { data } from "jquery"; import { options } from "@fullcalendar/core/preact.js"; import dynamic from "next/dynamic"; +import { getCsrfToken } from "@/service/auth"; interface FileWithPreview extends File { preview: string; @@ -401,7 +402,7 @@ export default function FormImage() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { @@ -468,11 +469,11 @@ export default function FormImage() { const response = await createMedia(requestData); console.log("Form Data Submitted:", requestData); - if (response?.error) { - MySwal.fire("Error", response?.message, "error"); - return; - } - Cookies.set("idCreate", response?.data.data, { expires: 1 }); + // if (response?.error) { + // MySwal.fire("Error", response?.message, "error"); + // return; + // } + Cookies.set("idCreate", response?.data?.data, { expires: 1 }); id = response?.data?.data; // Upload Thumbnail @@ -537,9 +538,18 @@ export default function FormImage() { // const placements = getPlacement(file.placements); // console.log("Placementttt: : ", placements); + + const resCsrf = await getCsrfToken(); + const csrfToken = resCsrf?.data?.token; + console.log("CSRF TOKEN : ", csrfToken); + const headers = { + "Content-Type": "application/json", + "X-XSRF-TOKEN": csrfToken, + }; const upload = new Upload(file, { endpoint: `${process.env.NEXT_PUBLIC_API}/media/file/upload`, + headers: headers, retryDelays: [0, 3000, 6000, 12_000, 24_000], chunkSize: 20_000, metadata: { diff --git a/components/form/content/image-update-form.tsx b/components/form/content/image-update-form.tsx index 98b75969..ae938971 100644 --- a/components/form/content/image-update-form.tsx +++ b/components/form/content/image-update-form.tsx @@ -168,7 +168,7 @@ export default function FormImageUpdate() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/form/content/spit-convert-form.tsx b/components/form/content/spit-convert-form.tsx index 455d7ba1..33959df0 100644 --- a/components/form/content/spit-convert-form.tsx +++ b/components/form/content/spit-convert-form.tsx @@ -204,7 +204,7 @@ export default function FormConvertSPIT() { // setValue("categoryId", findCategory.id); setSelectedCategoryId(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/form/content/teks-detail-form.tsx b/components/form/content/teks-detail-form.tsx index 9e26a5e3..404f143d 100644 --- a/components/form/content/teks-detail-form.tsx +++ b/components/form/content/teks-detail-form.tsx @@ -202,7 +202,7 @@ export default function FormTeksDetail() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/form/content/teks-form.tsx b/components/form/content/teks-form.tsx index 67ea85e0..17439a50 100644 --- a/components/form/content/teks-form.tsx +++ b/components/form/content/teks-form.tsx @@ -395,7 +395,7 @@ export default function FormTeks() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { @@ -466,7 +466,7 @@ export default function FormTeks() { MySwal.fire("Error", response?.message, "error"); return; } - Cookies.set("idCreate", response?.data.data, { expires: 1 }); + Cookies.set("idCreate", response?.data?.data, { expires: 1 }); id = response?.data?.data; // Upload Thumbnail diff --git a/components/form/content/teks-update-form.tsx b/components/form/content/teks-update-form.tsx index 62940383..cfbffae7 100644 --- a/components/form/content/teks-update-form.tsx +++ b/components/form/content/teks-update-form.tsx @@ -159,7 +159,7 @@ export default function FormTeksUpdate() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/form/content/video-detail-form.tsx b/components/form/content/video-detail-form.tsx index c6331988..39cb588c 100644 --- a/components/form/content/video-detail-form.tsx +++ b/components/form/content/video-detail-form.tsx @@ -204,7 +204,7 @@ export default function FormVideoDetail() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/form/content/video-form.tsx b/components/form/content/video-form.tsx index 9b8ed41e..09cccbb1 100644 --- a/components/form/content/video-form.tsx +++ b/components/form/content/video-form.tsx @@ -395,7 +395,7 @@ export default function FormVideo() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { @@ -466,7 +466,7 @@ export default function FormVideo() { MySwal.fire("Error", response?.message, "error"); return; } - Cookies.set("idCreate", response?.data.data, { expires: 1 }); + Cookies.set("idCreate", response?.data?.data, { expires: 1 }); id = response?.data?.data; // Upload Thumbnail diff --git a/components/form/content/video-update-form.tsx b/components/form/content/video-update-form.tsx index 0a40ed06..4ec5a31a 100644 --- a/components/form/content/video-update-form.tsx +++ b/components/form/content/video-update-form.tsx @@ -170,7 +170,7 @@ export default function FormVideoUpdate() { // setValue("categoryId", findCategory.id); setSelectedCategory(findCategory.id); // Set the selected category const response = await getTagsBySubCategoryId(findCategory.id); - setTags(response?.data.data); + setTags(response?.data?.data); } } } catch (error) { diff --git a/components/landing-page/header-management.tsx b/components/landing-page/header-management.tsx index d98c474d..1f2b57e1 100644 --- a/components/landing-page/header-management.tsx +++ b/components/landing-page/header-management.tsx @@ -25,14 +25,14 @@ const HeaderManagement = () => { async function getProvinces() { const response = await getListPorvinces(); - // console.log(response?.data.data); + // console.log(response?.data?.data); setProvince(response?.data?.data); } // async function getDisticts() { // const response = await getListDistricts(); - // console.log(response?.data.data); - // setDistrict(response?.data.data); + // console.log(response?.data?.data); + // setDistrict(response?.data?.data); // } initState(); getProvinces(); // getDisticts(); diff --git a/components/landing-page/sidebar-management.tsx b/components/landing-page/sidebar-management.tsx index 63846867..185f244c 100644 --- a/components/landing-page/sidebar-management.tsx +++ b/components/landing-page/sidebar-management.tsx @@ -26,14 +26,14 @@ const SidebarManagement = () => { async function getProvinces() { const response = await getListPorvinces(); - // console.log(response?.data.data); + // console.log(response?.data?.data); setProvince(response?.data?.data); } // async function getDisticts() { // const response = await getListDistricts(); - // console.log(response?.data.data); - // setDistrict(response?.data.data); + // console.log(response?.data?.data); + // setDistrict(response?.data?.data); // } initState(); getProvinces(); // getDisticts(); diff --git a/components/partials/auth/login-form.tsx b/components/partials/auth/login-form.tsx index cf70b15b..f6478ebe 100644 --- a/components/partials/auth/login-form.tsx +++ b/components/partials/auth/login-form.tsx @@ -11,7 +11,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { cn, setCookiesEncrypt } from "@/lib/utils"; import { Loader2 } from "lucide-react"; -import { getCsrfToken, getProfile, login } from "@/service/auth"; +import { getProfile, login } from "@/service/auth"; import { toast } from "sonner"; import { Link, useRouter } from "@/components/navigation"; import { warning } from "@/lib/swal"; diff --git a/components/partials/header/notifications.tsx b/components/partials/header/notifications.tsx index 20b03a4a..8ceb9e02 100644 --- a/components/partials/header/notifications.tsx +++ b/components/partials/header/notifications.tsx @@ -127,7 +127,7 @@ const Notifications = () => {
- {notifications.map((item: Notification, index: number) => ( + {notifications?.map((item: Notification, index: number) => ( { + console.log("Response interceptor : ", response); return response; }, async function (error) { + console.log("Error interceptor : ", error.response.status); const originalRequest = error.config; if (error.response.status === 401 && !originalRequest._retry) { originalRequest._retry = true; diff --git a/service/http-config/http-interceptor-service.ts b/service/http-config/http-interceptor-service.ts index 90979859..9aa50224 100644 --- a/service/http-config/http-interceptor-service.ts +++ b/service/http-config/http-interceptor-service.ts @@ -1,6 +1,7 @@ import { useRouter } from "next/navigation"; import axiosInterceptorInstance from "./axios-interceptor-instance"; import Cookies from "js-cookie"; +import { getCsrfToken } from "../auth"; export async function httpGetInterceptor(pathUrl: any) { const pathname = window.location.pathname; @@ -35,8 +36,21 @@ export async function httpPostInterceptor( data?: any, headers?: any ) { + const resCsrf = await getCsrfToken(); + const csrfToken = resCsrf?.data?.token; + console.log("CSRF TOKEN : ", csrfToken); + + const defaultHeaders = { + "Content-Type": "application/json", + }; + const mergedHeaders = { + ...defaultHeaders, + ...headers, + ...(csrfToken ? { "X-XSRF-TOKEN": csrfToken } : {}), + }; + const response = await axiosInterceptorInstance - .post(pathUrl, data, headers) + .post(pathUrl, data, { headers: mergedHeaders }) .catch((error) => error.response); console.log("Response interceptor : ", response); if (response?.status == 200 || response?.status == 201) {