fix: support VK ID OAuth 2.1 device_id in frontend

- Extract device_id from VK callback URL query params
- Pass device_id through store → API → backend
- Add useRef guard to prevent useEffect double-fire
- Fix URL validation catch-block anti-pattern in Login
- Improve error extraction in OAuthCallback (show Error.message)
This commit is contained in:
Fringg
2026-03-02 04:10:05 +03:00
parent 3f050396b8
commit 60f16e64e8
4 changed files with 28 additions and 13 deletions

View File

@@ -38,7 +38,12 @@ interface AuthState {
loginWithTelegram: (initData: string) => Promise<void>;
loginWithTelegramWidget: (data: TelegramWidgetData) => Promise<void>;
loginWithEmail: (email: string, password: string) => Promise<void>;
loginWithOAuth: (provider: string, code: string, state: string) => Promise<void>;
loginWithOAuth: (
provider: string,
code: string,
state: string,
deviceId?: string | null,
) => Promise<void>;
registerWithEmail: (
email: string,
password: string,
@@ -295,13 +300,14 @@ export const useAuthStore = create<AuthState>()(
await get().checkAdminStatus();
},
loginWithOAuth: async (provider, code, state) => {
loginWithOAuth: async (provider, code, state, deviceId) => {
const campaignSlug = consumeCampaignSlug();
const referralCode = consumeReferralCode();
const response = await authApi.oauthCallback(
provider,
code,
state,
deviceId,
campaignSlug,
referralCode,
);