diff --git a/lib/src/components/drawer_menu.dart b/lib/src/components/drawer_menu.dart index 30f7576..09e342f 100644 --- a/lib/src/components/drawer_menu.dart +++ b/lib/src/components/drawer_menu.dart @@ -375,10 +375,10 @@ class DrawerMenu extends StatelessWidget { ), const SizedBox(height: 5), ElevatedButton( - onPressed: () { - AuthenticationRepository.instance.logout(uid!); + onPressed: () async { + await AuthenticationRepository.instance.logout(uid!); - userProvider.initUserProvider(); + userProvider.setNullUser(); }, style: ElevatedButton.styleFrom( backgroundColor: Colors.red, diff --git a/lib/src/controllers/login_email_controller.dart b/lib/src/controllers/login_email_controller.dart index ed29f60..f109c11 100644 --- a/lib/src/controllers/login_email_controller.dart +++ b/lib/src/controllers/login_email_controller.dart @@ -8,8 +8,8 @@ class LoginEmailController extends GetxController { final email = TextEditingController(); final password = TextEditingController(); - void loginUser(String email, String password) { - AuthenticationRepository.instance + Future loginUser(String email, String password) async { + await AuthenticationRepository.instance .loginWithEmailAndPassword(email, password); } } diff --git a/lib/src/controllers/phone_auth_controller.dart b/lib/src/controllers/phone_auth_controller.dart index e1972cd..0a179be 100644 --- a/lib/src/controllers/phone_auth_controller.dart +++ b/lib/src/controllers/phone_auth_controller.dart @@ -7,7 +7,7 @@ class PhoneAuthController extends GetxController { final phoneNo = TextEditingController(); - void phoneAuthentication(String phoneNo) { - AuthenticationRepository.instance.phoneAuthentication(phoneNo); + Future phoneAuthentication(String phoneNo) async { + await AuthenticationRepository.instance.phoneAuthentication(phoneNo); } } diff --git a/lib/src/controllers/register_controller.dart b/lib/src/controllers/register_controller.dart index c0b3bc8..210a85f 100644 --- a/lib/src/controllers/register_controller.dart +++ b/lib/src/controllers/register_controller.dart @@ -8,8 +8,8 @@ class RegisterController extends GetxController { final email = TextEditingController(); final password = TextEditingController(); - void registerUser(String email, String password) { - AuthenticationRepository.instance + Future registerUser(String email, String password) async { + await AuthenticationRepository.instance .createUserWithEmailAndPassword(email, password); } } diff --git a/lib/src/providers/user_provider.dart b/lib/src/providers/user_provider.dart index 307adf6..061cf90 100644 --- a/lib/src/providers/user_provider.dart +++ b/lib/src/providers/user_provider.dart @@ -8,6 +8,7 @@ class UserProvider extends ChangeNotifier { final FirebaseFirestore _firestore = FirebaseFirestore.instance; UserModel? _user; ScoresModel? _score; + Stream>>? _stream; UserProvider() { initUserProvider(); @@ -15,10 +16,11 @@ class UserProvider extends ChangeNotifier { void initUserProvider() { var uid = FirebaseAuth.instance.currentUser?.uid; + print('DesdeProvider $uid'); if (uid == null) return; - - final stream = _firestore.collection('users').doc(uid).snapshots(); - stream.listen((documentSnapshot) async { + print('initUserProvider'); + _stream = _firestore.collection('users').doc(uid).snapshots(); + _stream?.listen((documentSnapshot) async { if (documentSnapshot.exists) { final data = documentSnapshot.data() as Map; _user = UserModel.fromFirestore(data); @@ -32,6 +34,13 @@ class UserProvider extends ChangeNotifier { }); } + void setNullUser() { + _user = null; + _score = null; + _stream = null; + notifyListeners(); + } + UserModel? get user => _user; ScoresModel? get score => _score; } diff --git a/lib/src/screens/login/login.dart b/lib/src/screens/login/login.dart index d7d76d1..abbafd0 100644 --- a/lib/src/screens/login/login.dart +++ b/lib/src/screens/login/login.dart @@ -8,8 +8,10 @@ import 'package:prosappco/src/components/bottom_sheet.dart'; import 'package:prosappco/src/components/primary_btn.dart'; import 'package:prosappco/src/controllers/phone_auth_controller.dart'; import 'package:prosappco/src/models/setting_model.dart'; +import 'package:prosappco/src/providers/user_provider.dart'; import 'package:prosappco/src/screens/code_validation.dart'; import 'package:prosappco/src/screens/web_view.dart'; +import 'package:provider/provider.dart'; import 'package:responsive_builder/responsive_builder.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -171,9 +173,12 @@ class _LoginScreenState extends State { PrimaryButtom( onPressed: () { if (_formKey.currentState!.validate()) { - PhoneAuthController.instance.phoneAuthentication( - completePhoneNumber.trim(), - ); + PhoneAuthController.instance + .phoneAuthentication( + completePhoneNumber.trim(), + ) + .then((value) => + {Provider.of(context).initUserProvider()}); Get.to( () => CodeValidationScreen( phoneNumber: completePhoneNumber.trim(), @@ -341,9 +346,14 @@ class _LoginScreenState extends State { PrimaryButtom( onPressed: () { if (_formKey.currentState!.validate()) { - PhoneAuthController.instance.phoneAuthentication( - completePhoneNumber.trim(), - ); + PhoneAuthController.instance + .phoneAuthentication( + completePhoneNumber.trim(), + ) + .then((value) => { + Provider.of(context) + .initUserProvider() + }); Get.to( () => CodeValidationScreen( phoneNumber: completePhoneNumber.trim(), diff --git a/lib/src/screens/login/login_email.dart b/lib/src/screens/login/login_email.dart index e9ada9a..fdd0087 100644 --- a/lib/src/screens/login/login_email.dart +++ b/lib/src/screens/login/login_email.dart @@ -5,6 +5,8 @@ import 'package:get/get.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/primary_btn.dart'; import 'package:prosappco/src/controllers/login_email_controller.dart'; +import 'package:prosappco/src/providers/user_provider.dart'; +import 'package:provider/provider.dart'; import 'package:responsive_builder/responsive_builder.dart'; class LoginEmailScreen extends StatefulWidget { @@ -555,10 +557,14 @@ class PaddingButtomBottom extends StatelessWidget { child: PrimaryButtom( onPressed: () { if (_formKey.currentState!.validate()) { - LoginEmailController.instance.loginUser( + LoginEmailController.instance + .loginUser( controller.email.text.trim(), controller.password.text.trim(), - ); + ) + .then((value) { + Provider.of(context).initUserProvider(); + }); } }, label: 'Iniciar'), diff --git a/lib/src/screens/register/register.dart b/lib/src/screens/register/register.dart index cee3dea..00188c5 100644 --- a/lib/src/screens/register/register.dart +++ b/lib/src/screens/register/register.dart @@ -9,8 +9,10 @@ import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/primary_btn.dart'; import 'package:prosappco/src/controllers/register_controller.dart'; import 'package:prosappco/src/models/setting_model.dart'; +import 'package:prosappco/src/providers/user_provider.dart'; import 'package:prosappco/src/screens/login/login.dart'; import 'package:prosappco/src/screens/web_view.dart'; +import 'package:provider/provider.dart'; import 'package:responsive_builder/responsive_builder.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -373,10 +375,14 @@ class _RegisterScreenState extends State { child: PrimaryButtom( onPressed: () { if (_formKey.currentState!.validate()) { - RegisterController.instance.registerUser( - controller.email.text.trim(), - controller.password.text.trim(), - ); + RegisterController.instance + .registerUser( + controller.email.text.trim(), + controller.password.text.trim(), + ) + .then((value) => + Provider.of(context) + .initUserProvider()); } }, label: 'Registrarme', @@ -680,10 +686,14 @@ class _RegisterScreenState extends State { child: PrimaryButtom( onPressed: () { if (_formKey.currentState!.validate()) { - RegisterController.instance.registerUser( - controller.email.text.trim(), - controller.password.text.trim(), - ); + RegisterController.instance + .registerUser( + controller.email.text.trim(), + controller.password.text.trim(), + ) + .then((value) => + Provider.of(context) + .initUserProvider()); } }, isEnabled: _isChecked, diff --git a/lib/src/screens/service.dart b/lib/src/screens/service.dart index 7bbb3c4..2fac5f6 100644 --- a/lib/src/screens/service.dart +++ b/lib/src/screens/service.dart @@ -15,6 +15,7 @@ import 'package:prosappco/src/components/drawer_menu.dart'; import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/setting_model.dart'; import 'package:prosappco/src/models/user_model.dart'; +import 'package:prosappco/src/providers/user_provider.dart'; import 'package:prosappco/src/screens/professional.dart'; import 'package:intl/intl.dart'; import 'package:prosappco/src/screens/profile.dart'; @@ -25,6 +26,7 @@ import 'package:prosappco/src/screens/ubicacion.dart'; import 'package:http/http.dart' as http; import 'package:prosappco/src/components/network_utility.dart'; import 'package:package_info_plus/package_info_plus.dart'; +import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; class ServiceScreen extends StatefulWidget { @@ -270,7 +272,6 @@ class _ServiceScreenState extends State { setState(() { appVersion = version; - // print('Version de app $appVersion - version de firebase $settings'); }); if (settings != null) { @@ -331,7 +332,7 @@ class _ServiceScreenState extends State { SettingModel.getSettings().then( (SettingModel value) => setState(() { settings = value.version; - _getAppVersion(); // Llama a _getAppVersion una vez que settings se haya cargado + _getAppVersion(); }), ); }