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:
@@ -6,12 +6,18 @@ class NotFoundStateToRefreshException implements Exception {}
|
||||
|
||||
class NotFoundEmailDeliveryStateException implements Exception {}
|
||||
|
||||
class NotFoundFirebaseSubscriptionException implements Exception {}
|
||||
class NotFoundFirebaseRegistrationForDeviceException implements Exception {}
|
||||
|
||||
class NotFoundSubscriptionException implements Exception {}
|
||||
class NotFoundFirebaseRegistrationCacheException implements Exception {}
|
||||
|
||||
class NotFoundEmailStateException implements Exception {}
|
||||
|
||||
class NotFoundNewReceiveEmailException implements Exception {}
|
||||
|
||||
class EmailStateNoChangeException implements Exception {}
|
||||
class EmailStateNoChangeException implements Exception {}
|
||||
|
||||
class NotFoundFirebaseRegistrationCreatedException implements Exception {}
|
||||
|
||||
class NotFoundFirebaseRegistrationUpdatedException implements Exception {}
|
||||
|
||||
class NotFoundFirebaseRegistrationDestroyedException implements Exception {}
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
import 'package:fcm/model/device_client_id.dart';
|
||||
import 'package:fcm/model/fcm_token.dart';
|
||||
import 'package:fcm/model/firebase_registration.dart';
|
||||
import 'package:fcm/model/type_name.dart';
|
||||
|
||||
extension FirebaseRegistrationExtension on FirebaseRegistration {
|
||||
|
||||
FirebaseRegistration syncProperties({
|
||||
DeviceClientId? newDeviceId,
|
||||
FcmToken? newFcmToken,
|
||||
List<TypeName>? newTypes,
|
||||
}) {
|
||||
return FirebaseRegistration(
|
||||
id: id,
|
||||
token: newFcmToken ?? token,
|
||||
deviceClientId: newDeviceId ?? deviceClientId,
|
||||
expires: expires,
|
||||
types: newTypes ?? types
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
|
||||
import 'package:fcm/model/device_client_id.dart';
|
||||
import 'package:fcm/model/firebase_subscription.dart';
|
||||
|
||||
extension FirebaseSubscriptionExtension on FirebaseSubscription {
|
||||
|
||||
FirebaseSubscription fromDeviceId({DeviceClientId? newDeviceId}) {
|
||||
return FirebaseSubscription(
|
||||
id: id,
|
||||
token: token,
|
||||
deviceClientId: newDeviceId ?? deviceClientId,
|
||||
expires: expires,
|
||||
types: types
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class FCMSubscription with EquatableMixin {
|
||||
|
||||
final String deviceId;
|
||||
final String subscriptionId;
|
||||
|
||||
FCMSubscription(this.deviceId, this.subscriptionId);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
deviceId,
|
||||
subscriptionId
|
||||
];
|
||||
}
|
||||
@@ -1,18 +1,18 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:fcm/model/firebase_subscription.dart';
|
||||
import 'package:fcm/model/firebase_registration.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
|
||||
class RegisterNewTokenRequest with EquatableMixin {
|
||||
|
||||
final Id createRequestId;
|
||||
final FirebaseSubscription firebaseSubscription;
|
||||
final FirebaseRegistration firebaseRegistration;
|
||||
|
||||
RegisterNewTokenRequest(this.createRequestId, this.firebaseSubscription);
|
||||
RegisterNewTokenRequest(this.createRequestId, this.firebaseRegistration);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
createRequestId,
|
||||
firebaseSubscription
|
||||
firebaseRegistration
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:fcm/model/firebase_registration_expired_time.dart';
|
||||
import 'package:fcm/model/firebase_registration_id.dart';
|
||||
|
||||
class UpdateTokenExpiredTimeRequest with EquatableMixin {
|
||||
|
||||
final FirebaseRegistrationId firebaseRegistrationId;
|
||||
final FirebaseRegistrationExpiredTime firebaseRegistrationExpiredTime;
|
||||
|
||||
UpdateTokenExpiredTimeRequest(
|
||||
this.firebaseRegistrationId,
|
||||
this.firebaseRegistrationExpiredTime
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
firebaseRegistrationId,
|
||||
firebaseRegistrationExpiredTime
|
||||
];
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
import 'package:fcm/model/firebase_subscription.dart';
|
||||
import 'package:fcm/model/device_client_id.dart';
|
||||
import 'package:fcm/model/firebase_registration.dart';
|
||||
import 'package:fcm/model/firebase_registration_id.dart';
|
||||
import 'package:fcm/model/type_name.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||
@@ -6,8 +8,8 @@ import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/domain/model/fcm_subscription.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/model/update_token_expired_time_request.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||
|
||||
@@ -28,15 +30,19 @@ abstract class FCMRepository {
|
||||
|
||||
Future<void> deleteStateToRefresh(AccountId accountId, UserName userName, TypeName typeName);
|
||||
|
||||
Future<void> storeSubscription(FCMSubscription fcmSubscription);
|
||||
Future<void> storeFirebaseRegistration(FirebaseRegistration firebaseRegistration);
|
||||
|
||||
Future<FirebaseSubscription> getFirebaseSubscriptionByDeviceId(String deviceId);
|
||||
Future<FirebaseRegistration> getFirebaseRegistrationByDeviceId(DeviceClientId deviceId);
|
||||
|
||||
Future<FirebaseSubscription> registerNewToken(RegisterNewTokenRequest newTokenRequest);
|
||||
Future<FirebaseRegistration> registerNewFirebaseRegistrationToken(RegisterNewTokenRequest newTokenRequest);
|
||||
|
||||
Future<FCMSubscription> getSubscription();
|
||||
Future<FirebaseRegistration> getStoredFirebaseRegistration();
|
||||
|
||||
Future<bool> destroySubscription(String subscriptionId);
|
||||
Future<void> deleteFirebaseRegistrationCache();
|
||||
|
||||
Future<void> destroyFirebaseRegistration(FirebaseRegistrationId registrationId);
|
||||
|
||||
Future<void> updateFirebaseRegistrationToken(UpdateTokenExpiredTimeRequest expiredTimeRequest);
|
||||
|
||||
Future<List<PresentationMailbox>> getMailboxesNotPutNotifications(Session session, AccountId accountId);
|
||||
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
|
||||
class DeleteFirebaseRegistrationCacheLoading extends LoadingState {}
|
||||
|
||||
class DeleteFirebaseRegistrationCacheSuccess extends UIState {}
|
||||
|
||||
class DeleteFirebaseRegistrationCacheFailure extends FeatureFailure {
|
||||
|
||||
DeleteFirebaseRegistrationCacheFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
|
||||
class DestroyFirebaseRegistrationLoading extends LoadingState {}
|
||||
|
||||
class DestroyFirebaseRegistrationSuccess extends UIState {}
|
||||
|
||||
class DestroyFirebaseRegistrationFailure extends FeatureFailure {
|
||||
|
||||
DestroyFirebaseRegistrationFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
|
||||
class DestroySubscriptionLoading extends UIState {}
|
||||
|
||||
class DestroySubscriptionSuccess extends UIState {
|
||||
|
||||
final bool destroyedSubscription;
|
||||
|
||||
DestroySubscriptionSuccess(this.destroyedSubscription);
|
||||
|
||||
@override
|
||||
List<Object> get props => [destroyedSubscription];
|
||||
}
|
||||
|
||||
class DestroySubscriptionFailure extends FeatureFailure {
|
||||
|
||||
DestroySubscriptionFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/domain/model/fcm_subscription.dart';
|
||||
|
||||
class GetFCMSubscriptionLocalLoading extends UIState {}
|
||||
|
||||
class GetFCMSubscriptionLocalSuccess extends UIState {
|
||||
|
||||
final FCMSubscription fcmSubscription;
|
||||
|
||||
GetFCMSubscriptionLocalSuccess(this.fcmSubscription);
|
||||
|
||||
@override
|
||||
List<Object> get props => [fcmSubscription];
|
||||
}
|
||||
|
||||
class GetFCMSubscriptionLocalFailure extends FeatureFailure {
|
||||
|
||||
GetFCMSubscriptionLocalFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:fcm/model/fcm_token.dart';
|
||||
import 'package:fcm/model/firebase_registration.dart';
|
||||
|
||||
class GetFirebaseRegistrationByDeviceIdLoading extends LoadingState {}
|
||||
|
||||
class GetFirebaseRegistrationByDeviceIdSuccess extends UIState {
|
||||
|
||||
final FirebaseRegistration firebaseRegistration;
|
||||
final FcmToken? newFcmToken;
|
||||
|
||||
GetFirebaseRegistrationByDeviceIdSuccess(this.firebaseRegistration, this.newFcmToken);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [firebaseRegistration, newFcmToken];
|
||||
}
|
||||
|
||||
class GetFirebaseRegistrationByDeviceIdFailure extends FeatureFailure {
|
||||
final FcmToken? newFcmToken;
|
||||
|
||||
GetFirebaseRegistrationByDeviceIdFailure(dynamic exception, this.newFcmToken) : super(exception: exception);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [newFcmToken, ...super.props];
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:fcm/model/firebase_subscription.dart';
|
||||
|
||||
class GetFirebaseSubscriptionLoading extends UIState {}
|
||||
|
||||
class GetFirebaseSubscriptionSuccess extends UIState {
|
||||
|
||||
final FirebaseSubscription firebaseSubscription;
|
||||
|
||||
GetFirebaseSubscriptionSuccess(this.firebaseSubscription);
|
||||
|
||||
@override
|
||||
List<Object> get props => [firebaseSubscription];
|
||||
}
|
||||
|
||||
class GetFirebaseSubscriptionFailure extends FeatureFailure {
|
||||
|
||||
GetFirebaseSubscriptionFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:fcm/model/firebase_registration.dart';
|
||||
|
||||
class GetStoredFirebaseRegistrationLoading extends LoadingState {}
|
||||
|
||||
class GetStoredFirebaseRegistrationSuccess extends UIState {
|
||||
|
||||
final FirebaseRegistration firebaseRegistration;
|
||||
|
||||
GetStoredFirebaseRegistrationSuccess(this.firebaseRegistration);
|
||||
|
||||
@override
|
||||
List<Object> get props => [firebaseRegistration];
|
||||
}
|
||||
|
||||
class GetStoredFirebaseRegistrationFailure extends FeatureFailure {
|
||||
|
||||
GetStoredFirebaseRegistrationFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:fcm/model/firebase_registration.dart';
|
||||
|
||||
class RegisterNewFirebaseRegistrationTokenLoading extends LoadingState {}
|
||||
|
||||
class RegisterNewFirebaseRegistrationTokenSuccess extends UIState {
|
||||
|
||||
final FirebaseRegistration firebaseRegistration;
|
||||
|
||||
RegisterNewFirebaseRegistrationTokenSuccess(this.firebaseRegistration);
|
||||
|
||||
@override
|
||||
List<Object> get props => [firebaseRegistration];
|
||||
}
|
||||
|
||||
class RegisterNewFirebaseRegistrationTokenFailure extends FeatureFailure {
|
||||
|
||||
RegisterNewFirebaseRegistrationTokenFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:fcm/model/firebase_subscription.dart';
|
||||
|
||||
class RegisterNewTokenLoading extends UIState {}
|
||||
|
||||
class RegisterNewTokenSuccess extends UIState {
|
||||
|
||||
final FirebaseSubscription firebaseSubscription;
|
||||
|
||||
RegisterNewTokenSuccess(this.firebaseSubscription);
|
||||
|
||||
@override
|
||||
List<Object> get props => [firebaseSubscription];
|
||||
}
|
||||
|
||||
class RegisterNewTokenFailure extends FeatureFailure {
|
||||
|
||||
RegisterNewTokenFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
|
||||
class StoreFirebaseRegistrationLoading extends LoadingState {}
|
||||
|
||||
class StoreFirebaseRegistrationSuccess extends UIState {}
|
||||
|
||||
class StoreFirebaseRegistrationFailure extends FeatureFailure {
|
||||
|
||||
StoreFirebaseRegistrationFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
|
||||
class StoreSubscriptionLoading extends UIState {}
|
||||
|
||||
class StoreSubscriptionSuccess extends UIState {}
|
||||
|
||||
class StoreSubscriptionFailure extends FeatureFailure {
|
||||
|
||||
StoreSubscriptionFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
|
||||
class UpdateFirebaseRegistrationTokenLoading extends LoadingState {}
|
||||
|
||||
class UpdateFirebaseRegistrationTokenSuccess extends UIState {}
|
||||
|
||||
class UpdateFirebaseRegistrationTokenFailure extends FeatureFailure {
|
||||
|
||||
UpdateFirebaseRegistrationTokenFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
+21
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
+23
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
-21
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
+25
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
-23
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
+21
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-7
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
+22
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
+24
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,12 +3,13 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
|
||||
class FcmConstants {
|
||||
|
||||
static final List<Role> mailboxRuleAllowPushNotifications = [
|
||||
static final List<Role> mailboxRuleDoNotAllowPushNotifications = [
|
||||
PresentationMailbox.roleDrafts,
|
||||
PresentationMailbox.roleSent,
|
||||
PresentationMailbox.roleOutbox,
|
||||
PresentationMailbox.roleSpam,
|
||||
PresentationMailbox.roleTrash
|
||||
];
|
||||
|
||||
static const String firebaseRegistrationExpiredTimeProperty = 'expires';
|
||||
}
|
||||
Reference in New Issue
Block a user