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); } diff --git a/packages/dart_client/test/src/client_test.dart b/packages/dart_client/test/src/client_test.dart index 738255cc..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', 'test'); + 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 { 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, ); } });