From 87839351f25feebe9467bace83d2a14faa1ba836 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 21 Oct 2022 10:55:33 +0700 Subject: [PATCH] TF-1068 Implement save recent login url --- lib/features/caching/adapter/uri_adapter.dart | 18 ------------------ .../caching/config/hive_cache_config.dart | 2 -- .../caching/utils/caching_constants.dart | 3 +-- .../login_url_datasource_impl.dart | 12 +++++++----- .../data/model/recent_login_url_cache.dart | 4 ++-- .../login/domain/model/recent_login_url.dart | 5 ++--- .../login/presentation/login_controller.dart | 10 ++++++++++ 7 files changed, 22 insertions(+), 32 deletions(-) delete mode 100644 lib/features/caching/adapter/uri_adapter.dart diff --git a/lib/features/caching/adapter/uri_adapter.dart b/lib/features/caching/adapter/uri_adapter.dart deleted file mode 100644 index dbf319518..000000000 --- a/lib/features/caching/adapter/uri_adapter.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:hive/hive.dart'; -import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart'; - -class UriAdapter extends TypeAdapter { - @override - final int typeId = CachingConstants.URI_CACHE_IDENTITY; - - @override - Uri read(BinaryReader reader) { - return Uri.parse(reader.readString()); - } - - @override - void write(BinaryWriter writer, Uri obj) { - writer.writeString(obj.toString()); - } - -} \ No newline at end of file diff --git a/lib/features/caching/config/hive_cache_config.dart b/lib/features/caching/config/hive_cache_config.dart index 798b1b4c0..92391291b 100644 --- a/lib/features/caching/config/hive_cache_config.dart +++ b/lib/features/caching/config/hive_cache_config.dart @@ -6,7 +6,6 @@ import 'package:core/utils/app_logger.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:path_provider/path_provider.dart' as path_provider; -import 'package:tmail_ui_user/features/caching/adapter/uri_adapter.dart'; import 'package:tmail_ui_user/features/login/data/local/encryption_key_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/model/account_cache.dart'; import 'package:tmail_ui_user/features/login/data/model/authentication_info_cache.dart'; @@ -76,7 +75,6 @@ class HiveCacheConfig { Hive.registerAdapter(AccountCacheAdapter()); Hive.registerAdapter(EncryptionKeyCacheAdapter()); Hive.registerAdapter(AuthenticationInfoCacheAdapter()); - Hive.registerAdapter(UriAdapter()); Hive.registerAdapter(RecentLoginUrlCacheAdapter()); } diff --git a/lib/features/caching/utils/caching_constants.dart b/lib/features/caching/utils/caching_constants.dart index 2691f6ce5..e94c9136c 100644 --- a/lib/features/caching/utils/caching_constants.dart +++ b/lib/features/caching/utils/caching_constants.dart @@ -11,6 +11,5 @@ class CachingConstants { static const int ACCOUNT_HIVE_CACHE_IDENTIFY = 9; static const int ENCRYPTION_KEY_HIVE_CACHE_IDENTIFY = 10; static const int AUTHENTICATION_INFO_HIVE_CACHE_IDENTIFY = 11; - static const int URI_CACHE_IDENTITY = 12; - static const int LOGIN_URL_CACHE_IDENTITY = 13; + static const int RECENT_LOGIN_URL_HIVE_CACHE_IDENTITY = 12; } \ No newline at end of file diff --git a/lib/features/login/data/datasource_impl/login_url_datasource_impl.dart b/lib/features/login/data/datasource_impl/login_url_datasource_impl.dart index 7fed19e29..07455fc48 100644 --- a/lib/features/login/data/datasource_impl/login_url_datasource_impl.dart +++ b/lib/features/login/data/datasource_impl/login_url_datasource_impl.dart @@ -12,15 +12,17 @@ class LoginUrlDataSourceImpl implements LoginUrlDataSource { @override Future saveLoginUrl(RecentLoginUrl recentLoginUrl) { return Future.sync(() async { - final tmpRecentLoginUrl = recentLoginUrl.url.toString(); - if(await _recentLoginUrlCacheClient.isExistItem(tmpRecentLoginUrl)){ - await _recentLoginUrlCacheClient.updateItem(tmpRecentLoginUrl, recentLoginUrl.toRecentLoginUrlCache()); + if (await _recentLoginUrlCacheClient.isExistItem(recentLoginUrl.url)) { + await _recentLoginUrlCacheClient.updateItem( + recentLoginUrl.url, + recentLoginUrl.toRecentLoginUrlCache()); } else { - await _recentLoginUrlCacheClient.insertItem(tmpRecentLoginUrl, recentLoginUrl.toRecentLoginUrlCache()); + await _recentLoginUrlCacheClient.insertItem( + recentLoginUrl.url, + recentLoginUrl.toRecentLoginUrlCache()); } }).catchError((error) { throw error; }); } - } \ No newline at end of file diff --git a/lib/features/login/data/model/recent_login_url_cache.dart b/lib/features/login/data/model/recent_login_url_cache.dart index b81b98c13..3e5057c76 100644 --- a/lib/features/login/data/model/recent_login_url_cache.dart +++ b/lib/features/login/data/model/recent_login_url_cache.dart @@ -5,11 +5,11 @@ import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart' part 'recent_login_url_cache.g.dart'; -@HiveType(typeId: CachingConstants.LOGIN_URL_CACHE_IDENTITY) +@HiveType(typeId: CachingConstants.RECENT_LOGIN_URL_HIVE_CACHE_IDENTITY) class RecentLoginUrlCache extends HiveObject with EquatableMixin { @HiveField(0) - final Uri url; + final String url; @HiveField(1) final DateTime creationDate; diff --git a/lib/features/login/domain/model/recent_login_url.dart b/lib/features/login/domain/model/recent_login_url.dart index 3822c91cd..bc41eb1f5 100644 --- a/lib/features/login/domain/model/recent_login_url.dart +++ b/lib/features/login/domain/model/recent_login_url.dart @@ -1,13 +1,12 @@ import 'package:equatable/equatable.dart'; class RecentLoginUrl with EquatableMixin { - final Uri url; + final String url; final DateTime creationDate; RecentLoginUrl(this.url, this.creationDate); - factory RecentLoginUrl.now(Uri url) => - RecentLoginUrl(url, DateTime.now()); + factory RecentLoginUrl.now(String url) => RecentLoginUrl(url, DateTime.now()); @override List get props => [url, creationDate]; diff --git a/lib/features/login/presentation/login_controller.dart b/lib/features/login/presentation/login_controller.dart index ab1a8ff48..76c845b1f 100644 --- a/lib/features/login/presentation/login_controller.dart +++ b/lib/features/login/presentation/login_controller.dart @@ -6,6 +6,7 @@ import 'package:get/get.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart'; +import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; import 'package:tmail_ui_user/features/login/domain/state/authenticate_oidc_on_browser_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/authentication_user_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/check_oidc_is_available_state.dart'; @@ -125,6 +126,7 @@ class LoginController extends BaseController { } void handleNextInUrlInputFormPress() { + _saveRecentLoginUrl(); _checkOIDCIsAvailable(); } @@ -330,6 +332,14 @@ class LoginController extends BaseController { setUrlText(urlInputController.text); } + void _saveRecentLoginUrl() { + if (_urlText?.isNotEmpty == true && !BuildUtils.isWeb) { + final recentLoginUrl = RecentLoginUrl.now(_urlText!); + log('LoginController::_saveRecentLoginUrl(): $recentLoginUrl'); + consumeState(_saveLoginUrlOnMobileInteractor.execute(recentLoginUrl)); + } + } + @override void onClose() { urlInputController.clear();