From 18e8d1c75434445e8b38b98e992b3254373f2322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malo=20L=C3=A9on?= Date: Thu, 17 Aug 2023 20:59:34 +0200 Subject: [PATCH] refactor: modify methods on usage --- .../lib/src/data/data.dart | 2 +- ...t => cloud_messaging_repository_impl.dart} | 61 ++++++++++--------- .../src/domain/data_sources/data_sources.dart | 17 ++++++ ...> cloud_messaging_remote_data_source.dart} | 12 ++-- .../lib/src/domain/domain.dart | 1 + .../domain/entities/remote_notifications.dart | 10 ++- ...y.dart => cloud_messaging_repository.dart} | 12 ++-- .../src/domain/repositories/repositories.dart | 2 +- .../get_cloud_messaging_token_use_case.dart | 10 +-- .../init_cloud_messaging_use_case.dart | 8 +-- .../listen_notification_use_case.dart | 12 ++-- ...t_cloud_messaging_permission_use_case.dart | 8 +-- .../lib/src/domain/usecases/subscribe.dart | 6 +- .../lib/src/domain/usecases/unsubscribe.dart | 6 +- 14 files changed, 92 insertions(+), 75 deletions(-) rename packages/wyatt_cloud_messaging_bloc_base/lib/src/data/repositories/{notification_repository_impl.dart => cloud_messaging_repository_impl.dart} (66%) create mode 100644 packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/data_sources.dart rename packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/remote/{notification_remote_data_source.dart => cloud_messaging_remote_data_source.dart} (75%) rename packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/{notification_repository.dart => cloud_messaging_repository.dart} (83%) diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/data/data.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/data/data.dart index 36e6f4d5..c7204473 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/data/data.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/data/data.dart @@ -14,4 +14,4 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export 'repositories/notification_repository_impl.dart'; +export 'repositories/cloud_messaging_repository_impl.dart'; diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/data/repositories/notification_repository_impl.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/data/repositories/cloud_messaging_repository_impl.dart similarity index 66% rename from packages/wyatt_cloud_messaging_bloc_base/lib/src/data/repositories/notification_repository_impl.dart rename to packages/wyatt_cloud_messaging_bloc_base/lib/src/data/repositories/cloud_messaging_repository_impl.dart index ddcbdbaa..31267357 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/data/repositories/notification_repository_impl.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/data/repositories/cloud_messaging_repository_impl.dart @@ -16,27 +16,20 @@ import 'package:wyatt_architecture/wyatt_architecture.dart'; import 'package:wyatt_cloud_messaging_bloc_base/src/core/exceptions/notification_exeption.dart'; -import 'package:wyatt_cloud_messaging_bloc_base/src/domain/data_sources/remote/notification_remote_data_source.dart'; +import 'package:wyatt_cloud_messaging_bloc_base/src/domain/data_sources/remote/cloud_messaging_remote_data_source.dart'; import 'package:wyatt_cloud_messaging_bloc_base/src/domain/entities/remote_notifications.dart'; -import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/notification_repository.dart'; +import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart'; import 'package:wyatt_type_utils/wyatt_type_utils.dart'; -class NotificationRepositoryImpl extends NotificationRepository { - final NotificationRemoteDataSource _notificationRemoteDataSource; +class CloudMessagingRepositoryImpl extends CloudMessagingRepository { + final CloudMessagingRemoteDataSource _notificationRemoteDataSource; - NotificationRepositoryImpl({ - required NotificationRemoteDataSource notificationRemoteDataSource, + CloudMessagingRepositoryImpl({ + required CloudMessagingRemoteDataSource notificationRemoteDataSource, }) : _notificationRemoteDataSource = notificationRemoteDataSource; - @override - FutureOrResult register() => Result.tryCatchAsync( - _notificationRemoteDataSource.register, - (error) => error is AppException - ? error - : NotificationException(error.toString()), - ); @override - FutureOrResult getToken() => Result.tryCatchAsync( + FutureOrResult getToken() => Result.tryCatchAsync( _notificationRemoteDataSource.getToken, (error) => error is AppException ? error @@ -69,29 +62,37 @@ class NotificationRepositoryImpl extends NotificationRepository { ); @override - FutureOrResult> onNotificationAccepted() => + FutureOrResult> onNotification() => Result.tryCatchAsync( - _notificationRemoteDataSource.onNotificationBackgroundAccepted, + _notificationRemoteDataSource.onNotificationBackground, (error) => error is AppException ? error : NotificationException(error.toString()), ); @override - FutureOrResult> - onNotificationBackgroundAccepted() => Result.tryCatchAsync( - _notificationRemoteDataSource.onNotificationBackgroundAccepted, - (error) => error is AppException - ? error - : NotificationException(error.toString()), - ); + FutureOrResult> onNotificationBackground() => + Result.tryCatchAsync( + _notificationRemoteDataSource.onNotificationBackground, + (error) => error is AppException + ? error + : NotificationException(error.toString()), + ); @override - FutureOrResult> - onNotificationForegroundAccepted() => Result.tryCatchAsync( - _notificationRemoteDataSource.onNotificationForegroundAccepted, - (error) => error is AppException - ? error - : NotificationException(error.toString()), - ); + FutureOrResult> onNotificationForeground() => + Result.tryCatchAsync( + _notificationRemoteDataSource.onNotificationForeground, + (error) => error is AppException + ? error + : NotificationException(error.toString()), + ); + + @override + FutureOrResult init() => Result.tryCatchAsync( + _notificationRemoteDataSource.init, + (error) => error is AppException + ? error + : NotificationException(error.toString()), + ); } diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/data_sources.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/data_sources.dart new file mode 100644 index 00000000..27b331ee --- /dev/null +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/data_sources.dart @@ -0,0 +1,17 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +export './remote/cloud_messaging_remote_data_source.dart'; diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/remote/notification_remote_data_source.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/remote/cloud_messaging_remote_data_source.dart similarity index 75% rename from packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/remote/notification_remote_data_source.dart rename to packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/remote/cloud_messaging_remote_data_source.dart index 92d9fa89..ff1d37c4 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/remote/notification_remote_data_source.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/data_sources/remote/cloud_messaging_remote_data_source.dart @@ -17,18 +17,18 @@ import 'package:wyatt_architecture/wyatt_architecture.dart'; import 'package:wyatt_cloud_messaging_bloc_base/src/domain/entities/remote_notifications.dart'; -abstract class NotificationRemoteDataSource extends BaseRepository { - Future register(); +abstract class CloudMessagingRemoteDataSource extends BaseRepository { + Future init() async {} - Future> onNotificationAccepted(); + Future> onNotification(); - Future> onNotificationBackgroundAccepted(); + Future> onNotificationBackground(); - Future> onNotificationForegroundAccepted(); + Future> onNotificationForeground(); Future requestPermissions(); - Future getToken(); + Future getToken(); Future subscribeToTopic(String topic); diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/domain.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/domain.dart index 0ab2750e..2cb02b79 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/domain.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/domain.dart @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +export 'data_sources/data_sources.dart'; export 'entities/entities.dart'; export 'repositories/repositories.dart'; export 'usecases/usecases.dart'; diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/entities/remote_notifications.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/entities/remote_notifications.dart index 79c2424c..ce3b23a8 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/entities/remote_notifications.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/entities/remote_notifications.dart @@ -18,14 +18,12 @@ import 'package:wyatt_architecture/wyatt_architecture.dart'; class RemoteNotification extends Entity { const RemoteNotification({ - this.senderId, - this.messageId, + this.title, + this.body, this.data, - this.sentTime, }); - final String? senderId; - final String? messageId; + final String? title; + final String? body; final Map? data; - final DateTime? sentTime; } diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/notification_repository.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/cloud_messaging_repository.dart similarity index 83% rename from packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/notification_repository.dart rename to packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/cloud_messaging_repository.dart index ced478f7..a53cd578 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/notification_repository.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/cloud_messaging_repository.dart @@ -19,18 +19,18 @@ import 'dart:async'; import 'package:wyatt_architecture/wyatt_architecture.dart'; import 'package:wyatt_cloud_messaging_bloc_base/src/domain/entities/remote_notifications.dart'; -abstract class NotificationRepository extends BaseRepository { - FutureOrResult register(); +abstract class CloudMessagingRepository extends BaseRepository { + FutureOrResult init(); - FutureOrResult> onNotificationAccepted(); + FutureOrResult> onNotification(); - FutureOrResult> onNotificationBackgroundAccepted(); + FutureOrResult> onNotificationBackground(); - FutureOrResult> onNotificationForegroundAccepted(); + FutureOrResult> onNotificationForeground(); FutureOrResult requestPermissions(); - FutureOrResult getToken(); + FutureOrResult getToken(); FutureOrResult subscribeToTopic(String topic); diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/repositories.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/repositories.dart index 12accae5..3238da21 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/repositories.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/repositories/repositories.dart @@ -14,4 +14,4 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export 'notification_repository.dart'; +export 'cloud_messaging_repository.dart'; diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/get_cloud_messaging_token_use_case.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/get_cloud_messaging_token_use_case.dart index f5db1b53..f951c154 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/get_cloud_messaging_token_use_case.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/get_cloud_messaging_token_use_case.dart @@ -15,16 +15,16 @@ // along with this program. If not, see . import 'package:wyatt_architecture/wyatt_architecture.dart'; -import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/notification_repository.dart'; +import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart'; -class GetCloudMessagingTokenUseCase extends AsyncUseCase { - final NotificationRepository _notificationRepository; +class GetCloudMessagingTokenUseCase extends AsyncUseCase { + final CloudMessagingRepository _notificationRepository; GetCloudMessagingTokenUseCase({ - required NotificationRepository notificationRepository, + required CloudMessagingRepository notificationRepository, }) : _notificationRepository = notificationRepository; @override - FutureOrResult execute(void params) => + FutureOrResult execute(void params) => _notificationRepository.getToken(); } diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/init_cloud_messaging_use_case.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/init_cloud_messaging_use_case.dart index f18c8351..6d1f9394 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/init_cloud_messaging_use_case.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/init_cloud_messaging_use_case.dart @@ -15,15 +15,15 @@ // along with this program. If not, see . import 'package:wyatt_architecture/wyatt_architecture.dart'; -import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/notification_repository.dart'; +import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart'; class InitCloudmessagingUseCase extends AsyncUseCase { - final NotificationRepository _notificationRepository; + final CloudMessagingRepository _notificationRepository; InitCloudmessagingUseCase({ - required NotificationRepository notificationRepository, + required CloudMessagingRepository notificationRepository, }) : _notificationRepository = notificationRepository; @override FutureOrResult execute(NoParam? params) => - _notificationRepository.register(); + _notificationRepository.init(); } diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/listen_notification_use_case.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/listen_notification_use_case.dart index 46e90028..02e475d9 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/listen_notification_use_case.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/listen_notification_use_case.dart @@ -20,33 +20,33 @@ import 'package:rxdart/rxdart.dart'; import 'package:wyatt_architecture/wyatt_architecture.dart'; import 'package:wyatt_cloud_messaging_bloc_base/src/core/exceptions/notification_exeption.dart'; import 'package:wyatt_cloud_messaging_bloc_base/src/domain/entities/remote_notifications.dart'; -import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/notification_repository.dart'; +import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart'; import 'package:wyatt_type_utils/wyatt_type_utils.dart'; class ListenNotification extends StreamUseCase { - final NotificationRepository _notificationRepository; + final CloudMessagingRepository _notificationRepository; - ListenNotification({required NotificationRepository notificationRepository}) + ListenNotification({required CloudMessagingRepository notificationRepository}) : _notificationRepository = notificationRepository; @override FutureOrResult> execute(NoParam? params) async { Stream? notificationStream; final notificationStreamResponse = - await _notificationRepository.onNotificationAccepted(); + await _notificationRepository.onNotification(); if (notificationStreamResponse.isOk) { notificationStream = notificationStreamResponse.ok; } else if (notificationStreamResponse.isErr) { final notificationBackgroundStreamResponse = - await _notificationRepository.onNotificationBackgroundAccepted(); + await _notificationRepository.onNotificationBackground(); if (notificationBackgroundStreamResponse.isErr) { return Err(notificationBackgroundStreamResponse.err!); } final notificationForegroundStreamResponse = - await _notificationRepository.onNotificationForegroundAccepted(); + await _notificationRepository.onNotificationForeground(); if (notificationForegroundStreamResponse.isErr) { return Err(notificationBackgroundStreamResponse.err!); diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/request_cloud_messaging_permission_use_case.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/request_cloud_messaging_permission_use_case.dart index 274113fa..2e712cc9 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/request_cloud_messaging_permission_use_case.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/request_cloud_messaging_permission_use_case.dart @@ -15,16 +15,16 @@ // along with this program. If not, see . import 'package:wyatt_architecture/wyatt_architecture.dart'; -import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/notification_repository.dart'; +import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart'; class RequestCloudMessagingPermissionUseCase extends AsyncUseCase { - final NotificationRepository _notificationRepository; + final CloudMessagingRepository _notificationRepository; RequestCloudMessagingPermissionUseCase({ - required NotificationRepository notificationRepository, + required CloudMessagingRepository notificationRepository, }) : _notificationRepository = notificationRepository; @override FutureOrResult execute(void params) => - _notificationRepository.register(); + _notificationRepository.requestPermissions(); } diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/subscribe.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/subscribe.dart index bd30209e..b5ce21b4 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/subscribe.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/subscribe.dart @@ -17,12 +17,12 @@ import 'dart:async'; import 'package:wyatt_architecture/wyatt_architecture.dart'; -import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/notification_repository.dart'; +import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart'; class Subscribe extends AsyncUseCase { - final NotificationRepository _notificationRepository; + final CloudMessagingRepository _notificationRepository; - Subscribe({required NotificationRepository notificationRepository}) + Subscribe({required CloudMessagingRepository notificationRepository}) : _notificationRepository = notificationRepository; @override diff --git a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/unsubscribe.dart b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/unsubscribe.dart index e2d714cd..3d552caa 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/unsubscribe.dart +++ b/packages/wyatt_cloud_messaging_bloc_base/lib/src/domain/usecases/unsubscribe.dart @@ -17,12 +17,12 @@ import 'dart:async'; import 'package:wyatt_architecture/wyatt_architecture.dart'; -import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/notification_repository.dart'; +import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart'; class Unsubscribe extends AsyncUseCase { - final NotificationRepository _notificationRepository; + final CloudMessagingRepository _notificationRepository; - Unsubscribe({required NotificationRepository notificationRepository}) + Unsubscribe({required CloudMessagingRepository notificationRepository}) : _notificationRepository = notificationRepository; @override