diff --git a/src/api/index.ts b/src/api/index.ts index 462b2e9..f0f3d72 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -29,10 +29,6 @@ export const api = { auth: { isSignedIn: () => Boolean(http.storage.get()?.token), - /** مهمان: فقط با شناسه‌ی دستگاه. refreshToken هم می‌گیرد، پس بعد از یک ساعت نمی‌افتد. */ - guest: (deviceId: string) => - http.post('/auth/session', { type: 'guest', deviceId }).then(saveTokens), - /** * گامِ ۱: پیامکِ کد. `devOtp` فقط وقتی سرور در حالتِ توسعه است برمی‌گردد. * مهلتِ ۴۵ ثانیه، نه ۱۵ِ پیش‌فرض: بک‌اند تا ۱۰+۳۰ ثانیه منتظرِ کاوه‌نگار می‌ماند diff --git a/src/lib/storage.ts b/src/lib/storage.ts index 33f799b..acf3c22 100644 --- a/src/lib/storage.ts +++ b/src/lib/storage.ts @@ -24,21 +24,8 @@ export const store = { }; export const KEYS = { - deviceId: 'deviceId', onboarded: 'tadrisino.onboarded', conversationId: 'tadrisino.conversationId', sound: 'tadrisino.sound', referralCode: 'tadrisino.referralCode', } as const; - -/** شناسه‌ی ثابتِ این مرورگر برای ورودِ مهمان. */ -export function getDeviceId(): string { - let id = store.get(KEYS.deviceId); - if (!id) { - id = globalThis.crypto && 'randomUUID' in crypto - ? crypto.randomUUID() - : `${Date.now()}-${Math.random().toString(36).slice(2)}`; - store.set(KEYS.deviceId, id); - } - return id; -} diff --git a/src/screens/LoginScreen.tsx b/src/screens/LoginScreen.tsx index 105220e..a972a27 100644 --- a/src/screens/LoginScreen.tsx +++ b/src/screens/LoginScreen.tsx @@ -5,17 +5,16 @@ import { InlineError, PrimaryButton } from '@/components/ui'; import { SeyarMascot } from '@/mascots/SeyarMascot'; import { friendlyError } from '@/lib/errors'; import { digitsOnly, toFa } from '@/lib/format'; -import { getDeviceId } from '@/lib/storage'; const OTP_LENGTH = 6; /** همان cooldownِ سرور (OTP_REQUEST_PHONE_COOLDOWN_SECONDS). */ const RESEND_SECONDS = 120; /** - * ورود با شماره (OTP) یا به‌عنوانِ مهمان. + * ورود با شماره (OTP). ورودِ مهمان نداریم: هر کاربر حداقل با شماره ثبت‌نام می‌کند. * - * `upgrade` برای مهمانی است که از صفحه‌ی «من» می‌خواهد شماره ثبت کند؛ آنجا - * گزینه‌ی مهمان نیست و سرور همان کاربر را نگه می‌دارد. + * `upgrade` برای حسابِ مهمانِ قدیمی است (دیگر ساخته نمی‌شود) که از صفحه‌ی «من» + * شماره ثبت می‌کند؛ سرور همان کاربر را نگه می‌دارد. */ export function LoginScreen({ onDone, @@ -30,7 +29,7 @@ export function LoginScreen({ const [phone, setPhone] = useState(''); const [otp, setOtp] = useState(''); const [devOtp, setDevOtp] = useState(null); - const [loading, setLoading] = useState<'login' | 'guest' | null>(null); + const [loading, setLoading] = useState<'login' | null>(null); const [error, setError] = useState(''); const [resendIn, setResendIn] = useState(0); /** درخواستِ پیامک هنوز جواب نداده؛ جدا از `loading` تا واردکردنِ کد قفل نشود. */ @@ -101,21 +100,6 @@ export function LoginScreen({ } } - async function continueAsGuest() { - setError(''); - setLoading('guest'); - try { - await api.auth.guest(getDeviceId()); - onDone(); - } catch (err) { - // قبلاً اینجا یک «مهمانِ محلی» بدونِ توکن ساخته می‌شد و بعد همه‌ی - // درخواست‌ها بی‌صدا شکست می‌خوردند. حالا همین‌جا می‌گوییم چه شده. - setError(friendlyError(err, 'ورودِ مهمان انجام نشد، دوباره امتحان کن')); - } finally { - setLoading(null); - } - } - function onOtpChange(value: string) { const code = digitsOnly(value, OTP_LENGTH); setOtp(code); @@ -216,16 +200,6 @@ export function LoginScreen({ > {step === 'phone' ? 'دریافتِ کدِ تأیید' : 'ورود'} - {!upgrade && ( - - )}