import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:qpay/abstracts/AbstractController.dart'; import 'package:qpay/http/http.dart'; import 'package:qpay/models/api_response.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../onboarding_controller.dart'; class PhoneModel { bool isLoading = false; String? errorMessage; String? status = 'failed'; } class PhoneController extends AbstractController { PhoneModel model = PhoneModel(); @override BuildContext context; late OnboardingController onboardingController; late SharedPreferences prefs; final Http http = Http(); PhoneController(this.context) { onboardingController = Provider.of( context, listen: false, ); } void updatePhone(String phone) { onboardingController.updatePhone(phone); notifyListeners(); } Future>> register() async { prefs = await SharedPreferences.getInstance(); Map user = { "username": onboardingController.model.googleUser?.email, "email": onboardingController.model.googleUser?.email, "firstName": onboardingController.model.googleUser?.displayName?.split(" ").first, "lastName": onboardingController.model.googleUser?.displayName?.split(" ").last, "password": onboardingController.model.googleUser?.id, "photoUrl": onboardingController.model.googleUser?.photoUrl, "phone": onboardingController.model.phone, "tempUid": prefs.get("userId") }; try { model.isLoading = true; Map response = await http.post( '/auth/register', user ); model.status = response['state']; if(response['state'] == 'failed') { model.errorMessage = response['message']; showErrorSnackBar(model.errorMessage); model.isLoading = false; notifyListeners(); return ApiResponse.failure(response['message'] ?? "Registration failed"); } Map body = response['body']; body['workflowId'] = response['workflowId']; onboardingController.updateModel(body); model.isLoading = false; notifyListeners(); return ApiResponse.success(Map.from(body)); } catch (e) { logger.e(e); showErrorSnackBar( "Problem during registration, please try again or contact support?", ); model.isLoading = false; notifyListeners(); return ApiResponse.failure("Problem during registration, please try again or contact support?"); } } }