mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-09 22:57:21 +00:00
117 lines
3.4 KiB
Dart
117 lines
3.4 KiB
Dart
|
|
import 'package:dio/dio.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:syncrow_web/pages/auth/model/region_model.dart';
|
|
import 'package:syncrow_web/pages/auth/model/token.dart';
|
|
import 'package:syncrow_web/services/api/http_service.dart';
|
|
import 'package:syncrow_web/utils/constants/api_const.dart';
|
|
|
|
class AuthenticationAPI {
|
|
static Future<Token> loginWithEmail({required var model}) async {
|
|
final response = await HTTPService().post(
|
|
path: ApiEndpoints.login,
|
|
body: model.toJson(),
|
|
showServerMessage: true,
|
|
expectedResponseModel: (json) {
|
|
return Token.fromJson(json['data']);
|
|
});
|
|
return response;
|
|
}
|
|
|
|
static Future forgetPassword(
|
|
{required var email, required var password,}) async {
|
|
final response = await HTTPService().post(
|
|
path: ApiEndpoints.forgetPassword,
|
|
body: {
|
|
"email": email,
|
|
"password": password
|
|
},
|
|
showServerMessage: true,
|
|
expectedResponseModel: (json) {});
|
|
return response;
|
|
}
|
|
|
|
|
|
static Future<int?> sendOtp({required String email, required String regionUuid}) async {
|
|
try {
|
|
final response = await HTTPService().post(
|
|
path: ApiEndpoints.sendOtp,
|
|
body: {
|
|
"email": email,
|
|
"type": "PASSWORD",
|
|
"regionUuid": regionUuid
|
|
},
|
|
showServerMessage: true,
|
|
expectedResponseModel: (json) {
|
|
return json['data']['cooldown'];
|
|
}
|
|
);
|
|
|
|
return response;
|
|
} on DioException catch (e) {
|
|
if (e.response != null) {
|
|
if (e.response!.statusCode == 400) {
|
|
final errorData = e.response!.data;
|
|
String errorMessage = errorData['message'];
|
|
if(errorMessage=='User not found'){
|
|
return 1;
|
|
}else{
|
|
int cooldown = errorData['data']['cooldown'] ?? 1;
|
|
return cooldown;
|
|
}
|
|
} else {
|
|
debugPrint('Error: ${e.response!.statusCode} - ${e.response!.statusMessage}');
|
|
return 1;
|
|
}
|
|
}
|
|
else {
|
|
debugPrint('Error: ${e.message}');
|
|
return 1;
|
|
}
|
|
} catch (e) {
|
|
debugPrint('Unexpected Error: $e');
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
static Future verifyOtp(
|
|
{required String email, required String otpCode}) async {
|
|
try{
|
|
final response = await HTTPService().post(
|
|
path: ApiEndpoints.verifyOtp,
|
|
body: {"email": email, "type": "PASSWORD", "otpCode": otpCode},
|
|
showServerMessage: true,
|
|
expectedResponseModel: (json) {
|
|
if (json['message'] == 'Otp Verified Successfully') {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
});
|
|
return response;
|
|
}on DioException catch (e){
|
|
if (e.response != null) {
|
|
if (e.response!.statusCode == 400) {
|
|
final errorData = e.response!.data;
|
|
String errorMessage = errorData['message'];
|
|
return errorMessage;
|
|
}
|
|
} else {
|
|
debugPrint('Error: ${e.message}');
|
|
}
|
|
}
|
|
}
|
|
|
|
static Future<List<RegionModel>> fetchRegion() async {
|
|
final response = await HTTPService().get(
|
|
path: ApiEndpoints.getRegion,
|
|
showServerMessage: true,
|
|
expectedResponseModel: (json) {
|
|
return (json as List).map((zone) => RegionModel.fromJson(zone)).toList();
|
|
}
|
|
);
|
|
return response as List<RegionModel>;
|
|
}
|
|
|
|
}
|