From b6efa6cf8a5b48108d0b841b588785b26f0e2c04 Mon Sep 17 00:00:00 2001 From: Wilko Kunert Date: Wed, 29 Apr 2020 13:48:45 +0200 Subject: [PATCH] feat(core): add method to put device token --- .../reactnative/core/RNAnalyticsModule.kt | 4 ++++ .../core/docs/classes/analytics.client.md | 19 +++++++++++++++++++ packages/core/ios/RNAnalytics/RNAnalytics.m | 5 +++++ packages/core/src/__mocks__/bridge.ts | 1 + packages/core/src/__tests__/analytics.spec.ts | 2 ++ packages/core/src/analytics.ts | 7 +++++++ packages/core/src/bridge.ts | 1 + 7 files changed, 39 insertions(+) diff --git a/packages/core/android/src/main/java/com/segment/analytics/reactnative/core/RNAnalyticsModule.kt b/packages/core/android/src/main/java/com/segment/analytics/reactnative/core/RNAnalyticsModule.kt index 9e247cc87..c0be2fc49 100644 --- a/packages/core/android/src/main/java/com/segment/analytics/reactnative/core/RNAnalyticsModule.kt +++ b/packages/core/android/src/main/java/com/segment/analytics/reactnative/core/RNAnalyticsModule.kt @@ -229,6 +229,10 @@ class RNAnalyticsModule(context: ReactApplicationContext): ReactContextBaseJavaM @ReactMethod fun getAnonymousId(promise: Promise) = promise.resolve(analytics.getAnalyticsContext().traits().anonymousId()) + + @ReactMethod + fun putDeviceToken(deviceToken: String) = + analytics.getAnalyticsContext().putDeviceToken(deviceToken) } private fun optionsFrom(context: ReadableMap?, integrations: ReadableMap?): Options { diff --git a/packages/core/docs/classes/analytics.client.md b/packages/core/docs/classes/analytics.client.md index db9fd229d..73cfa4500 100644 --- a/packages/core/docs/classes/analytics.client.md +++ b/packages/core/docs/classes/analytics.client.md @@ -233,6 +233,25 @@ analytics.middleware(async ({next, context}) => **Returns:** `this` +___ + + +### putDeviceToken + +▸ **putDeviceToken**(deviceToken: *`string`*): `Promise`<`void`> + +*Defined in analytics.ts:317* + +Set a device token. + +**Parameters:** + +| Name | Type | +| ------ | ------ | +| deviceToken | `string` | + +**Returns:** `Promise`<`void`> + ___ diff --git a/packages/core/ios/RNAnalytics/RNAnalytics.m b/packages/core/ios/RNAnalytics/RNAnalytics.m index 999369e49..bd223d36a 100644 --- a/packages/core/ios/RNAnalytics/RNAnalytics.m +++ b/packages/core/ios/RNAnalytics/RNAnalytics.m @@ -150,4 +150,9 @@ - (NSDictionary*)withContextAndIntegrations :(NSDictionary*)context :(NSDictiona resolver(anonymousId); } +RCT_EXPORT_METHOD(putDeviceToken:(NSString*)deviceToken) +{ + [SEGAnalytics.sharedAnalytics putDeviceToken:deviceToken]; +} + @end diff --git a/packages/core/src/__mocks__/bridge.ts b/packages/core/src/__mocks__/bridge.ts index 88daad5f1..401890d76 100644 --- a/packages/core/src/__mocks__/bridge.ts +++ b/packages/core/src/__mocks__/bridge.ts @@ -6,6 +6,7 @@ export default { getAnonymousId: jest.fn(), group: jest.fn(), identify: jest.fn(), + putDeviceToken: jest.fn(), reset: jest.fn(), screen: jest.fn(), setup: jest.fn(), diff --git a/packages/core/src/__tests__/analytics.spec.ts b/packages/core/src/__tests__/analytics.spec.ts index 65962b5ad..d8f97cce1 100644 --- a/packages/core/src/__tests__/analytics.spec.ts +++ b/packages/core/src/__tests__/analytics.spec.ts @@ -81,6 +81,8 @@ it('does .disable()', testCall('disable')) it('does .getAnonymousId()', testCall('getAnonymousId')) +it('does .putDeviceToken()', () => testCall('putDeviceToken')('d34db33f')) + it('logs uncaught bridge errors', async () => { const error = { message: 'test-error' diff --git a/packages/core/src/analytics.ts b/packages/core/src/analytics.ts index 9a80c6ad1..573dd686d 100644 --- a/packages/core/src/analytics.ts +++ b/packages/core/src/analytics.ts @@ -313,6 +313,13 @@ export module Analytics { return Bridge.getAnonymousId() } + /** Set a device token. */ + public async putDeviceToken(deviceToken: string) { + await this.wrapper.wait() + + Bridge.putDeviceToken(deviceToken) + } + private handleError(error: Error) { const { handlers } = this diff --git a/packages/core/src/bridge.ts b/packages/core/src/bridge.ts index 099659af5..7e5ccc408 100644 --- a/packages/core/src/bridge.ts +++ b/packages/core/src/bridge.ts @@ -74,6 +74,7 @@ export interface Bridge { enable(): Promise disable(): Promise getAnonymousId(): Promise + putDeviceToken(deviceToken: string): Promise } const bridge: Bridge = NativeModules.RNAnalytics