b362945195
Adds the third-party social login SDK integration layer (Google + Facebook),
mirroring the Flutter `IAuthPlatform` interface from
`lib/data/services/auth/`. The platform produces identity tokens only; callers
use the existing `authRepository.googleLogin / facebookLogin /
facebookIdLogin` (already migrated) to complete the login.
Architecture (event-bridge pattern):
- `IAuthPlatform` is plain TypeScript (no React dependency)
- `WebAuthPlatform` dispatches DOM `CustomEvent`s; `AuthPlatformBridge`
("use client" component) hosts the React SDK hooks and resolves promises
- `MockAuthPlatform` returns hardcoded tokens when
`NEXT_PUBLIC_USE_MOCK_AUTH=true` (mirrors Dart `kDebugMode` branch)
SDK choices:
- `@react-oauth/google@0.13.5` for Google
- `@greatsumini/react-facebook-login@3.4.0` (maintained fork of
archived `react-facebook`, React 19 compatible) for Facebook
- For Google: uses raw GIS `google.accounts.id.initialize` + `prompt` API
since `@react-oauth/google` does not expose an `id_token` flow variant
(existing `GoogleLoginRequest.idToken` field expects JWT id_token)
Files added:
- src/data/services/auth/{auth_platform,web_auth_platform,
mock_auth_platform,auth_event_bridge,auth_bridge_component,
initialize_google_auth,initialize_facebook_auth,global.d.ts,index}.ts(x)
- src/data/schemas/auth/facebook_user_data.ts (Zod schema)
- src/data/dto/auth/facebook_user_data.ts (DTO class)
Files modified:
- package.json, pnpm-lock.yaml: added 2 deps
- .env.example: 4 new NEXT_PUBLIC_* env vars
- barrelsby.json: registered src/data/services[/auth] directories
- implementation_plan.md: appended third-party auth section
- src/data/dto/{auth,chat,metrics,user}/index.ts: regenerated barrels
- src/data/schemas/{auth,chat,metrics,user}/index.ts: regenerated barrels
Files deleted:
- src/data/storage/index.ts: pre-existing TS2308 conflict (sync + async
`AuthStorage` both re-exported from auto-generated barrel; no consumer
uses the barrel — all imports use direct paths)
Scope (per user direction):
- Client SDK integration only; no React hook/context, no UI, no Apple
- Platform produces tokens; caller drives `authRepository` / `authApi`
- v1 single-popup semantics (concurrent popups overwrite)
- Bridge component is code-ready but NOT mounted in
`src/app/layout.tsx`; next-step UI migration wires the provider chain
Verified: `npx tsc --noEmit` (0 errors), `pnpm lint` (0 errors),
`pnpm build` (Next.js 16.2.7 + Turbopack compiled successfully).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
/**
|
|
* @file Automatically generated by barrelsby.
|
|
*/
|
|
|
|
export * from "./auth/apple_login_request";
|
|
export * from "./auth/facebook_login_request";
|
|
export * from "./auth/facebook_user_data";
|
|
export * from "./auth/fb_id_login_request";
|
|
export * from "./auth/google_login_request";
|
|
export * from "./auth/guest_login_request";
|
|
export * from "./auth/guest_login_response";
|
|
export * from "./auth/login_request";
|
|
export * from "./auth/login_response";
|
|
export * from "./auth/logout_response";
|
|
export * from "./auth/refresh_token_request";
|
|
export * from "./auth/refresh_token_response";
|
|
export * from "./auth/register_request";
|
|
export * from "./auth/send_code_request";
|
|
export * from "./chat/chat_history_response";
|
|
export * from "./chat/chat_message";
|
|
export * from "./chat/chat_send_response";
|
|
export * from "./chat/chat_sync_data";
|
|
export * from "./chat/chat_sync_request";
|
|
export * from "./chat/guest_chat_quota";
|
|
export * from "./chat/image_upload_response";
|
|
export * from "./chat/send_message_request";
|
|
export * from "./chat/stt_data";
|
|
export * from "./chat/sync_message";
|
|
export * from "./metrics/app_event";
|
|
export * from "./metrics/pwa_event";
|
|
export * from "./user/avatar_data";
|
|
export * from "./user/credits_data";
|
|
export * from "./user/credits_history_data";
|
|
export * from "./user/personality_traits";
|
|
export * from "./user/recent_memory";
|
|
export * from "./user/update_profile_request";
|
|
export * from "./user/user";
|
|
export * from "./user/user_stats_response";
|