From 0a95e99efa8c0140104ea744ec0002a6bd7f410c Mon Sep 17 00:00:00 2001 From: hamed <15238-genius.ha@users.noreply.drupalcode.org> Date: Mon, 15 Jun 2026 19:27:18 +0330 Subject: [PATCH] fix(dashboard): wire turns/transactions to real endpoints + fix uuid cookie MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Login now overwrites the uuid cookie with the real user uuid (was the OTP uuid), so server-side profile/dashboard fetches resolve. - getMyAppointments → /api/v1/appointments/user (patient's own bookings; /my/appointments is role-scoped and empty for plain users), read from the double-nested data.data. - getMyPayments → /api/v1/my/payments (new endpoint), read paginated data + meta.totalPages. - Drop the userId path param (both endpoints derive the user from token). Co-Authored-By: Claude Opus 4.8 --- .../sidebars/transactions/index.js | 17 +++++--------- .../userAccount/sidebars/turns/index.js | 22 +++++-------------- .../register/verificationPage/SendReq.js | 2 ++ services/response.js | 4 ++-- 4 files changed, 15 insertions(+), 30 deletions(-) diff --git a/components/dashboard/userAccount/sidebars/transactions/index.js b/components/dashboard/userAccount/sidebars/transactions/index.js index b7bf2a6..ea4d905 100644 --- a/components/dashboard/userAccount/sidebars/transactions/index.js +++ b/components/dashboard/userAccount/sidebars/transactions/index.js @@ -26,12 +26,6 @@ function Transactions({ user, loading }) { const parsedData = safeJsonParse(userInfo); if (!parsedData) { setIsLoading(false); return; } - const userId = parsedData.id || parsedData.uuid; - - if (!userId) { - setIsLoading(false); - return; - } const params = { page, @@ -42,13 +36,14 @@ function Transactions({ user, loading }) { params.status = status; } - const response = await request.getMyPayments(userId, params); + const response = await request.getMyPayments(params); - if (response?.data) { + if (Array.isArray(response?.data)) { setPayments(response.data); - if (response.page) { - setTotalPages(response.page.totalPages); - } + setTotalPages(response?.meta?.totalPages || 1); + } else { + setPayments([]); + setTotalPages(1); } } catch (error) { console.error("Error fetching payments:", error); diff --git a/components/dashboard/userAccount/sidebars/turns/index.js b/components/dashboard/userAccount/sidebars/turns/index.js index 87c9ff0..eec1edc 100644 --- a/components/dashboard/userAccount/sidebars/turns/index.js +++ b/components/dashboard/userAccount/sidebars/turns/index.js @@ -25,14 +25,6 @@ function Turns({ user, setIsTurnsDetails, loading }) { return; } - const parsedData = JSON.parse(userInfo); - const userId = parsedData.id || parsedData.uuid; - - if (!userId) { - setIsLoading(false); - return; - } - const params = { page, limit: 10, @@ -42,19 +34,15 @@ function Turns({ user, setIsTurnsDetails, loading }) { params.status = status; } - const response = await request.getMyAppointments(userId, params); + const response = await request.getMyAppointments(params); + const items = response?.data?.data; - if (response?.data) { - setAppointments(response.data); - if (response.page) { - setTotalPages(response.page.totalPages || 1); - } else { - setTotalPages(1); - } + if (Array.isArray(items)) { + setAppointments(items); } else { setAppointments([]); - setTotalPages(1); } + setTotalPages(1); } catch (error) { console.error("Error fetching appointments:", error); } finally { diff --git a/components/register/verificationPage/SendReq.js b/components/register/verificationPage/SendReq.js index 8c43688..95e2a73 100644 --- a/components/register/verificationPage/SendReq.js +++ b/components/register/verificationPage/SendReq.js @@ -88,6 +88,8 @@ function SendReq({ if (profile?.uuid) { const userInfo = { ...profile, username: profile.mobile_number }; Cookies.set("userInfo", JSON.stringify(userInfo), cookieOptions); + // overwrite the OTP uuid set in handleSetCookie with the real user uuid + Cookies.set("uuid", profile.uuid, cookieOptions); // اگر در صفحه appointment هستیم، به مرحله 3 (Detail) می‌رویم if (setStep) { diff --git a/services/response.js b/services/response.js index 6eb2c61..f76f076 100644 --- a/services/response.js +++ b/services/response.js @@ -70,12 +70,12 @@ export const request = { ...removeTokenHead, }), postAppointment: (data) => api.post(`api/v1/appointment`, data, { requireAuth: true }), - getMyAppointments: (userId, params) => api.get(`api/v1/appointment/my-appointments/${userId}`, { params, requireAuth: true }), + getMyAppointments: (params) => api.get(`api/v1/appointments/user`, { params, requireAuth: true }), postAppointmentPayment: (data) => api.post(`api/v1/payment/appointment`, data, { requireAuth: true }), getPaymentConfig: () => api.get(`api/v1/payment/config`, { requireAuth: true }), getPayment: (uuid) => api.get(`api/v1/payment/${uuid}`, { requireAuth: true }), - getMyPayments: (userId, params) => api.get(`api/v1/payment/my-payments/${userId}`, { params, requireAuth: true }), + getMyPayments: (params) => api.get(`api/v1/my/payments`, { params, requireAuth: true }), postDoctor: (data) => api.post("api/v1/doctor", data), postImageUpload: (data) => api.post("file/upload/clinic_pro/doctor/field_image", data, {