diff --git a/android/app/build.gradle b/android/app/build.gradle
index ccfae58f0..36c9d6160 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -41,7 +41,7 @@ android {
defaultConfig {
applicationId "com.linagora.android.teammail"
minSdkVersion 19
- targetSdkVersion 33
+ targetSdkVersion 32
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
// The number of method references in a .dex file cannot exceed 64K
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index af0b19a26..3a1650c90 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -54,11 +54,16 @@
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
+
+
diff --git a/configurations/env.fcm b/configurations/env.fcm
new file mode 100644
index 000000000..341f7206d
--- /dev/null
+++ b/configurations/env.fcm
@@ -0,0 +1,6 @@
+FIREBASE_ANDROID_API_KEY=example
+FIREBASE_ANDROID_APP_ID=example
+FIREBASE_ANDROID_MESSAGING_SENDER_ID=example
+FIREBASE_ANDROID_PROJECT_ID=example
+FIREBASE_ANDROID_DATABASE_URL=https://example.com
+FIREBASE_ANDROID_STORAGE_BUCKET=example.com
\ No newline at end of file
diff --git a/docs/configuration/fcm_configuration.md b/docs/configuration/fcm_configuration.md
index abe9e0cfe..376b2166a 100644
--- a/docs/configuration/fcm_configuration.md
+++ b/docs/configuration/fcm_configuration.md
@@ -6,7 +6,7 @@
- Now only support to Android
### How to config
-1.Add environment of FCM service in [env.file](https://github.com/linagora/tmail-flutter/blob/master/env.file)
+1.Add environment of FCM service in [env.fcm](https://github.com/linagora/tmail-flutter/blob/master/configurations/env.fcm)
```
FIREBASE_ANDROID_API_KEY=abc
FIREBASE_ANDROID_APP_ID=abc
diff --git a/env.file b/env.file
index 8eaf87604..98c0dabdb 100644
--- a/env.file
+++ b/env.file
@@ -1,4 +1,5 @@
-SERVER_URL=http://localhost/
+SERVER_URL=http://localhost
DOMAIN_REDIRECT_URL=http://localhost:3000
WEB_OIDC_CLIENT_ID=teammail-web
APP_GRID_AVAILABLE=supported
+FCM_AVAILABLE=unsupported
\ No newline at end of file
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 2cdf1b9c9..2207fea33 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -55,7 +55,7 @@ PODS:
- firebase_core (2.2.0):
- Firebase/CoreOnly (= 10.1.0)
- Flutter
- - firebase_messaging (14.1.0):
+ - firebase_messaging (14.0.4):
- Firebase/Messaging (= 10.1.0)
- firebase_core
- Flutter
@@ -292,7 +292,7 @@ SPEC CHECKSUMS:
file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95
Firebase: 444b35a9c568a516666213c2f6cccd10cb12559f
firebase_core: d2242c6f318db1d0dcecfbfa491e943337b0d755
- firebase_messaging: 59f435c4cd0d5448e7268a7f70bce9b1287c1742
+ firebase_messaging: 9b704e183cbcc36120b4744eb966c1947baf47a6
FirebaseCore: 55e7ae35991ccca4db03ff8d8df6ed5f17a3e4c7
FirebaseCoreInternal: 091bde13e47bb1c5e9fe397634f3593dc390430f
FirebaseInstallations: 004915af170935e3a583faefd5f8bc851afc220f
diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart
index 0708f73c3..90739b8b4 100644
--- a/lib/features/base/base_controller.dart
+++ b/lib/features/base/base_controller.dart
@@ -1,7 +1,9 @@
import 'package:contact/contact/model/capability_contact.dart';
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
+import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
+import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:forward/forward/capability_forward.dart';
import 'package:get/get.dart';
@@ -17,12 +19,15 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/c
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/bindings/email_rules_interactor_bindings.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forwarding_interactors_bindings.dart';
+import 'package:tmail_ui_user/features/push_notification/domain/exceptions/fcm_exception.dart';
import 'package:tmail_ui_user/features/push_notification/domain/model/capability_push_notification.dart';
import 'package:tmail_ui_user/features/push_notification/presentation/firebase_bindings.dart';
+import 'package:tmail_ui_user/features/push_notification/presentation/firebase_options.dart';
import 'package:tmail_ui_user/main/error/capability_validator.dart';
import 'package:tmail_ui_user/main/exceptions/remote_exception.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
+import 'package:tmail_ui_user/main/utils/app_config.dart';
abstract class BaseController extends GetxController
with MessageDialogActionMixin,
@@ -143,10 +148,16 @@ abstract class BaseController extends GetxController
}
}
- void injectFirebaseBindings(Session? session, AccountId? accountId) {
+ Future injectFCMBindings(Session? session, AccountId? accountId) async {
try {
requireCapability(session!, accountId!, [capabilityPushNotification]);
- FireBaseBindings().dependencies();
+ if(AppConfig.appFCMAvailable) {
+ await dotenv.load(fileName: AppConfig.appFCMConfigurationPath);
+ await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
+ FCMBindings().dependencies();
+ } else {
+ throw NotSupportFCMException();
+ }
} catch(e) {
logError('BaseController::injectFirebaseBindings(): exception: $e');
}
diff --git a/lib/features/caching/caching_manager.dart b/lib/features/caching/caching_manager.dart
index 24cacf1ff..3c72006b0 100644
--- a/lib/features/caching/caching_manager.dart
+++ b/lib/features/caching/caching_manager.dart
@@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:tmail_ui_user/features/caching/account_cache_client.dart';
import 'package:tmail_ui_user/features/caching/email_cache_client.dart';
-import 'package:tmail_ui_user/features/caching/firebase_config_cache_client.dart';
+import 'package:tmail_ui_user/features/caching/fcm_token_cache_client.dart';
import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart';
import 'package:tmail_ui_user/features/caching/recent_search_cache_client.dart';
import 'package:tmail_ui_user/features/caching/state_cache_client.dart';
@@ -13,7 +13,7 @@ class CachingManager {
final EmailCacheClient _emailCacheClient;
final RecentSearchCacheClient _recentSearchCacheClient;
final AccountCacheClient _accountCacheClient;
- final FirebaseCacheClient _firebaseCacheClient;
+ final FcmTokenCacheClient _firebaseCacheClient;
CachingManager(
this._mailboxCacheClient,
diff --git a/lib/features/caching/config/hive_cache_config.dart b/lib/features/caching/config/hive_cache_config.dart
index 963101416..7e8cc9512 100644
--- a/lib/features/caching/config/hive_cache_config.dart
+++ b/lib/features/caching/config/hive_cache_config.dart
@@ -18,7 +18,7 @@ import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_rights_cache.d
import 'package:tmail_ui_user/features/mailbox/data/model/state_cache.dart';
import 'package:tmail_ui_user/features/mailbox/data/model/state_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/data/model/recent_search_cache.dart';
-import 'package:tmail_ui_user/features/push_notification/data/model/firebase_cache.dart';
+import 'package:tmail_ui_user/features/push_notification/data/model/fcm_token_cache.dart';
import 'package:tmail_ui_user/features/thread/data/model/email_address_hive_cache.dart';
import 'package:tmail_ui_user/features/thread/data/model/email_cache.dart';
@@ -79,7 +79,7 @@ class HiveCacheConfig {
Hive.registerAdapter(AuthenticationInfoCacheAdapter());
Hive.registerAdapter(RecentLoginUrlCacheAdapter());
Hive.registerAdapter(RecentLoginUsernameCacheAdapter());
- Hive.registerAdapter(FirebaseCacheAdapter());
+ Hive.registerAdapter(FCMTokenCacheAdapter());
}
Future closeHive() async {
diff --git a/lib/features/caching/firebase_config_cache_client.dart b/lib/features/caching/fcm_token_cache_client.dart
similarity index 54%
rename from lib/features/caching/firebase_config_cache_client.dart
rename to lib/features/caching/fcm_token_cache_client.dart
index e45c9b060..d0dbf486d 100644
--- a/lib/features/caching/firebase_config_cache_client.dart
+++ b/lib/features/caching/fcm_token_cache_client.dart
@@ -1,8 +1,8 @@
import 'package:tmail_ui_user/features/caching/config/hive_cache_client.dart';
-import 'package:tmail_ui_user/features/push_notification/data/model/firebase_cache.dart';
+import 'package:tmail_ui_user/features/push_notification/data/model/fcm_token_cache.dart';
-class FirebaseCacheClient extends HiveCacheClient {
+class FcmTokenCacheClient extends HiveCacheClient {
@override
- String get tableName => 'FirebaseCache';
+ String get tableName => 'FCMTokenCache';
}
\ No newline at end of file
diff --git a/lib/features/caching/utils/caching_constants.dart b/lib/features/caching/utils/caching_constants.dart
index 24450136b..0f9f61e1c 100644
--- a/lib/features/caching/utils/caching_constants.dart
+++ b/lib/features/caching/utils/caching_constants.dart
@@ -13,5 +13,5 @@ class CachingConstants {
static const int AUTHENTICATION_INFO_HIVE_CACHE_IDENTIFY = 11;
static const int RECENT_LOGIN_URL_HIVE_CACHE_IDENTITY = 12;
static const int RECENT_LOGIN_USERNAME_HIVE_CACHE_IDENTITY = 13;
- static const int FIREBASE_CONFIG_CACHE_IDENTITY = 14;
+ static const int FCM_TOKEN_CACHE_IDENTITY = 14;
}
\ No newline at end of file
diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart
index 63c39559f..056c6d092 100644
--- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart
+++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart
@@ -14,7 +14,6 @@ import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
-import 'package:model/firebase/firebase_dto.dart';
import 'package:model/model.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
@@ -65,8 +64,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/extensions/va
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart';
import 'package:tmail_ui_user/features/network_status_handle/presentation/network_connnection_controller.dart';
-import 'package:tmail_ui_user/features/push_notification/domain/usecases/save_firebase_cache_interactor.dart';
-import 'package:tmail_ui_user/features/push_notification/presentation/notification_service.dart';
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
@@ -111,7 +108,6 @@ class MailboxDashBoardController extends ReloadableController {
GetAllVacationInteractor? _getAllVacationInteractor;
UpdateVacationInteractor? _updateVacationInteractor;
- SaveFirebaseCacheInteractor? _saveFirebaseCacheInteractor;
final scaffoldKey = GlobalKey();
final selectedMailbox = Rxn();
@@ -337,7 +333,7 @@ class MailboxDashBoardController extends ReloadableController {
injectAutoCompleteBindings(sessionCurrent, accountId.value);
injectRuleFilterBindings(sessionCurrent, accountId.value);
injectVacationBindings(sessionCurrent, accountId.value);
- injectFirebaseBindings(sessionCurrent, accountId.value);
+ injectFCMBindings(sessionCurrent, accountId.value);
_getVacationResponse();
} else {
reload();
@@ -355,21 +351,6 @@ class MailboxDashBoardController extends ReloadableController {
}
}
- @override
- Future injectFirebaseBindings(Session? session, AccountId? accountId) async {
- try {
- super.injectFirebaseBindings(session, accountId);
- _saveFirebaseCacheInteractor = Get.find();
- await NotificationService.initializeNotificationService();
- NotificationService.onTokenRefresh.listen((token) {
- _saveFirebaseCacheInteractor?.execute(FirebaseDto(token));
- });
- } catch (e) {
- logError('MailboxDashBoardController::injectVacationBindings(): $e');
- }
- }
-
-
Future _getAppVersion() async {
final info = await PackageInfo.fromPlatform();
log('MailboxDashBoardController::_getAppVersion(): ${info.version}');
diff --git a/lib/features/push_notification/data/datasource/fcm_datasource.dart b/lib/features/push_notification/data/datasource/fcm_datasource.dart
new file mode 100644
index 000000000..2c148e08b
--- /dev/null
+++ b/lib/features/push_notification/data/datasource/fcm_datasource.dart
@@ -0,0 +1,10 @@
+
+import 'package:model/fcm/fcm_token_dto.dart';
+
+abstract class FCMDatasource {
+ Future getFCMToken(String accountId);
+
+ Future setFCMToken(FCMTokenDto fcmToken);
+
+ Future deleteFCMToken(String accountId);
+}
\ No newline at end of file
diff --git a/lib/features/push_notification/data/datasource/firebase_datasource.dart b/lib/features/push_notification/data/datasource/firebase_datasource.dart
deleted file mode 100644
index a487128a6..000000000
--- a/lib/features/push_notification/data/datasource/firebase_datasource.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-import 'package:model/firebase/firebase_dto.dart';
-
-abstract class FirebaseDatasource {
- Future getCurrentFirebase();
-
- Future setCurrentFirebase(FirebaseDto newCurrentFirebase);
-
- Future deleteCurrentFirebase(String token);
-}
\ No newline at end of file
diff --git a/lib/features/push_notification/data/datasource_impl/hive_account_datasource_impl.dart b/lib/features/push_notification/data/datasource_impl/hive_account_datasource_impl.dart
deleted file mode 100644
index 6f5a19c35..000000000
--- a/lib/features/push_notification/data/datasource_impl/hive_account_datasource_impl.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-import 'package:model/firebase/firebase_dto.dart';
-import 'package:tmail_ui_user/features/push_notification/data/datasource/firebase_datasource.dart';
-import 'package:tmail_ui_user/features/push_notification/data/local/firebase_cache_manager.dart';
-import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
-
-class HiveFirebaseDatasourceImpl extends FirebaseDatasource {
-
- final FirebaseCacheManager _firebaseCacheManager;
- final ExceptionThrower _exceptionThrower;
-
- HiveFirebaseDatasourceImpl(this._firebaseCacheManager, this._exceptionThrower);
-
- @override
- Future getCurrentFirebase() {
- return Future.sync(() async {
- return await _firebaseCacheManager.getFirebase();
- }).catchError((error) {
- _exceptionThrower.throwException(error);
- });
- }
-
- @override
- Future setCurrentFirebase(FirebaseDto newCurrentFirebase) {
- return Future.sync(() async {
- return await _firebaseCacheManager.setFirebase(newCurrentFirebase);
- }).catchError((error) {
- _exceptionThrower.throwException(error);
- });
- }
-
- @override
- Future deleteCurrentFirebase(String token) {
- return Future.sync(() async {
- return await _firebaseCacheManager.deleteFirebase(token);
- }).catchError((error) {
- _exceptionThrower.throwException(error);
- });
- }
-}
\ No newline at end of file
diff --git a/lib/features/push_notification/data/datasource_impl/hive_fcm_datasource_impl.dart b/lib/features/push_notification/data/datasource_impl/hive_fcm_datasource_impl.dart
new file mode 100644
index 000000000..b89b9f51a
--- /dev/null
+++ b/lib/features/push_notification/data/datasource_impl/hive_fcm_datasource_impl.dart
@@ -0,0 +1,39 @@
+import 'package:model/fcm/fcm_token_dto.dart';
+import 'package:tmail_ui_user/features/push_notification/data/datasource/fcm_datasource.dart';
+import 'package:tmail_ui_user/features/push_notification/data/local/fcm_cache_manager.dart';
+import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
+
+class HiveFCMDatasourceImpl extends FCMDatasource {
+
+ final FCMCacheManager _firebaseCacheManager;
+ final ExceptionThrower _exceptionThrower;
+
+ HiveFCMDatasourceImpl(this._firebaseCacheManager, this._exceptionThrower);
+
+ @override
+ Future getFCMToken(String accountId) {
+ return Future.sync(() async {
+ return await _firebaseCacheManager.getFCMToken(accountId);
+ }).catchError((error) {
+ _exceptionThrower.throwException(error);
+ });
+ }
+
+ @override
+ Future setFCMToken(FCMTokenDto fcmToken) {
+ return Future.sync(() async {
+ return await _firebaseCacheManager.setFCMToken(fcmToken);
+ }).catchError((error) {
+ _exceptionThrower.throwException(error);
+ });
+ }
+
+ @override
+ Future deleteFCMToken(String accountId) {
+ return Future.sync(() async {
+ return await _firebaseCacheManager.deleteFCMToken(accountId);
+ }).catchError((error) {
+ _exceptionThrower.throwException(error);
+ });
+ }
+}
\ No newline at end of file
diff --git a/lib/features/push_notification/data/extensions/fcm_cache_extensions.dart b/lib/features/push_notification/data/extensions/fcm_cache_extensions.dart
new file mode 100644
index 000000000..2e4302849
--- /dev/null
+++ b/lib/features/push_notification/data/extensions/fcm_cache_extensions.dart
@@ -0,0 +1,11 @@
+import 'package:model/fcm/fcm_token_dto.dart';
+import 'package:tmail_ui_user/features/push_notification/data/model/fcm_token_cache.dart';
+
+extension FCMCacheExtension on FCMTokenCache {
+ FCMTokenDto toFCMDto() {
+ return FCMTokenDto(
+ token,
+ accountId,
+ );
+ }
+}
diff --git a/lib/features/push_notification/data/extensions/fcm_extensions.dart b/lib/features/push_notification/data/extensions/fcm_extensions.dart
new file mode 100644
index 000000000..08e477c15
--- /dev/null
+++ b/lib/features/push_notification/data/extensions/fcm_extensions.dart
@@ -0,0 +1,11 @@
+import 'package:model/fcm/fcm_token_dto.dart';
+import 'package:tmail_ui_user/features/push_notification/data/model/fcm_token_cache.dart';
+
+extension FCMExtensions on FCMTokenDto {
+ FCMTokenCache toCache() {
+ return FCMTokenCache(
+ token,
+ accountId,
+ );
+ }
+}
diff --git a/lib/features/push_notification/data/extensions/firebase_cache_extensions.dart b/lib/features/push_notification/data/extensions/firebase_cache_extensions.dart
deleted file mode 100644
index dd0a956b6..000000000
--- a/lib/features/push_notification/data/extensions/firebase_cache_extensions.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-
-import 'package:model/firebase/firebase_dto.dart';
-import 'package:tmail_ui_user/features/push_notification/data/model/firebase_cache.dart';
-
-extension FirebaseCacheExtension on FirebaseCache {
-
- FirebaseDto toFirebaseDto() {
- return FirebaseDto(token);
- }
-}
\ No newline at end of file
diff --git a/lib/features/push_notification/data/extensions/firebase_extensions.dart b/lib/features/push_notification/data/extensions/firebase_extensions.dart
deleted file mode 100644
index 93ea404b9..000000000
--- a/lib/features/push_notification/data/extensions/firebase_extensions.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-import 'package:model/firebase/firebase_dto.dart';
-import 'package:tmail_ui_user/features/push_notification/data/model/firebase_cache.dart';
-
-extension FirebaseExtensions on FirebaseDto {
- FirebaseCache toCache() {
- return FirebaseCache(token);
- }
-}
\ No newline at end of file
diff --git a/lib/features/push_notification/data/local/fcm_cache_manager.dart b/lib/features/push_notification/data/local/fcm_cache_manager.dart
new file mode 100644
index 000000000..cd991e8b4
--- /dev/null
+++ b/lib/features/push_notification/data/local/fcm_cache_manager.dart
@@ -0,0 +1,36 @@
+import 'package:core/utils/app_logger.dart';
+import 'package:model/fcm/fcm_token_dto.dart';
+import 'package:tmail_ui_user/features/caching/fcm_token_cache_client.dart';
+import 'package:tmail_ui_user/features/push_notification/data/extensions/fcm_cache_extensions.dart';
+import 'package:tmail_ui_user/features/push_notification/data/extensions/fcm_extensions.dart';
+import 'package:tmail_ui_user/features/push_notification/domain/exceptions/fcm_exception.dart';
+
+class FCMCacheManager {
+ final FcmTokenCacheClient _fcmTokenCacheClient;
+
+ FCMCacheManager(this._fcmTokenCacheClient);
+
+ Future getFCMToken(String accountId) async {
+ try {
+ final firebase = await _fcmTokenCacheClient.getItem(accountId);
+ if(firebase != null ) {
+ return firebase.toFCMDto();
+ } else {
+ throw NotFoundStoredFCMException();
+ }
+ } catch (e) {
+ logError('FCMCacheManager::getFCM(): $e');
+ throw NotFoundStoredFCMException();
+ }
+ }
+
+ Future setFCMToken(FCMTokenDto firebaseDto) {
+ log('FCMCacheManager::setFCM(): $_fcmTokenCacheClient');
+ return _fcmTokenCacheClient.insertItem(firebaseDto.accountId, firebaseDto.toCache());
+ }
+
+ Future deleteFCMToken(String accountId) {
+ log('FCMCacheManager::deleteSelectedFCM(): $accountId');
+ return _fcmTokenCacheClient.deleteItem(accountId);
+ }
+}
\ No newline at end of file
diff --git a/lib/features/push_notification/data/local/firebase_cache_manager.dart b/lib/features/push_notification/data/local/firebase_cache_manager.dart
deleted file mode 100644
index 227f1dd14..000000000
--- a/lib/features/push_notification/data/local/firebase_cache_manager.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-import 'package:core/utils/app_logger.dart';
-import 'package:model/firebase/firebase_dto.dart';
-import 'package:tmail_ui_user/features/caching/firebase_config_cache_client.dart';
-import 'package:tmail_ui_user/features/push_notification/data/extensions/firebase_extensions.dart';
-import 'package:tmail_ui_user/features/push_notification/data/model/firebase_cache.dart';
-import 'package:tmail_ui_user/features/push_notification/data/extensions/firebase_cache_extensions.dart';
-import 'package:tmail_ui_user/features/push_notification/domain/exceptions/firebase_exception.dart';
-
-class FirebaseCacheManager {
- final FirebaseCacheClient _firebaseCacheClient;
-
- FirebaseCacheManager(this._firebaseCacheClient);
-
- Future getFirebase() async {
- try {
- final firebase = await _firebaseCacheClient.getItem(FirebaseCache.keyCacheValue);
- if(firebase != null ) {
- return firebase.toFirebaseDto();
- } else {
- throw NotFoundStoredFirebaseException();
- }
- } catch (e) {
- logError('FirebaseCacheManager::getFirebase(): $e');
- throw NotFoundStoredFirebaseException();
- }
- }
-
- Future setFirebase(FirebaseDto firebaseDto) {
- log('FirebaseCacheManager::setFirebase(): $_firebaseCacheClient');
- return _firebaseCacheClient.insertItem(firebaseDto.token, firebaseDto.toCache());
- }
-
- Future deleteFirebase(String token) {
- log('FirebaseCacheManager::deleteSelectedFirebase(): $token');
- return _firebaseCacheClient.deleteItem(token);
- }
-}
\ No newline at end of file
diff --git a/lib/features/push_notification/data/model/fcm_token_cache.dart b/lib/features/push_notification/data/model/fcm_token_cache.dart
new file mode 100644
index 000000000..89ab810e9
--- /dev/null
+++ b/lib/features/push_notification/data/model/fcm_token_cache.dart
@@ -0,0 +1,22 @@
+import 'package:equatable/equatable.dart';
+import 'package:hive/hive.dart';
+import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart';
+
+part 'fcm_token_cache.g.dart';
+
+@HiveType(typeId: CachingConstants.FCM_TOKEN_CACHE_IDENTITY)
+class FCMTokenCache extends HiveObject with EquatableMixin {
+ @HiveField(0)
+ final String token;
+
+ @HiveField(1)
+ final String accountId;
+
+ FCMTokenCache(
+ this.token,
+ this.accountId,
+ );
+
+ @override
+ List