diff --git a/packages/wyatt_cloud_messaging_bloc_base/README.md b/packages/wyatt_cloud_messaging_bloc_base/README.md index 8b55e735..fffba5b2 100644 --- a/packages/wyatt_cloud_messaging_bloc_base/README.md +++ b/packages/wyatt_cloud_messaging_bloc_base/README.md @@ -11,29 +11,124 @@ and the Flutter guide for [developing packages and plugins](https://flutter.dev/developing-packages). --> -TODO: Put a short description of the package here that helps potential users -know whether this package might be useful for them. +# Cloud Messaging BLoC Base + +

+ Style: Wyatt Analysis + SDK: Flutter +

+ +This package serves as an abstraction for managing notifications within Flutter applications. It does not include a built-in data source implementation. Therefore, it is essential to provide your own implementation or utilize one of our various implementations listed below: + +- [Firebase Cloud Messaging ](https://git.wyatt-studio.fr/Wyatt-FOSS/-/packages/pub/wyatt_cloud_messaging_bloc_base/0.1.1+1) + + +This package enables you to easily integrate your data source, allowing the package to handle business logic, error management, and state logic seamlessly. ## Features -TODO: List what your package can do. Maybe include images, gifs, or videos. +* 🧐 Wyatt Architecture +* 🧱 Entities + - `RemoteNotification` -> Contains notification innformations +* 🧊 Cubits, why make it complicated when you can make it simple? + - Goes to the essential +* 📐 Consistent + - Every class have same naming convention ## Getting started -TODO: List prerequisites and provide or point to information on how to -start using the package. +Simply add `wyatt_cloud_messaging_bloc_base` in `pubspec.yaml` , then + +```dart +import 'package:wyatt_cloud_messaging_bloc_base/wyatt_cloud_messaging_bloc_base.dart'; +``` + ## Usage -TODO: Include short and useful examples for package users. Add longer examples -to `/example` folder. +### Data source + +The initial step involves furnishing a data source, presenting you with two options: +- You can select from our provided implementations, which are listed above. +- Alternatively, you can craft a custom implementation by extending the `CloudMessagingRemoteDataSource` class and implementing all of its methods. + +In this example, we will use the Firebase Cloud Messaging implementation. ```dart -const like = 'sample'; +getIt.registerLazySingleton( + () => CloudMessagingFirebaseDataSource()) ``` +> Here we use GetIt. + +### Repository + +Do the same for the repository. This one is already developed, you just need to inject it. + +```dart +getIt.registerLazySingleton( + () => CloudMessagingRepositoryImpl( + notificationRemoteDataSource: getIt(), + ), +) +``` + +### Use cases + +Do the same for use cases. Select an inject the ones you need in your app. Here are avalaible use cases: + +- `GetCloudMessagingTokenUsCase` +- `InitCloudmessagingUseCase` +- `ListenCloudMessagingUseCase` +- `RequestCloudMessagingPermissionUseCase` +- `SubscribeToNotificationTopicUseCase` +- `UnsubscribeFromNotificationTopicUseCase` + +Here is an example with some usecase. + +```dart +getIt + ..registerLazySingleton( + () => ListenNotificationUseCase( + notificationRepository: getIt(), + ), + ) + ..registerLazySingleton( + () => GetCloudMessagingTokenUseCase( + notificationRepository: getIt(), + ), + ) + ..registerLazySingleton( + () => RequestCloudMessagingPermissionUseCase( + notificationRepository: getIt(), + ), + ); +``` + +### Widgets + +From this point onward, your task simply involves enveloping your app within the `CloudMessagingWrapperScreen`. Subsequently, you can proceed to implement your desired actions for handling incoming notifications. + ## Additional information -TODO: Tell users more about the package: where to find more information, how to -contribute to the package, how to file issues, what response they can expect -from the package authors, and more. +If necessary, you can access data sources, repositories, and use cases through `getIt`. Here's a helpful example: + +```dart +abstract class CloudMessagingHelper { + static Future initMessaging() async { + await getIt().call(null); + + final token = await getIt().call(null); + if (token.isOk) { + await notifLocalDataSource.storeToken(token: token.ok!); + } + } + + static dataProcess(String? path) { + if (PageEnum.values.where((element) => (element.path == path)).isNotEmpty) { + AppRouter.goRouterNavigatorKey.currentState?.context.push(path!); + } + } +} +``` + diff --git a/packages/wyatt_cloud_messaging_bloc_firebase/README.md b/packages/wyatt_cloud_messaging_bloc_firebase/README.md index 051468b1..7df3fde5 100644 --- a/packages/wyatt_cloud_messaging_bloc_firebase/README.md +++ b/packages/wyatt_cloud_messaging_bloc_firebase/README.md @@ -18,39 +18,25 @@ -# Flutter - Cloud Messaging Bloc Firebase +# Cloud Messaging Bloc Firebase Implementation

Style: Wyatt Analysis SDK: Flutter

- - - - -A - -## Features - -TODO: List what your package can do. Maybe include images, gifs, or videos. - ## Getting started -TODO: List prerequisites and provide or point to information on how to -start using the package. - -## Usage - -TODO: Include short and useful examples for package users. Add longer examples -to `/example` folder. +Simply add `wyatt_cloud_messaging_bloc_firebase` in `pubspec.yaml` , then ```dart -const like = 'sample'; +import 'package:wyatt_cloud_messaging_bloc_firebase/wyatt_cloud_messaging_bloc_fiebase.dart'; ``` ## Additional information -TODO: Tell users more about the package: where to find more information, how to -contribute to the package, how to file issues, what response they can expect -from the package authors, and more. +- This package includes the implementation of the `CloudMessagingRemoteDataSource` found in the [Wyatt Cloud Messaging Bloc Base](https://git.wyatt-studio.fr/Wyatt-FOSS/-/packages/pub/wyatt_cloud_messaging_bloc_base) package, enabling the utilization of Firebase Cloud Messaging. +- It's worth noting that this package exports [Wyatt Cloud Messaging Bloc Base](https://git.wyatt-studio.fr/Wyatt-FOSS/-/packages/pub/wyatt_cloud_messaging_bloc_base), so there's no need to import both packages. +- This implementation is kept separate from the package to enhance dependency management efficiency. +- All the instructions for using this package are provided in the [Wyatt Cloud Messaging Bloc Base](https://git.wyatt-studio.fr/Wyatt-FOSS/-/packages/pub/wyatt_cloud_messaging_bloc_base) package's readme. +