Files
velocity-pay-flutter/lib/screens/onboarding/phone/phone_controller.dart
2025-09-27 01:09:05 +02:00

73 lines
2.0 KiB
Dart

import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:qpay/abstracts/AbstractController.dart';
import 'package:qpay/http/http.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;
final Http http = Http();
PhoneController(this.context) {
onboardingController = Provider.of<OnboardingController>(
context,
listen: false,
);
}
void updatePhone(String phone) {
onboardingController.updatePhone(phone);
notifyListeners();
}
Future<void> register() async {
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
};
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);
}
Map body = response['body'];
body['workflowId'] = response['workflowId'];
onboardingController.updateModel(body);
} catch (e) {
logger.e(e);
showErrorSnackBar(
"Problem during registration, please try again or contact support?",
);
}
model.isLoading = false;
notifyListeners();
}
}