fix: fix unimplemented error in listenable use case #208
| @ -17,5 +17,10 @@ | |||||||
| import 'package:wyatt_architecture/wyatt_architecture.dart'; | import 'package:wyatt_architecture/wyatt_architecture.dart'; | ||||||
| 
 | 
 | ||||||
| class NotificationException extends AppException { | class NotificationException extends AppException { | ||||||
|   const NotificationException([super.message]); |   const NotificationException([ | ||||||
|  |     super.message, | ||||||
|  |     this.failure, | ||||||
|  |   ]); | ||||||
|  | 
 | ||||||
|  |   final Error? failure; | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,26 @@ | |||||||
|  | // 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 <https://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | import 'package:wyatt_architecture/wyatt_architecture.dart'; | ||||||
|  | import 'package:wyatt_cloud_messaging_bloc_base/src/core/core.dart'; | ||||||
|  | 
 | ||||||
|  | abstract final class AppExceptionHelper { | ||||||
|  |   static AppException handleError(Object? error) => switch (error) { | ||||||
|  |         AppException() => error, | ||||||
|  |         Error() => NotificationException(error.toString(), error), | ||||||
|  |         _ => ServerException(error.toString()), | ||||||
|  |       }; | ||||||
|  | } | ||||||
| @ -15,7 +15,7 @@ | |||||||
| // along with this program. If not, see <https://www.gnu.org/licenses/>. | // along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| import 'package:wyatt_architecture/wyatt_architecture.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/core/helpers/app_exception_helper.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/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/entities/remote_notifications.dart'; | ||||||
| import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart'; | import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart'; | ||||||
| @ -31,68 +31,52 @@ class CloudMessagingRepositoryImpl extends CloudMessagingRepository { | |||||||
|   @override |   @override | ||||||
|   FutureOrResult<String?> getToken() => Result.tryCatchAsync( |   FutureOrResult<String?> getToken() => Result.tryCatchAsync( | ||||||
|         _notificationRemoteDataSource.getToken, |         _notificationRemoteDataSource.getToken, | ||||||
|         (error) => error is AppException |         AppExceptionHelper.handleError, | ||||||
|             ? error |  | ||||||
|             : NotificationException(error.toString()), |  | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureOrResult<void> subscribeToTopic(String topic) => Result.tryCatchAsync( |   FutureOrResult<void> subscribeToTopic(String topic) => Result.tryCatchAsync( | ||||||
|         () => _notificationRemoteDataSource.subscribeToTopic(topic), |         () => _notificationRemoteDataSource.subscribeToTopic(topic), | ||||||
|         (error) => error is AppException |         AppExceptionHelper.handleError, | ||||||
|             ? error |  | ||||||
|             : NotificationException(error.toString()), |  | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureOrResult<void> unsubscribeFromTopic(String topic) => |   FutureOrResult<void> unsubscribeFromTopic(String topic) => | ||||||
|       Result.tryCatchAsync( |       Result.tryCatchAsync( | ||||||
|         () => _notificationRemoteDataSource.unsubscribeFromTopic(topic), |         () => _notificationRemoteDataSource.unsubscribeFromTopic(topic), | ||||||
|         (error) => error is AppException |         AppExceptionHelper.handleError, | ||||||
|             ? error |  | ||||||
|             : NotificationException(error.toString()), |  | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureOrResult<void> requestPermissions() => Result.tryCatchAsync( |   FutureOrResult<void> requestPermissions() => Result.tryCatchAsync( | ||||||
|         _notificationRemoteDataSource.requestPermissions, |         _notificationRemoteDataSource.requestPermissions, | ||||||
|         (error) => error is AppException |         AppExceptionHelper.handleError, | ||||||
|             ? error |  | ||||||
|             : NotificationException(error.toString()), |  | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureOrResult<Stream<RemoteNotification>> onNotification() => |   FutureOrResult<Stream<RemoteNotification>> onNotification() => | ||||||
|       Result.tryCatchAsync( |       Result.tryCatchAsync( | ||||||
|         _notificationRemoteDataSource.onNotification, |         _notificationRemoteDataSource.onNotification, | ||||||
|         (error) => error is AppException |         AppExceptionHelper.handleError, | ||||||
|             ? error |  | ||||||
|             : NotificationException(error.toString()), |  | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureOrResult<Stream<RemoteNotification>> onNotificationBackground() => |   FutureOrResult<Stream<RemoteNotification>> onNotificationBackground() => | ||||||
|       Result.tryCatchAsync( |       Result.tryCatchAsync( | ||||||
|         _notificationRemoteDataSource.onNotificationBackground, |         _notificationRemoteDataSource.onNotificationBackground, | ||||||
|         (error) => error is AppException |         AppExceptionHelper.handleError, | ||||||
|             ? error |  | ||||||
|             : NotificationException(error.toString()), |  | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureOrResult<Stream<RemoteNotification>> onNotificationForeground() => |   FutureOrResult<Stream<RemoteNotification>> onNotificationForeground() => | ||||||
|       Result.tryCatchAsync( |       Result.tryCatchAsync( | ||||||
|         _notificationRemoteDataSource.onNotificationForeground, |         _notificationRemoteDataSource.onNotificationForeground, | ||||||
|         (error) => error is AppException |         AppExceptionHelper.handleError, | ||||||
|             ? error |  | ||||||
|             : NotificationException(error.toString()), |  | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureOrResult<void> init() => Result.tryCatchAsync( |   FutureOrResult<void> init() => Result.tryCatchAsync( | ||||||
|         _notificationRemoteDataSource.init, |         _notificationRemoteDataSource.init, | ||||||
|         (error) => error is AppException |         AppExceptionHelper.handleError, | ||||||
|             ? error |  | ||||||
|             : NotificationException(error.toString()), |  | ||||||
|       ); |       ); | ||||||
| } | } | ||||||
|  | |||||||
| @ -40,7 +40,9 @@ class ListenNotificationUseCase | |||||||
|     if (notificationStreamResponse.isOk) { |     if (notificationStreamResponse.isOk) { | ||||||
|       notificationStream = notificationStreamResponse.ok; |       notificationStream = notificationStreamResponse.ok; | ||||||
|     } else if (notificationStreamResponse.isErr) { |     } else if (notificationStreamResponse.isErr) { | ||||||
|       if (notificationStreamResponse.err! is UnimplementedError) { |       if (notificationStreamResponse.err! is NotificationException && | ||||||
|  |           (notificationStreamResponse.err! as NotificationException).failure | ||||||
|  |               is! UnimplementedError) { | ||||||
|         return Err(notificationStreamResponse.err!); |         return Err(notificationStreamResponse.err!); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user