From a28d046fcee8f057d4971271a42e2739995ce5ca Mon Sep 17 00:00:00 2001 From: Neevash Ramdial Date: Fri, 22 Jan 2021 06:38:12 -0400 Subject: [PATCH 1/4] [Dart-Client] Add enum for supported push providers --- packages/dart_client/lib/src/client.dart | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/dart_client/lib/src/client.dart b/packages/dart_client/lib/src/client.dart index c5a77d11..09ea4232 100644 --- a/packages/dart_client/lib/src/client.dart +++ b/packages/dart_client/lib/src/client.dart @@ -46,6 +46,26 @@ const String KEY_TOKEN = 'KEY_TOKEN'; /// The key used to save the apiKey to sharedPreferences const String KEY_API_KEY = 'KEY_API_KEY'; +/// Provider used to send push notifications. +enum PushProvider { + /// Send notifications using Google's Firebase Cloud Messaging + firebase, + + /// Send notifications using Apple's Push Notification service + apn +} + +extension on PushProvider { + /// Returns the string notion for [PushProvider]. + String get name { + if (this == PushProvider.apn) { + return 'apn'; + } else { + return 'firebase'; + } + } +} + /// The official Dart client for Stream Chat, /// a service for building chat applications. /// This library can be used on any Dart project and on both mobile and web apps with Flutter. @@ -1002,10 +1022,10 @@ class Client { } /// Add a device for Push Notifications. - Future addDevice(String id, String pushProvider) async { + Future addDevice(String id, PushProvider pushProvider) async { final response = await post('/devices', data: { 'id': id, - 'push_provider': pushProvider, + 'push_provider': pushProvider.name, }); return decode(response.data, EmptyResponse.fromJson); } From c50b4938e27b8f9fff61e5c8161d9925772f81e2 Mon Sep 17 00:00:00 2001 From: Neevash Ramdial Date: Fri, 22 Jan 2021 06:39:19 -0400 Subject: [PATCH 2/4] [Flutter-SDK] migrate push String to enum --- packages/flutter_widgets/example/lib/notifications_service.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter_widgets/example/lib/notifications_service.dart b/packages/flutter_widgets/example/lib/notifications_service.dart index 83f5047a..298ab3ab 100644 --- a/packages/flutter_widgets/example/lib/notifications_service.dart +++ b/packages/flutter_widgets/example/lib/notifications_service.dart @@ -56,7 +56,7 @@ void initNotifications(Client client) { if (connector.token.value != null) { client.addDevice( connector.token.value, - Platform.isAndroid ? 'firebase' : 'apn', + Platform.isAndroid ? PushProvider.firebase : PushProvider.apn, ); } }); From e7b4e9acd69c8d56be495f1fe5752074c9004a3d Mon Sep 17 00:00:00 2001 From: Neevash Ramdial Date: Fri, 22 Jan 2021 06:47:28 -0400 Subject: [PATCH 3/4] update test --- packages/dart_client/test/src/client_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dart_client/test/src/client_test.dart b/packages/dart_client/test/src/client_test.dart index 738255cc..caca1a34 100644 --- a/packages/dart_client/test/src/client_test.dart +++ b/packages/dart_client/test/src/client_test.dart @@ -269,7 +269,7 @@ void main() { 'push_provider': 'test', })).thenAnswer((_) async => Response(data: '{}', statusCode: 200)); - await client.addDevice('test-id', 'test'); + await client.addDevice('test-id', PushProvider.firebase); verify(mockDio.post('/devices', data: {'id': 'test-id', 'push_provider': 'test'})).called(1); From 6817ec51b2a78c6a9a2b171d8200088afed124dc Mon Sep 17 00:00:00 2001 From: Neevash Ramdial Date: Fri, 22 Jan 2021 09:49:42 -0400 Subject: [PATCH 4/4] update push provider in client test --- packages/dart_client/test/src/client_test.dart | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/dart_client/test/src/client_test.dart b/packages/dart_client/test/src/client_test.dart index caca1a34..8f4dc41e 100644 --- a/packages/dart_client/test/src/client_test.dart +++ b/packages/dart_client/test/src/client_test.dart @@ -266,13 +266,17 @@ void main() { when(mockDio.post('/devices', data: { 'id': 'test-id', - 'push_provider': 'test', + 'push_provider': 'firebase', })).thenAnswer((_) async => Response(data: '{}', statusCode: 200)); await client.addDevice('test-id', PushProvider.firebase); - verify(mockDio.post('/devices', - data: {'id': 'test-id', 'push_provider': 'test'})).called(1); + verify( + mockDio.post( + '/devices', + data: {'id': 'test-id', 'push_provider': 'firebase'}, + ), + ).called(1); }); test('getDevices', () async {