From d6a2caffe040b69e0908e020fbbe03f9c6f80660 Mon Sep 17 00:00:00 2001 From: safavimohadeseh78 Date: Tue, 10 Nov 2026 11:48:28 +0330 Subject: [PATCH] fix(user): register dialog, KYC modal, and home loading gaps Repair gift-card register success modal text, enforce KYC with correct identity checks, and show skeleton/fallback while home layout loads. Co-authored-by: Cursor --- .../abshode-domain-lookup/learned-notes.md | 3 + src/App.vue | 6 +- src/app/setupRouter.ts | 3 +- src/components/DialogVantOneButton.vue | 106 ++++++++++-------- src/components/RequiredKycModal.vue | 39 +++++-- .../base/home/layouts/HomeLayoutRenderer.vue | 15 +++ src/views/base/home/layouts/registry.ts | 7 +- 7 files changed, 116 insertions(+), 63 deletions(-) diff --git a/.cursor/skills/abshode-domain-lookup/learned-notes.md b/.cursor/skills/abshode-domain-lookup/learned-notes.md index 2bde967..fb17acc 100644 --- a/.cursor/skills/abshode-domain-lookup/learned-notes.md +++ b/.cursor/skills/abshode-domain-lookup/learned-notes.md @@ -1,5 +1,8 @@ # یادداشت‌های یادگیری — abshode-domain-lookup +- 2026-11-10 | مدال موفقیت ثبت‌نام خالی | `DialogVantOneButton.vue` | تم لاگین `color:#fff`؛ بدون teleport متن سفید روی دیالوگ سفید — مثل `DialogVant` با teleport+رنگ تیره +- 2026-11-10 | خانه خالی بدون KYC | `RequiredKycModal` + `HomeLayoutRenderer` | v-model:open روی computed فقط‌خواندنی؛ تشخیص احراز با `isCustomerIdentityVerified`؛ skeleton هنگام lazy layout + فرمت هر خط: - YYYY-MM-DD | موضوع | مسیر فایل(ها) | نکتهٔ ۱ خطی diff --git a/src/App.vue b/src/App.vue index 77d987e..7b689e7 100644 --- a/src/App.vue +++ b/src/App.vue @@ -169,6 +169,7 @@ import { useChatService, } from '@/utils/chat' import { getToken } from '@/utils' +import { isCustomerIdentityVerified } from '@/utils/customerIdentity' import { message } from 'ant-design-vue' import { showBrowserNotification } from '@/utils/browserNotification' @@ -329,7 +330,10 @@ watch( const userStore = useUserStore() const settingsStore = useSettingsStore() const isKycRequired = computed( - () => Boolean(getToken()) && (userStore.userInfo?.is_legal === 0 || !userStore.userInfo?.is_legal), + () => + Boolean(getToken()) && + Boolean(userStore.userInfo) && + !isCustomerIdentityVerified(userStore.userInfo?.is_legal), ) const giftCardFabAccent = computed( diff --git a/src/app/setupRouter.ts b/src/app/setupRouter.ts index f49894b..36f9b08 100644 --- a/src/app/setupRouter.ts +++ b/src/app/setupRouter.ts @@ -8,6 +8,7 @@ import { useAuthStore } from '@/store/useAuthStore' import { recoverMobileViewportAfterAuth } from '@/layouts/composables/useMobileScrollReset' import { getFingerPosition, setFingerPosition } from '@/app/authBoot' import { isGuestHomeQuery } from '@/utils/guestHome' +import { isCustomerIdentityVerified } from '@/utils/customerIdentity' import type { RouteLocationNormalized } from 'vue-router' const PUBLIC_ROUTE_NAMES = ['login', '404', 'educate', 'aboutUs', 'aboutSoftware', 'tvMonitor'] as const @@ -85,7 +86,7 @@ export function setupRouterGuards() { // کاربر احراز هویت نشده نباید بتواند به صفحات داخلی دسترسی پیدا کند if ( userStore.userInfo && - (userStore.userInfo.is_legal === 0 || !userStore.userInfo.is_legal) && + !isCustomerIdentityVerified(userStore.userInfo.is_legal) && !isPublicRoute(to) && to.name !== 'home' ) { diff --git a/src/components/DialogVantOneButton.vue b/src/components/DialogVantOneButton.vue index 27d0812..9a4f294 100644 --- a/src/components/DialogVantOneButton.vue +++ b/src/components/DialogVantOneButton.vue @@ -1,61 +1,71 @@ diff --git a/src/components/RequiredKycModal.vue b/src/components/RequiredKycModal.vue index ba93cc7..d995c0f 100644 --- a/src/components/RequiredKycModal.vue +++ b/src/components/RequiredKycModal.vue @@ -1,13 +1,14 @@ + +