TF-2298 Update expires time when old token has expired

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit fb26afe8f52df6e16476aea8a68f9f92c5c4b001)
This commit is contained in:
dab246
2023-12-04 10:53:26 +07:00
committed by Dat H. Pham
parent e3dea129b6
commit f5d878012d
72 changed files with 964 additions and 736 deletions
@@ -0,0 +1,21 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/delete_firebase_registration_cache_state.dart';
class DeleteFirebaseRegistrationCacheInteractor {
final FCMRepository _fcmRepository;
DeleteFirebaseRegistrationCacheInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(DeleteFirebaseRegistrationCacheLoading());
await _fcmRepository.getStoredFirebaseRegistration();
yield Right<Failure, Success>(DeleteFirebaseRegistrationCacheSuccess());
} catch (e) {
yield Left<Failure, Success>(DeleteFirebaseRegistrationCacheFailure(e));
}
}
}
@@ -0,0 +1,23 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:fcm/model/firebase_registration_id.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/destroy_firebase_registration_state.dart';
class DestroyFirebaseRegistrationInteractor {
final FCMRepository _fcmRepository;
DestroyFirebaseRegistrationInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute(FirebaseRegistrationId registrationId) async* {
try {
yield Right<Failure, Success>(DestroyFirebaseRegistrationLoading());
await _fcmRepository.destroyFirebaseRegistration(registrationId);
yield Right<Failure, Success>(DestroyFirebaseRegistrationSuccess());
} catch (e) {
yield Left<Failure, Success>(DestroyFirebaseRegistrationFailure(e));
}
}
}
@@ -1,22 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/destroy_subscription_state.dart';
class DestroySubscriptionInteractor {
final FCMRepository _fcmRepository;
DestroySubscriptionInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute(String subscriptionId) async* {
try {
yield Right<Failure, Success>(DestroySubscriptionLoading());
final destroyedSubscription = await _fcmRepository.destroySubscription(subscriptionId);
yield Right<Failure, Success>(DestroySubscriptionSuccess(destroyedSubscription));
} catch (e) {
yield Left<Failure, Success>(DestroySubscriptionFailure(e));
}
}
}
@@ -1,21 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/get_fcm_subscription_local.dart';
class GetFCMSubscriptionLocalInteractor {
final FCMRepository _fcmRepository;
GetFCMSubscriptionLocalInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(GetFCMSubscriptionLocalLoading());
final subscription = await _fcmRepository.getSubscription();
yield Right<Failure, Success>(GetFCMSubscriptionLocalSuccess(subscription));
} catch (e) {
yield Left<Failure, Success>(GetFCMSubscriptionLocalFailure(e));
}
}
}
@@ -0,0 +1,25 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:fcm/model/device_client_id.dart';
import 'package:fcm/model/fcm_token.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/get_firebase_registration_by_device_id_state.dart';
class GetFirebaseRegistrationByDeviceIdInteractor {
final FCMRepository _fcmRepository;
GetFirebaseRegistrationByDeviceIdInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute({required DeviceClientId deviceClientId, FcmToken? newFcmToken}) async* {
try {
yield Right<Failure, Success>(GetFirebaseRegistrationByDeviceIdLoading());
final firebaseRegistration = await _fcmRepository.getFirebaseRegistrationByDeviceId(deviceClientId);
yield Right<Failure, Success>(GetFirebaseRegistrationByDeviceIdSuccess(firebaseRegistration, newFcmToken));
} catch (e) {
yield Left<Failure, Success>(GetFirebaseRegistrationByDeviceIdFailure(e, newFcmToken));
}
}
}
@@ -1,23 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/get_firebase_subscription_state.dart';
class GetFirebaseSubscriptionInteractor {
final FCMRepository _fcmRepository;
GetFirebaseSubscriptionInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute(String deviceId) async* {
try {
yield Right<Failure, Success>(GetFirebaseSubscriptionLoading());
final firebaseSubscription = await _fcmRepository.getFirebaseSubscriptionByDeviceId(deviceId);
yield Right<Failure, Success>(GetFirebaseSubscriptionSuccess(firebaseSubscription));
} catch (e) {
yield Left<Failure, Success>(GetFirebaseSubscriptionFailure(e));
}
}
}
@@ -0,0 +1,21 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/get_stored_firebase_registration_state.dart';
class GetStoredFirebaseRegistrationInteractor {
final FCMRepository _fcmRepository;
GetStoredFirebaseRegistrationInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(GetStoredFirebaseRegistrationLoading());
final registration = await _fcmRepository.getStoredFirebaseRegistration();
yield Right<Failure, Success>(GetStoredFirebaseRegistrationSuccess(registration));
} catch (e) {
yield Left<Failure, Success>(GetStoredFirebaseRegistrationFailure(e));
}
}
}
@@ -4,21 +4,21 @@ import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/push_notification/domain/model/register_new_token_request.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/register_new_token_state.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/register_new_firebase_registration_token_state.dart';
class RegisterNewTokenInteractor {
class RegisterNewFirebaseRegistrationTokenInteractor {
final FCMRepository _fcmRepository;
RegisterNewTokenInteractor(this._fcmRepository);
RegisterNewFirebaseRegistrationTokenInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute(RegisterNewTokenRequest newTokenRequest) async* {
try {
yield Right<Failure, Success>(RegisterNewTokenLoading());
final firebaseSubscription = await _fcmRepository.registerNewToken(newTokenRequest);
yield Right<Failure, Success>(RegisterNewTokenSuccess(firebaseSubscription));
yield Right<Failure, Success>(RegisterNewFirebaseRegistrationTokenLoading());
final firebaseRegistration = await _fcmRepository.registerNewFirebaseRegistrationToken(newTokenRequest);
yield Right<Failure, Success>(RegisterNewFirebaseRegistrationTokenSuccess(firebaseRegistration));
} catch (e) {
yield Left<Failure, Success>(RegisterNewTokenFailure(e));
yield Left<Failure, Success>(RegisterNewFirebaseRegistrationTokenFailure(e));
}
}
}
@@ -0,0 +1,22 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:fcm/model/firebase_registration.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/store_firebase_registration_state.dart';
class StoreFirebaseRegistrationInteractor {
final FCMRepository _fcmRepository;
StoreFirebaseRegistrationInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute(FirebaseRegistration firebaseRegistration) async* {
try {
yield Right<Failure, Success>(StoreFirebaseRegistrationLoading());
await _fcmRepository.storeFirebaseRegistration(firebaseRegistration);
yield Right<Failure, Success>(StoreFirebaseRegistrationSuccess());
} catch (e) {
yield Left<Failure, Success>(StoreFirebaseRegistrationFailure(e));
}
}
}
@@ -1,22 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/push_notification/domain/model/fcm_subscription.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/store_subscription_state.dart';
class StoreSubscriptionInteractor {
final FCMRepository _fcmRepository;
StoreSubscriptionInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute(FCMSubscription fcmSubscription) async* {
try {
yield Right<Failure, Success>(StoreSubscriptionLoading());
await _fcmRepository.storeSubscription(fcmSubscription);
yield Right<Failure, Success>(StoreSubscriptionSuccess());
} catch (e) {
yield Left<Failure, Success>(StoreSubscriptionFailure(e));
}
}
}
@@ -0,0 +1,24 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/push_notification/domain/model/update_token_expired_time_request.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/update_firebase_registration_token_state.dart';
class UpdateFirebaseRegistrationTokenInteractor {
final FCMRepository _fcmRepository;
UpdateFirebaseRegistrationTokenInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute(UpdateTokenExpiredTimeRequest updateTokenExpiredTimeRequest) async* {
try {
yield Right<Failure, Success>(UpdateFirebaseRegistrationTokenLoading());
await _fcmRepository.updateFirebaseRegistrationToken(updateTokenExpiredTimeRequest);
yield Right<Failure, Success>(UpdateFirebaseRegistrationTokenSuccess());
} catch (e) {
yield Left<Failure, Success>(UpdateFirebaseRegistrationTokenFailure(e));
}
}
}