diff --git a/.cursor/skills/abshode-domain-lookup/learned-notes.md b/.cursor/skills/abshode-domain-lookup/learned-notes.md index 42a8fbf..98a2fb8 100644 --- a/.cursor/skills/abshode-domain-lookup/learned-notes.md +++ b/.cursor/skills/abshode-domain-lookup/learned-notes.md @@ -69,3 +69,5 @@ - 2026-11-03 | چهار قیمت هیرو خانه | `home/desktop/components/DesktopLivePrice.vue` + سرور `ZaarboxPriceService::copperDollarReferences` | مس جهانی=کلید `basemetal_london_copper`، دلار آزاد=`tgju_usd`؛ تن=ضرب، کیلو=تقسیم بر ۱۰۰۰ - 2026-11-03 | چهار قیمت موبایل خانه | `home/components/CurrentPrice.vue` + `composables/useHomeQuoteRows.ts` | همان چهار ردیف دسکتاپ؛ منطق مشترک در useHomeQuoteRows - 2026-11-03 | هاور نمودار دارایی | `assets/index.vue` + `useAssetsPortfolioChart.ts` + `chartAreaPaths.ts` | نزدیک‌ترین نقطهٔ رسم‌شده؛ مقدار همان نمونهٔ دارایی، نه قیمت مس +- 2026-11-04 | لینک دعوتنامه | `utils/referralShare.ts` + لندینگ `pages/login.vue` | `%لینک` = `/login?register=true&id=`؛ لندینگ با `id` به ثبت‌نام اپ ریدایرکت می‌کند +- 2026-11-04 | دکمه ثبت‌نام آیفون | `login/desktop/styles/desktop-auth.less` + `login/index.vue` | موبایل height:auto و اسکرول؛ بنر نصب پایین تا روی دکمه ننشیند diff --git a/src/utils/referralShare.ts b/src/utils/referralShare.ts index 4c8cfa2..f101281 100644 --- a/src/utils/referralShare.ts +++ b/src/utils/referralShare.ts @@ -39,10 +39,12 @@ export function renderInviteLinkText( .replace(/[%٪]\s*نام/gu, userName) } -function resolveReferralLoginLink(referralId?: string | number | null): string { +function resolveReferralRegisterLink(referralId?: string | number | null): string { const id = String(referralId ?? '').trim() if (!id) return '' + const query = `register=true&id=${encodeURIComponent(id)}` + let base = '' try { base = String(useSettingsStore().getSettingByKey('app_url') ?? '').trim() @@ -51,14 +53,14 @@ function resolveReferralLoginLink(referralId?: string | number | null): string { } if (base) { - return `${base.replace(/\/+$/, '')}/login?id=${encodeURIComponent(id)}` + return `${base.replace(/\/+$/, '')}/login?${query}` } if (typeof window !== 'undefined' && window.location?.origin) { - return `${window.location.origin}/login?id=${encodeURIComponent(id)}` + return `${window.location.origin}/login?${query}` } - return `/login?id=${encodeURIComponent(id)}` + return `/login?${query}` } export function getReferralShareText(options: { @@ -67,7 +69,7 @@ export function getReferralShareText(options: { referralId?: string | number | null }) { const userName = options.userName ?? '' - const link = resolveReferralLoginLink(options.referralId) + const link = resolveReferralRegisterLink(options.referralId) return renderInviteLinkText(getInviteLinkTemplate(), { userName, link }) } diff --git a/src/views/login/desktop/styles/desktop-auth.less b/src/views/login/desktop/styles/desktop-auth.less index 4f7570f..841637e 100644 --- a/src/views/login/desktop/styles/desktop-auth.less +++ b/src/views/login/desktop/styles/desktop-auth.less @@ -1190,12 +1190,19 @@ /* ─── موبایل (<768): لوگو + کارت + پشتیبانی، وسط‌چین عمودی ─── */ @media (max-width: 767px) { - .dauth--boursecu { - min-height: 100dvh; + .dauth.dauth--boursecu { + /* 100vh آیفون پشت نوار سافاری است؛ اسکرول داخل 100dvh تا دکمهٔ ثبت‌نام برسد */ + height: 100dvh; + max-height: 100dvh; + min-height: 0; + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; display: flex; flex-direction: column; - justify-content: center; - padding: 12px 0; + justify-content: flex-start; + justify-content: safe center; + padding: 12px 0 calc(24px + env(safe-area-inset-bottom, 0px)); .dauth-page-logo { position: relative; @@ -1218,10 +1225,10 @@ display: flex; flex-direction: column; direction: rtl; - flex: 0 1 auto; + flex: 0 0 auto; gap: 12px; padding: 0 16px; - min-height: 0; + min-height: auto; width: 100%; } @@ -1359,6 +1366,16 @@ margin-top: 12px; font-size: 11px; } + + /* شناور پایین روی دکمهٔ ثبت‌نام می‌نشیند؛ زیر کارت بیاید */ + .dauth-form-support--fab { + position: static !important; + top: auto !important; + left: auto !important; + width: auto !important; + align-self: center; + margin: 4px 0 0; + } } } diff --git a/src/views/login/index.vue b/src/views/login/index.vue index b260749..28eeaed 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -88,24 +88,26 @@ onUnmounted(() => { .desktopConfig, .app-main, - .login-page-root { - min-height: 100dvh !important; - height: auto !important; - max-height: none !important; + .login-page-root, + .dauth.dauth--boursecu { + min-height: 0 !important; + height: 100dvh !important; + max-height: 100dvh !important; overflow-x: hidden !important; overflow-y: auto !important; + -webkit-overflow-scrolling: touch; background: #0b192e !important; } - .dauth--boursecu { - flex: 1 1 auto; - min-height: 100dvh !important; - } - .app-credit-footer--mobile, .app-credit-footer--login { display: none !important; } + + /* بنر نصب روی لاگین منوی پایین ندارد؛ وگرنه روی فیلد و دکمهٔ ثبت‌نام می‌نشیند */ + .pwa-install-banner { + bottom: calc(12px + env(safe-area-inset-bottom, 0px)) !important; + } } }