import 'package:flutter/cupertino.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:qpay/screens/onboarding/onboarding_controller.dart'; class VerifyModel { String? code; bool isLoading = false; String? errorMessage; String? status = 'failed'; } class VerifyController extends AbstractController { late OnboardingController onboardingController; final Http http = Http(); BuildContext context; VerifyModel model = VerifyModel(); VerifyController(this.context){ onboardingController = Provider.of( context, listen: false, ); } void updateCode(String code) { model.code = code; notifyListeners(); } Future>> verifyOtp () async { Map user = { "username": onboardingController.model.googleUser?.email, "otpCode": model.code, "otpType": "REGISTRATION", "workflowId": onboardingController.model.workflowId, }; try { model.isLoading = true; notifyListeners(); Map response = await http.post( '/auth/verify', user ); model.status = response['state']; model.isLoading = false; notifyListeners(); if(response['state'] == 'failed') { model.errorMessage = response['message']; return ApiResponse.failure(response['message'] ?? "Verification failed"); } return ApiResponse.success(Map.from(response)); } catch (e) { logger.e(e); model.isLoading = false; notifyListeners(); return ApiResponse.failure( "Problem during registration, please try again or contact support?", ); } } Future>> resendOtp () async { Map user = { "username": onboardingController.model.googleUser?.email, "phone": onboardingController.model.phone, "workflowId": onboardingController.model.workflowId, }; try { model.isLoading = true; notifyListeners(); Map response = await http.post( '/auth/resend', user ); model.status = response['state']; model.isLoading = false; notifyListeners(); if(response['state'] == 'failed') { model.errorMessage = response['message']; return ApiResponse.failure(response['message'] ?? "Resend failed"); } return ApiResponse.success(Map.from(response)); } catch (e) { logger.e(e); model.isLoading = false; notifyListeners(); return ApiResponse.failure( "Problem during registration, please try again or contact support?", ); } } }