From a31c3c001f2e8028502822bd09971b74d2d6ea5a Mon Sep 17 00:00:00 2001 From: kleponijo <158453666+kleponijo@users.noreply.github.com> Date: Mon, 20 Apr 2026 21:45:05 +0700 Subject: [PATCH] oke --- .../lib/src/firebase_user_repo.dart | 31 +++++++---- packages/user_repository/pubspec.lock | 52 ++++++++++++++++++- packages/user_repository/pubspec.yaml | 4 +- pubspec.lock | 12 ++--- pubspec.yaml | 2 +- 5 files changed, 79 insertions(+), 22 deletions(-) diff --git a/packages/user_repository/lib/src/firebase_user_repo.dart b/packages/user_repository/lib/src/firebase_user_repo.dart index 62890c7..ad1c960 100644 --- a/packages/user_repository/lib/src/firebase_user_repo.dart +++ b/packages/user_repository/lib/src/firebase_user_repo.dart @@ -3,6 +3,7 @@ import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:rxdart/rxdart.dart'; import 'package:user_repository/user_repository.dart'; +import 'package:google_sign_in/google_sign_in.dart'; class FirebaseUserRepo implements UserRepository { final FirebaseAuth _firebaseAuth; @@ -93,21 +94,29 @@ class FirebaseUserRepo implements UserRepository { @override Future signInWithGoogle() async { try { - final GoogleAuthProvider googleProvider = GoogleAuthProvider(); - final UserCredential userCredential = - await _firebaseAuth.signInWithPopup(googleProvider); + final account = await GoogleSignIn.instance.authenticate( + serverClientId: "1234567890-abcxyz.apps.googleusercontent.com", + ); - final User? firebaseUser = userCredential.user; - if (firebaseUser != null) { - // Check if user data already exists in Firestore - final existingUser = await userCollection.doc(firebaseUser.uid).get(); + final auth = await account.authentication; + + final credential = GoogleAuthProvider.credential( + idToken: auth.idToken, + ); + + final userCredential = + await _firebaseAuth.signInWithCredential(credential); + + final user = userCredential.user; + + if (user != null) { + final existingUser = await userCollection.doc(user.uid).get(); if (!existingUser.exists) { - // Create new user data from Google account info final newUser = MyUser( - userId: firebaseUser.uid, - email: firebaseUser.email ?? '', - name: firebaseUser.displayName ?? 'User', + userId: user.uid, + email: user.email ?? '', + name: user.displayName ?? 'User', hasActiveCart: false, ); diff --git a/packages/user_repository/pubspec.lock b/packages/user_repository/pubspec.lock index 6260b95..17d8956 100644 --- a/packages/user_repository/pubspec.lock +++ b/packages/user_repository/pubspec.lock @@ -152,6 +152,54 @@ packages: description: flutter source: sdk version: "0.0.0" + google_identity_services_web: + dependency: transitive + description: + name: google_identity_services_web + sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454" + url: "https://pub.dev" + source: hosted + version: "0.3.3+1" + google_sign_in: + dependency: "direct main" + description: + name: google_sign_in + sha256: "521031b65853b4409b8213c0387d57edaad7e2a949ce6dea0d8b2afc9cb29763" + url: "https://pub.dev" + source: hosted + version: "7.2.0" + google_sign_in_android: + dependency: transitive + description: + name: google_sign_in_android + sha256: be0d0733a6a7c5da165879d844a239aa87587a3c767a9163faedde581f731f76 + url: "https://pub.dev" + source: hosted + version: "7.2.10" + google_sign_in_ios: + dependency: transitive + description: + name: google_sign_in_ios + sha256: ac1e4c1205267cb7999d1d81333fccffdfda29e853f434bbaf71525498bb6950 + url: "https://pub.dev" + source: hosted + version: "6.3.0" + google_sign_in_platform_interface: + dependency: transitive + description: + name: google_sign_in_platform_interface + sha256: "7f59208c42b415a3cca203571128d6f84f885fead2d5b53eb65a9e27f2965bb5" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + google_sign_in_web: + dependency: transitive + description: + name: google_sign_in_web + sha256: d473003eeca892f96a01a64fc803378be765071cb0c265ee872c7f8683245d14 + url: "https://pub.dev" + source: hosted + version: "1.1.3" http: dependency: transitive description: @@ -334,5 +382,5 @@ packages: source: hosted version: "1.1.1" sdks: - dart: ">=3.8.0-0 <4.0.0" - flutter: ">=3.22.0" + dart: ">=3.10.0 <4.0.0" + flutter: ">=3.38.0" diff --git a/packages/user_repository/pubspec.yaml b/packages/user_repository/pubspec.yaml index aa491f8..b3c6629 100644 --- a/packages/user_repository/pubspec.yaml +++ b/packages/user_repository/pubspec.yaml @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - + google_sign_in: ^7.1.1 # equatable: ^2.0.5 firebase_auth: ^6.1.3 cloud_firestore: ^6.1.1 @@ -23,4 +23,4 @@ dev_dependencies: flutter_lints: ^3.0.0 flutter: - uses-material-design: true \ No newline at end of file + uses-material-design: true diff --git a/pubspec.lock b/pubspec.lock index 99e4d46..4241d6c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -300,18 +300,18 @@ packages: dependency: transitive description: name: google_sign_in_android - sha256: "5ec98ab35387c68c0050495bb211bd88375873723a80fae7c2e9266ea0bdd8bb" + sha256: be0d0733a6a7c5da165879d844a239aa87587a3c767a9163faedde581f731f76 url: "https://pub.dev" source: hosted - version: "7.2.7" + version: "7.2.10" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: "234fc2830b55d1bbeb7e05662967691f5994143ff43dc70d3f139d1bbb3b8fb2" + sha256: ac1e4c1205267cb7999d1d81333fccffdfda29e853f434bbaf71525498bb6950 url: "https://pub.dev" source: hosted - version: "6.2.5" + version: "6.3.0" google_sign_in_platform_interface: dependency: transitive description: @@ -324,10 +324,10 @@ packages: dependency: transitive description: name: google_sign_in_web - sha256: "2fc1f941e6443b2d6984f4056a727a3eaeab15d8ee99ba7125d79029be75a1da" + sha256: d473003eeca892f96a01a64fc803378be765071cb0c265ee872c7f8683245d14 url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.3" hooks: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 378b697..df2bb2e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,7 +18,7 @@ dependencies: sdk: flutter flutter_bloc: ^8.1.0 google_fonts: ^8.0.2 - google_sign_in: ^7.2.0 + google_sign_in: ^7.1.1 intl: ^0.20.2 monitoring_repository: path: packages/monitoring_repository