Skip to content

fix(core): React-Native 0.59 Support #50

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Mar 29, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ jobs:
- checkout
- *getDeps
- *attach

- run: yarn test-app test:android

test-ios-vanilla:
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
packages/core/docs/
build/
node_modules/
packages/test-app/seed/
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
]
},
"devDependencies": {
"@babel/core": "^7.4.0",
"@commitlint/cli": "^7.0.0",
"@commitlint/config-conventional": "^7.0.1",
"codecov": "^3.0.4",
Expand All @@ -68,8 +69,8 @@
"lint-staged": "^7.2.0",
"npm-run-all": "^4.1.3",
"prettier": "^1.14.2",
"react": "16.6.1",
"react-native": "^0.57.3",
"react": "16.8.3",
"react-native": "0.59.2",
"rimraf": "^2.6.2"
}
}
4 changes: 2 additions & 2 deletions packages/core/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.60'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21'
}
}

Expand Down Expand Up @@ -41,5 +41,5 @@ dependencies {
api 'com.segment.analytics.android:analytics:4.+'

api 'com.facebook.react:react-native:+'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should fix these versions too when we get the chance.

api 'org.jetbrains.kotlin:kotlin-stdlib:1.2.+'
api 'org.jetbrains.kotlin:kotlin-stdlib:1.3.21'
}
5 changes: 2 additions & 3 deletions packages/core/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,9 @@

### Integration

**Ƭ Integration**: * `function` | `object`
*
**Ƭ Integration**: *`function` \| `object`*

*Defined in analytics.ts:8*
*Defined in [analytics.ts:8](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L8)*

___

28 changes: 14 additions & 14 deletions packages/core/docs/classes/analytics.client.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

**● ready**: *`false`* = false

*Defined in analytics.ts:96*
*Defined in [analytics.ts:96](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L96)*

Whether the client is ready to send events to Segment.

Expand All @@ -54,7 +54,7 @@ ___

▸ **alias**(newId: *`string`*): `Promise`<`void`>

*Defined in analytics.ts:260*
*Defined in [analytics.ts:260](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L260)*

Merge two user identities, effectively connecting two sets of user data as one. This may not be supported by all integrations.

Expand All @@ -75,7 +75,7 @@ ___

▸ **catch**(handler: *[ErrorHandler]()*): `this`

*Defined in analytics.ts:109*
*Defined in [analytics.ts:109](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L109)*

Catch React-Native bridge errors

Expand All @@ -96,7 +96,7 @@ ___

▸ **disable**(): `Promise`<`void`>

*Defined in analytics.ts:299*
*Defined in [analytics.ts:299](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L299)*

Completely disable the sending of any analytics data.

Expand All @@ -111,7 +111,7 @@ ___

▸ **enable**(): `Promise`<`void`>

*Defined in analytics.ts:289*
*Defined in [analytics.ts:289](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L289)*

Enable the sending of analytics data. Enabled by default.

Expand All @@ -126,7 +126,7 @@ ___

▸ **flush**(): `Promise`<`void`>

*Defined in analytics.ts:280*
*Defined in [analytics.ts:280](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L280)*

Trigger an upload of all queued events.

Expand All @@ -141,7 +141,7 @@ ___

▸ **group**(groupId: *`string`*, traits?: *[JsonMap]()*): `Promise`<`void`>

*Defined in analytics.ts:247*
*Defined in [analytics.ts:247](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L247)*

Associate a user with a group, organization, company, project, or w/e _you_ call them.

Expand All @@ -163,7 +163,7 @@ ___

▸ **identify**(user: *`string`*, traits?: *[JsonMap]()*): `Promise`<`void`>

*Defined in analytics.ts:235*
*Defined in [analytics.ts:235](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L235)*

Associate a user with their unique ID and record traits about them.

Expand All @@ -185,7 +185,7 @@ ___

▸ **middleware**(middleware: *[Middleware]()*): `this`

*Defined in analytics.ts:147*
*Defined in [analytics.ts:147](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L147)*

Append a new middleware to the middleware chain.

Expand Down Expand Up @@ -223,7 +223,7 @@ ___

▸ **reset**(): `Promise`<`void`>

*Defined in analytics.ts:270*
*Defined in [analytics.ts:270](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L270)*

Reset any user state that is cached on the device.

Expand All @@ -238,7 +238,7 @@ ___

▸ **screen**(name: *`string`*, properties?: *[JsonMap]()*): `Promise`<`void`>

*Defined in analytics.ts:221*
*Defined in [analytics.ts:221](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L221)*

Record the screens or views your users see.

Expand All @@ -260,7 +260,7 @@ ___

▸ **setup**(writeKey: *`string`*, configuration?: *[Configuration](../interfaces/analytics.configuration.md)*): `Promise`<`void`>

*Defined in analytics.ts:186*
*Defined in [analytics.ts:186](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L186)*

Setup the Analytics module. All calls made before are queued and only executed if the configuration was successful.

Expand Down Expand Up @@ -290,7 +290,7 @@ ___

▸ **track**(event: *`string`*, properties?: *[JsonMap]()*): `Promise`<`void`>

*Defined in analytics.ts:203*
*Defined in [analytics.ts:203](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L203)*

Record the actions your users perform.

Expand All @@ -312,7 +312,7 @@ ___

▸ **useNativeConfiguration**(): `this`

*Defined in analytics.ts:159*
*Defined in [analytics.ts:159](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L159)*

Use the native configuration.

Expand Down
37 changes: 15 additions & 22 deletions packages/core/docs/interfaces/analytics.configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,9 @@

### `<Optional>` android

**● android**: * `undefined` &#124; `object`
*
**● android**: *`undefined` \| `object`*

*Defined in analytics.ts:69*
*Defined in [analytics.ts:69](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L69)*

Android specific settings.

Expand All @@ -39,20 +38,18 @@ ___

### `<Optional>` debug

**● debug**: * `undefined` &#124; `false` &#124; `true`
*
**● debug**: *`undefined` \| `false` \| `true`*

*Defined in analytics.ts:38*
*Defined in [analytics.ts:38](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L38)*

___
<a id="flushat"></a>

### `<Optional>` flushAt

**● flushAt**: * `undefined` &#124; `number`
*
**● flushAt**: *`undefined` \| `number`*

*Defined in analytics.ts:46*
*Defined in [analytics.ts:46](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L46)*

The number of queued events that the analytics client should flush at. Setting this to `1` will not queue any events and will use more battery.

Expand All @@ -63,10 +60,9 @@ ___

### `<Optional>` ios

**● ios**: * `undefined` &#124; `object`
*
**● ios**: *`undefined` \| `object`*

*Defined in analytics.ts:51*
*Defined in [analytics.ts:51](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L51)*

iOS specific settings.

Expand All @@ -75,10 +71,9 @@ ___

### `<Optional>` recordScreenViews

**● recordScreenViews**: * `undefined` &#124; `false` &#124; `true`
*
**● recordScreenViews**: *`undefined` \| `false` \| `true`*

*Defined in analytics.ts:17*
*Defined in [analytics.ts:19](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L19)*

Whether the analytics client should automatically make a screen call when a view controller is added to a view hierarchy. Because the iOS underlying implementation uses method swizzling, we recommend initializing the analytics client as early as possible.

Expand All @@ -89,10 +84,9 @@ ___

### `<Optional>` trackAppLifecycleEvents

**● trackAppLifecycleEvents**: * `undefined` &#124; `false` &#124; `true`
*
**● trackAppLifecycleEvents**: *`undefined` \| `false` \| `true`*

*Defined in analytics.ts:26*
*Defined in [analytics.ts:26](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L26)*

Whether the analytics client should automatically track application lifecycle events, such as "Application Installed", "Application Updated" and "Application Opened".

Expand All @@ -103,10 +97,9 @@ ___

### `<Optional>` trackAttributionData

**● trackAttributionData**: * `undefined` &#124; `false` &#124; `true`
*
**● trackAttributionData**: *`undefined` \| `false` \| `true`*

*Defined in analytics.ts:32*
*Defined in [analytics.ts:32](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L32)*

Whether the analytics client should automatically track attribution data from enabled providers using the mobile service.

Expand All @@ -119,7 +112,7 @@ ___

**● using**: *[Integration](../#integration)[]*

*Defined in analytics.ts:37*
*Defined in [analytics.ts:37](https://github.com/segmentio/analytics-react-native/blob/master/packages/core/src/analytics.ts#L37)*

Register a set of integrations to be used with this Analytics instance.

Expand Down
8 changes: 6 additions & 2 deletions packages/core/src/__tests__/analytics.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ it('catches bridge errors', async () => {
const error = new Error('test-error')
const onError = jest.fn()

getBridgeStub('track').mockImplementationOnce(() => Promise.reject(error))
getBridgeStub('track').mockImplementationOnce(
() => Promise.reject(error) as any
)
analytics.catch(onError)
analytics.track('test')

Expand Down Expand Up @@ -82,7 +84,9 @@ it('logs uncaught bridge errors', async () => {
message: 'test-error'
}

getBridgeStub('track').mockImplementationOnce(() => Promise.reject(error))
getBridgeStub('track').mockImplementationOnce(
() => Promise.reject(error) as any
)

expect(analytics.track('test')).rejects.toBe(error)
expect(console.error).not.toHaveBeenCalled()
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/__tests__/configuration.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ it('produces a valid configuration', async () => {
})

it('waits for integrations to register', async () => {
const stub = jest.fn(t => setTimeout(t, 500))
const stub: any = jest.fn(t => setTimeout(t, 500))

await configure(writeKey, {
using: [() => ({ then: stub })]
Expand Down
2 changes: 1 addition & 1 deletion packages/integrations/template/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.60'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.0'
}
}

Expand Down
20 changes: 0 additions & 20 deletions packages/test-app/android-workaround.js

This file was deleted.

4 changes: 4 additions & 0 deletions packages/test-app/e2e/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"setupFilesAfterEnv": ["./init.js"],
"testEnvironment": "node"
}
18 changes: 9 additions & 9 deletions packages/test-app/e2e/init.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
const detox = require('detox')
const config = require('../package.json').detox
const adapter = require('detox/runners/mocha/adapter')
const adapter = require('detox/runners/jest/adapter')

require('isomorphic-fetch')

before(async () => {
await detox.init(config)
})
jest.setTimeout(120000)
jasmine.getEnv().addReporter(adapter)

beforeEach(async function() {
await adapter.beforeEach(this)
beforeAll(async () => {
await detox.init(config)
})

afterEach(async function() {
await adapter.afterEach(this)
beforeEach(async () => {
await adapter.beforeEach()
})

after(async () => {
afterAll(async () => {
await adapter.afterAll()
await detox.cleanup()
})
2 changes: 1 addition & 1 deletion packages/test-app/e2e/main.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ if (CIRCLE_WORKFLOW_ID) {
await element(by.text('Flush')).tap()

await Promise.all(
require('../src/calls.json').map(([type, ...args]) =>
require('../seed/calls.json').map(([type, ...args]) =>
hasMatchingCall(type, ...args)
)
)
Expand Down
3 changes: 0 additions & 3 deletions packages/test-app/e2e/mocha.opts

This file was deleted.

Loading