From 0144c2cbfafafe462a4139945f10308060c24cdc Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 28 Dec 2022 10:13:50 +0700 Subject: [PATCH] Fix device id null after register new token successful --- .../datasource_impl/fcm_datasource_impl.dart | 4 +++- .../firebase_subscription_extension.dart | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 lib/features/push_notification/domain/extensions/firebase_subscription_extension.dart diff --git a/lib/features/push_notification/data/datasource_impl/fcm_datasource_impl.dart b/lib/features/push_notification/data/datasource_impl/fcm_datasource_impl.dart index 6ad8a1a14..e625f791a 100644 --- a/lib/features/push_notification/data/datasource_impl/fcm_datasource_impl.dart +++ b/lib/features/push_notification/data/datasource_impl/fcm_datasource_impl.dart @@ -3,6 +3,7 @@ import 'package:fcm/model/type_name.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:tmail_ui_user/features/push_notification/data/datasource/fcm_datasource.dart'; import 'package:tmail_ui_user/features/push_notification/data/network/fcm_api.dart'; +import 'package:tmail_ui_user/features/push_notification/domain/extensions/firebase_subscription_extension.dart'; import 'package:tmail_ui_user/features/push_notification/domain/model/register_new_token_request.dart'; import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; @@ -45,7 +46,8 @@ class FcmDatasourceImpl extends FCMDatasource { @override Future registerNewToken(RegisterNewTokenRequest newTokenRequest) { return Future.sync(() async { - return await _fcmApi.registerNewToken(newTokenRequest); + final firebaseSubscription = await _fcmApi.registerNewToken(newTokenRequest); + return firebaseSubscription.fromDeviceId(newDeviceId: newTokenRequest.firebaseSubscription.deviceClientId); }).catchError((error) { _exceptionThrower.throwException(error); }); diff --git a/lib/features/push_notification/domain/extensions/firebase_subscription_extension.dart b/lib/features/push_notification/domain/extensions/firebase_subscription_extension.dart new file mode 100644 index 000000000..37effedd5 --- /dev/null +++ b/lib/features/push_notification/domain/extensions/firebase_subscription_extension.dart @@ -0,0 +1,16 @@ + +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 + ); + } +} \ No newline at end of file