TF-4186 Add datasource/repository for save and get company server login info
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
import 'package:tmail_ui_user/features/login/domain/model/company_server_login_info.dart';
|
||||
|
||||
abstract class CompanyServerLoginDataSource {
|
||||
Future<void> saveCompanyServerLoginInfo(CompanyServerLoginInfo loginInfo);
|
||||
|
||||
Future<CompanyServerLoginInfo> getCompanyServerLoginInfo();
|
||||
|
||||
Future<void> removeCompanyServerLoginInfo();
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
import 'package:tmail_ui_user/features/login/data/datasource/company_server_login_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/local/company_server_login_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/model/company_server_login_info.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
|
||||
|
||||
class CompanyServerLoginDatasourceImpl implements CompanyServerLoginDataSource {
|
||||
final CompanyServerLoginCacheManager _loginCacheManager;
|
||||
final ExceptionThrower _exceptionThrower;
|
||||
|
||||
CompanyServerLoginDatasourceImpl(
|
||||
this._loginCacheManager,
|
||||
this._exceptionThrower,
|
||||
);
|
||||
|
||||
@override
|
||||
Future<CompanyServerLoginInfo> getCompanyServerLoginInfo() {
|
||||
return Future.sync(() {
|
||||
return _loginCacheManager.getCompanyServerLoginInfo();
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeCompanyServerLoginInfo() {
|
||||
return Future.sync(() async {
|
||||
return await _loginCacheManager.removeCompanyServerLoginInfo();
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> saveCompanyServerLoginInfo(CompanyServerLoginInfo loginInfo) {
|
||||
return Future.sync(() async {
|
||||
return await _loginCacheManager.saveCompanyServerLoginInfo(loginInfo);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/exceptions/login_exception.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/model/company_server_login_info.dart';
|
||||
|
||||
class CompanyServerLoginCacheManager {
|
||||
static const String _companyServerLoginInfoKey = 'COMPANY_SERVER_LOGIN_INFO';
|
||||
|
||||
const CompanyServerLoginCacheManager(this._sharedPreferences);
|
||||
|
||||
final SharedPreferences _sharedPreferences;
|
||||
|
||||
CompanyServerLoginInfo getCompanyServerLoginInfo() {
|
||||
final userEmail = _sharedPreferences.getString(_companyServerLoginInfoKey);
|
||||
if (userEmail?.trim().isNotEmpty == true) {
|
||||
return CompanyServerLoginInfo(email: userEmail!);
|
||||
} else {
|
||||
throw NotFoundCompanyServerLoginInfoException();
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> saveCompanyServerLoginInfo(
|
||||
CompanyServerLoginInfo companyServerLoginInfo,
|
||||
) async {
|
||||
await _sharedPreferences.setString(
|
||||
_companyServerLoginInfoKey, companyServerLoginInfo.email);
|
||||
}
|
||||
|
||||
Future<void> removeCompanyServerLoginInfo() async {
|
||||
await _sharedPreferences.remove(_companyServerLoginInfoKey);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import 'package:tmail_ui_user/features/login/data/datasource/company_server_login_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/model/company_server_login_info.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/company_server_login_repository.dart';
|
||||
|
||||
class CompanyServerLoginRepositoryImpl implements CompanyServerLoginRepository {
|
||||
final CompanyServerLoginDataSource _serverLoginDataSource;
|
||||
|
||||
CompanyServerLoginRepositoryImpl(this._serverLoginDataSource);
|
||||
|
||||
@override
|
||||
Future<CompanyServerLoginInfo> getCompanyServerLoginInfo() {
|
||||
return _serverLoginDataSource.getCompanyServerLoginInfo();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeCompanyServerLoginInfo() {
|
||||
return _serverLoginDataSource.removeCompanyServerLoginInfo();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> saveCompanyServerLoginInfo(CompanyServerLoginInfo loginInfo) {
|
||||
return _serverLoginDataSource.saveCompanyServerLoginInfo(loginInfo);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user