import 'package:dio/dio.dart'; import 'package:get/get.dart'; import 'package:quiz_app/core/endpoint/api_endpoint.dart'; import 'package:quiz_app/data/models/base/base_model.dart'; import 'package:quiz_app/data/models/login/login_request_model.dart'; import 'package:quiz_app/data/models/login/login_response_model.dart'; import 'package:quiz_app/data/models/register/register_request.dart'; import 'package:quiz_app/data/providers/dio_client.dart'; class AuthService extends GetxService { late final Dio dio; @override void onInit() { dio = Get.find().dio; super.onInit(); } Future register(RegisterRequestModel request) async { var data = await dio.post( APIEndpoint.register, data: request.toJson(), ); if (data.statusCode == 200) { return true; } else { throw Exception("Registration failed"); } } Future loginWithEmail(LoginRequestModel request) async { final data = request.toJson(); final response = await dio.post(APIEndpoint.login, data: data); if (response.statusCode == 200) { print(response.data); final baseResponse = BaseResponseModel.fromJson( response.data, (json) => LoginResponseModel.fromJson(json), ); return baseResponse.data!; } else { throw Exception("Login failed"); } } Future loginWithGoogle(String idToken) async { final response = await dio.post( APIEndpoint.loginGoogle, data: {"token_id": idToken}, ); if (response.statusCode == 200) { final baseResponse = BaseResponseModel.fromJson( response.data, (json) => LoginResponseModel.fromJson(json), ); return baseResponse.data!; } else { throw Exception("Google login failed"); } } }