feat : new auth in chicken
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
import 'package:rasadyar_chicken/chicken.dart';
|
||||
import 'package:rasadyar_chicken/data/datasource/local/chicken_local.dart';
|
||||
import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
|
||||
import 'package:rasadyar_core/core.dart';
|
||||
|
||||
import 'chicken_local.dart';
|
||||
|
||||
class ChickenLocalDataSourceImp implements ChickenLocalDataSource {
|
||||
HiveLocalStorage local = diCore.get<HiveLocalStorage>();
|
||||
final String boxName = 'Chicken_Widley_Box';
|
||||
@@ -0,0 +1,13 @@
|
||||
import 'package:rasadyar_chicken/data/models/response/captcha/captcha_response_model.dart';
|
||||
import 'package:rasadyar_chicken/data/models/response/user_info/user_info_model.dart';
|
||||
import 'package:rasadyar_chicken/data/models/response/user_profile_model/user_profile_model.dart';
|
||||
|
||||
abstract class AuthRemoteDataSource {
|
||||
Future<UserProfileModel?> login({required Map<String, dynamic> authRequest});
|
||||
|
||||
Future<void> logout();
|
||||
|
||||
Future<bool> hasAuthenticated();
|
||||
|
||||
Future<UserInfoModel?> getUserInfo(String phoneNumber);
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
import 'package:rasadyar_chicken/data/models/response/user_info/user_info_model.dart';
|
||||
import 'package:rasadyar_chicken/data/models/response/user_profile_model/user_profile_model.dart';
|
||||
import 'package:rasadyar_core/core.dart';
|
||||
|
||||
import 'auth_remote.dart';
|
||||
|
||||
class AuthRemoteDataSourceImp extends AuthRemoteDataSource {
|
||||
final DioRemote _httpClient;
|
||||
final String _BASE_URL = 'auth/api/v1/';
|
||||
|
||||
AuthRemoteDataSourceImp(this._httpClient);
|
||||
|
||||
@override
|
||||
Future<UserProfileModel?> login({required Map<String, dynamic> authRequest}) async {
|
||||
var res = await _httpClient.post<UserProfileModel?>(
|
||||
'/api/login/',
|
||||
data: authRequest,
|
||||
fromJson: UserProfileModel.fromJson,
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
);
|
||||
return res.data;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> logout() {
|
||||
// TODO: implement logout
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> hasAuthenticated() async {
|
||||
final response = await _httpClient.get<bool>(
|
||||
'$_BASE_URL/login/',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
);
|
||||
|
||||
return response.data ?? false;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<UserInfoModel?> getUserInfo(String phoneNumber) async {
|
||||
var res = await _httpClient.post<UserInfoModel?>(
|
||||
'https://userbackend.rasadyaar.ir/api/send_otp/',
|
||||
data: {"mobile": phoneNumber, "state": ""},
|
||||
fromJson: UserInfoModel.fromJson,
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
);
|
||||
return res.data;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:rasadyar_chicken/data/datasource/remote/chicken_remote.dart';
|
||||
|
||||
import 'package:rasadyar_chicken/data/models/request/change_password/change_password_request_model.dart';
|
||||
import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
|
||||
import 'package:rasadyar_chicken/data/models/request/create_steward_free_bar/create_steward_free_bar.dart';
|
||||
@@ -24,6 +24,8 @@ import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_ar
|
||||
hide ProductModel;
|
||||
import 'package:rasadyar_core/core.dart';
|
||||
|
||||
import 'chicken_remote.dart';
|
||||
|
||||
class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource {
|
||||
final DioRemote _httpClient;
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
import 'package:rasadyar_chicken/data/datasource/local/chicken_local_imp.dart';
|
||||
import 'package:rasadyar_chicken/data/datasource/remote/chicken_remote_imp.dart';
|
||||
import 'package:rasadyar_chicken/data/repositories/chicken_repository_imp.dart';
|
||||
import 'package:rasadyar_chicken/hive_registrar.g.dart';
|
||||
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
|
||||
import 'package:rasadyar_chicken/chicken.dart';
|
||||
import 'package:rasadyar_chicken/data/common/dio_error_handler.dart';
|
||||
import 'package:rasadyar_chicken/data/data_source/remote/auth/auth_remote.dart';
|
||||
import 'package:rasadyar_chicken/data/data_source/remote/auth/auth_remote_imp.dart';
|
||||
import 'package:rasadyar_chicken/data/repositories/auth/auth_repository_imp.dart';
|
||||
import 'package:rasadyar_core/core.dart';
|
||||
|
||||
GetIt diChicken = GetIt.instance;
|
||||
|
||||
Future<void> setupChickenDI() async {
|
||||
diChicken.registerSingleton(DioErrorHandler());
|
||||
var tokenService = Get.find<TokenStorageService>();
|
||||
Hive.registerAdapters();
|
||||
diChicken.registerLazySingleton<ChickenLocalDataSourceImp>(() => ChickenLocalDataSourceImp());
|
||||
diChicken.get<ChickenLocalDataSourceImp>().openBox();
|
||||
|
||||
diChicken.registerLazySingleton<AppInterceptor>(
|
||||
() => AppInterceptor(
|
||||
@@ -24,32 +22,53 @@ Future<void> setupChickenDI() async {
|
||||
await tokenService.deleteTokens();
|
||||
Get.offAllNamed(ChickenRoutes.auth, arguments: Module.chicken);
|
||||
},
|
||||
authArguments: Module.chicken,
|
||||
),
|
||||
instanceName: 'chickenInterceptor',
|
||||
);
|
||||
|
||||
tokenService.getBaseUrl();
|
||||
|
||||
diChicken.registerLazySingleton<DioRemote>(() {
|
||||
return DioRemote(
|
||||
baseUrl: tokenService.baseurl.value,
|
||||
interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor'),
|
||||
);
|
||||
}, instanceName: 'chickenDioRemote');
|
||||
|
||||
final dioRemote = diChicken.get<DioRemote>(instanceName: 'chickenDioRemote');
|
||||
|
||||
await dioRemote.init();
|
||||
|
||||
diChicken.registerLazySingleton(() => ChickenRemoteDatasourceImp(dioRemote));
|
||||
|
||||
diChicken.registerLazySingleton<ChickenRepositoryImp>(
|
||||
() => ChickenRepositoryImp(
|
||||
local: diChicken.get<ChickenLocalDataSourceImp>(),
|
||||
remote: diChicken.get<ChickenRemoteDatasourceImp>(),
|
||||
),
|
||||
diChicken.registerLazySingleton<DioRemote>(
|
||||
() =>
|
||||
DioRemote(interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor')),
|
||||
);
|
||||
|
||||
diChicken.registerSingleton(ImagePicker());
|
||||
final dioRemote = diChicken.get<DioRemote>();
|
||||
await dioRemote.init();
|
||||
|
||||
diChicken.registerLazySingleton<AuthRemoteDataSourceImp>(
|
||||
() => AuthRemoteDataSourceImp(diChicken.get<DioRemote>()),
|
||||
);
|
||||
|
||||
diChicken.registerLazySingleton<AuthRepositoryImpl>(
|
||||
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSourceImp>()),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> newSetupAuthDI(String newUrl) async {
|
||||
var tokenService = Get.find<TokenStorageService>();
|
||||
if (tokenService.baseurl.value == null) {
|
||||
await tokenService.saveBaseUrl(newUrl);
|
||||
}
|
||||
|
||||
if (diChicken.isRegistered<DioRemote>()) {
|
||||
await diChicken.unregister<DioRemote>();
|
||||
diChicken.registerLazySingleton<DioRemote>(
|
||||
() => DioRemote(baseUrl: newUrl, interceptors: diChicken.get<AppInterceptor>()),
|
||||
);
|
||||
final dioRemote = diChicken.get<DioRemote>();
|
||||
await dioRemote.init();
|
||||
}
|
||||
|
||||
if (diChicken.isRegistered<AuthRemoteDataSource>()) {
|
||||
await diChicken.unregister<AuthRemoteDataSource>();
|
||||
diChicken.registerLazySingleton<AuthRemoteDataSourceImp>(
|
||||
() => AuthRemoteDataSourceImp(diChicken.get<DioRemote>()),
|
||||
);
|
||||
}
|
||||
|
||||
if (diChicken.isRegistered<AuthRepositoryImpl>()) {
|
||||
await diChicken.unregister<AuthRepositoryImpl>();
|
||||
diChicken.registerLazySingleton<AuthRepositoryImpl>(
|
||||
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import 'package:rasadyar_chicken/data/models/response/user_info/user_info_model.dart';
|
||||
import 'package:rasadyar_chicken/data/models/response/user_profile_model/user_profile_model.dart';
|
||||
|
||||
abstract class AuthRepository {
|
||||
Future<UserProfileModel?> login({required Map<String, dynamic> authRequest});
|
||||
|
||||
Future<void> logout();
|
||||
|
||||
Future<bool> hasAuthenticated();
|
||||
|
||||
Future<UserInfoModel?> getUserInfo(String phoneNumber);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import 'package:rasadyar_chicken/data/data_source/remote/auth/auth_remote.dart';
|
||||
import 'package:rasadyar_chicken/data/models/response/user_info/user_info_model.dart';
|
||||
import 'package:rasadyar_chicken/data/models/response/user_profile_model/user_profile_model.dart';
|
||||
|
||||
import 'auth_repository.dart';
|
||||
|
||||
class AuthRepositoryImpl implements AuthRepository {
|
||||
final AuthRemoteDataSource authRemote;
|
||||
|
||||
AuthRepositoryImpl(this.authRemote);
|
||||
|
||||
@override
|
||||
Future<UserProfileModel?> login({required Map<String, dynamic> authRequest}) async =>
|
||||
await authRemote.login(authRequest: authRequest);
|
||||
|
||||
@override
|
||||
Future<void> logout() async => await authRemote.logout();
|
||||
|
||||
@override
|
||||
Future<bool> hasAuthenticated() async => await authRemote.hasAuthenticated();
|
||||
|
||||
@override
|
||||
Future<UserInfoModel?> getUserInfo(String phoneNumber) async =>
|
||||
await authRemote.getUserInfo(phoneNumber);
|
||||
}
|
||||
@@ -23,7 +23,7 @@ import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_ar
|
||||
hide ProductModel;
|
||||
import 'package:rasadyar_core/core.dart';
|
||||
|
||||
import '../models/request/create_steward_free_bar/create_steward_free_bar.dart';
|
||||
import '../../models/request/create_steward_free_bar/create_steward_free_bar.dart';
|
||||
|
||||
abstract class ChickenRepository {
|
||||
//region Remote
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:rasadyar_chicken/data/datasource/local/chicken_local_imp.dart';
|
||||
import 'package:rasadyar_chicken/data/datasource/remote/chicken_remote_imp.dart';
|
||||
import 'package:rasadyar_chicken/data/data_source/local/chicken_local_imp.dart';
|
||||
import 'package:rasadyar_chicken/data/data_source/remote/chicken/chicken_remote_imp.dart';
|
||||
import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
|
||||
import 'package:rasadyar_chicken/data/models/request/change_password/change_password_request_model.dart';
|
||||
import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
|
||||
Reference in New Issue
Block a user