Skip to content

Commit ca1f45a

Browse files
authored
Merge pull request #123 from BranchMetrics/new-events
BUO.userCompletedAction and event constants
2 parents 9b75067 + 7d75839 commit ca1f45a

File tree

8 files changed

+91
-31
lines changed

8 files changed

+91
-31
lines changed

README.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,12 @@ Please see the Branch [SDK Integration Guide](https://dev.branch.io/getting-star
5555

5656
## Usage
5757
```js
58-
import branch from 'react-native-branch'
58+
import branch, { AddToWishlistEvent,
59+
PurchasedEvent,
60+
PurchaseInitiatedEvent,
61+
RegisterViewEvent,
62+
ShareCompletedEvent,
63+
ShareInitiatedEvent } from 'react-native-branch'
5964

6065
// Subscribe to incoming links (both Branch & non-Branch)
6166
// bundle = object with: {params, error, uri}
@@ -71,14 +76,19 @@ branch.setIdentity('theUserId')
7176
branch.userCompletedAction('Purchased Item', {item: 123})
7277
branch.logout()
7378

74-
let branchUniversalObject = branch.createBranchUniversalObject('canonicalIdentifier', {metadata: {prop1: 'test', prop2: 'abc'}, title: 'Cool Content!', contentDescription: 'Cool Content Description'})
79+
let branchUniversalObject = branch.createBranchUniversalObject('canonicalIdentifier', {
80+
automaticallyListOnSpotlight: true,
81+
metadata: {prop1: 'test', prop2: 'abc'},
82+
title: 'Cool Content!',
83+
contentDescription: 'Cool Content Description'})
84+
let actionResult = await branchUniversalObject.userCompletedAction(RegisterViewEvent)
7585

7686
let shareOptions = { messageHeader: 'Check this out', messageBody: 'No really, check this out!' }
7787
let linkProperties = { feature: 'share', channel: 'RNApp' }
7888
let controlParams = { $desktop_url: 'http://example.com/home', $ios_url: 'http://example.com/ios' }
7989
let {channel, completed, error} = await branchUniversalObject.showShareSheet(shareOptions, linkProperties, controlParams)
8090
let {url} = await branchUniversalObject.generateShortUrl(linkProperties, controlParams)
81-
let viewResult = await branchUniversalObject.registerView()
91+
let viewResult = await branchUniversalObject.registerView() // deprecated. use userCompletedAction(RegisterViewEvent) instead.
8292
let spotlightResult = await branchUniversalObject.listOnSpotlight()
8393

8494
let rewards = await branch.loadRewards()

android/src/main/java/io/branch/rnbranch/RNBranchModule.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,15 @@ public void userCompletedAction(String event, ReadableMap appState) throws JSONE
167167
branch.userCompletedAction(event, convertMapToJson(appState));
168168
}
169169

170+
@ReactMethod
171+
public void userCompletedActionOnUniversalObject(String ident, String event, Promise promise) {
172+
BranchUniversalObject universalObject = findUniversalObjectOrReject(ident, promise);
173+
if (universalObject == null) return;
174+
175+
universalObject.userCompletedAction(event);
176+
promise.resolve(null);
177+
}
178+
170179
@ReactMethod
171180
public void showShareSheet(String ident, ReadableMap shareOptionsMap, ReadableMap linkPropertiesMap, ReadableMap controlParamsMap, Promise promise) {
172181
Context context = getReactApplicationContext();

ios/RNBranch.m

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,20 @@ - (BranchUniversalObject *)findUniversalObjectWithIdent:(NSString *)ident reject
196196
[branchInstance userCompletedAction:event withState:appState];
197197
}
198198

199+
#pragma mark userCompletedActionOnUniversalObject
200+
RCT_EXPORT_METHOD(
201+
userCompletedActionOnUniversalObject:(NSString *)identifier
202+
event:(NSString *)event
203+
resolver:(RCTPromiseResolveBlock)resolve
204+
rejecter:(RCTPromiseRejectBlock)reject
205+
) {
206+
BranchUniversalObject *branchUniversalObject = [self findUniversalObjectWithIdent:identifier rejecter:reject];
207+
if (!branchUniversalObject) return;
208+
209+
[branchUniversalObject userCompletedAction:event];
210+
resolve(NSNull.null);
211+
}
212+
199213
#pragma mark showShareSheet
200214
RCT_EXPORT_METHOD(
201215
showShareSheet:(NSString *)identifier

src/branchUniversalObject.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export default async function createBranchUniversalObject(identifier, options =
3030

3131
return this._tryFunction(RNBranch.showShareSheet, shareOptions, linkProperties, controlParams)
3232
},
33+
// deprecated in favor of userCompletedAction(RegisterViewEvent)
3334
registerView() {
3435
return this._tryFunction(RNBranch.registerView)
3536
},
@@ -40,6 +41,9 @@ export default async function createBranchUniversalObject(identifier, options =
4041
if (Platform.OS !== 'ios') return Promise.resolve()
4142
return this._tryFunction(RNBranch.listOnSpotlight)
4243
},
44+
userCompletedAction(event) {
45+
return this._tryFunction(RNBranch.userCompletedActionOnUniversalObject, event)
46+
},
4347
release() {
4448
RNBranch.releaseUniversalObject(this.ident)
4549
},

src/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ const INIT_SESSION_SUCCESS = 'RNBranch.initSessionSuccess'
1212
const INIT_SESSION_ERROR = 'RNBranch.initSessionError'
1313
const INIT_SESSION_TTL = 5000
1414

15+
export const AddToWishlistEvent = "Add to Wishlist"
16+
export const PurchasedEvent = "Purchased"
17+
export const PurchaseInitiatedEvent = "Purchase Started"
18+
export const RegisterViewEvent = "View"
19+
export const ShareCompletedEvent = "Share Completed"
20+
export const ShareInitiatedEvent = "Share Started"
21+
1522
class Branch {
1623
_launchTime = new Date().getTime();
1724
_initSessionResult = null;

testbed/testbed_carthage/src/BranchMethods.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { ScrollView, StyleSheet, Text, View } from 'react-native'
33

44
import Button from './Button'
55

6-
import branch from 'react-native-branch'
6+
import branch, { RegisterViewEvent } from 'react-native-branch'
77

88
const defaultBUO = {
99
title: 'wallo'
@@ -42,18 +42,6 @@ class BranchMethods extends Component {
4242
}
4343
}
4444

45-
registerView = async () => {
46-
if (!this.buo) await this.createBranchUniversalObject()
47-
try {
48-
let result = await this.buo.registerView()
49-
console.log('registerView', result)
50-
this.addResult('success', 'registerView', result)
51-
} catch (err) {
52-
console.log('registerView err', err.toString())
53-
this.addResult('error', 'registerView', err.toString())
54-
}
55-
}
56-
5745
listOnSpotlight = async () => {
5846
if (!this.buo) await this.createBranchUniversalObject()
5947
try {
@@ -111,6 +99,18 @@ class BranchMethods extends Component {
11199
}
112100
}
113101

102+
userCompletedAction = async() => {
103+
if (!this.buo) await this.createBranchUniversalObject()
104+
try {
105+
let result = await this.buo.userCompletedAction(RegisterViewEvent)
106+
console.log('userCompletedAction', result)
107+
this.addResult('success', 'userCompletedAction', result)
108+
} catch (err) {
109+
console.log('userCompletedAction err', err.toString())
110+
this.addResult('error', 'userCompletedAction', err.toString())
111+
}
112+
}
113+
114114
addResult(type, slug, payload) {
115115
let result = { type, slug, payload }
116116
this.setState({
@@ -138,8 +138,8 @@ class BranchMethods extends Component {
138138
<Text style={styles.header}>METHODS</Text>
139139
<ScrollView style={styles.buttonsContainer}>
140140
<Button onPress={this.createBranchUniversalObject}>createBranchUniversalObject</Button>
141+
<Button onPress={this.userCompletedAction}>userCompletedAction</Button>
141142
<Button onPress={this.generateShortUrl}>generateShortUrl</Button>
142-
<Button onPress={this.registerView}>registerView</Button>
143143
<Button onPress={this.listOnSpotlight}>listOnSpotlight</Button>
144144
<Button onPress={this.showShareSheet}>showShareSheet</Button>
145145
<Button onPress={this.redeemRewards.bind(this, '')}>redeemRewards</Button>

testbed/testbed_cocoapods/android/app/app.iml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,29 @@
7676
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
7777
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
7878
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
79+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
7980
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
82+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
8083
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
84+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
85+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
86+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
87+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
88+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
89+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
90+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
8191
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
92+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
8293
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
94+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
8395
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
96+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
97+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
8498
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
99+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
85100
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
101+
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
86102
</content>
87103
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
88104
<orderEntry type="sourceFolder" forTests="false" />

testbed/testbed_cocoapods/src/BranchMethods.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { ScrollView, StyleSheet, Text, View } from 'react-native'
33

44
import Button from './Button'
55

6-
import branch from 'react-native-branch'
6+
import branch, { RegisterViewEvent } from 'react-native-branch'
77

88
const defaultBUO = {
99
title: 'wallo'
@@ -42,18 +42,6 @@ class BranchMethods extends Component {
4242
}
4343
}
4444

45-
registerView = async () => {
46-
if (!this.buo) await this.createBranchUniversalObject()
47-
try {
48-
let result = await this.buo.registerView()
49-
console.log('registerView', result)
50-
this.addResult('success', 'registerView', result)
51-
} catch (err) {
52-
console.log('registerView err', err.toString())
53-
this.addResult('error', 'registerView', err.toString())
54-
}
55-
}
56-
5745
listOnSpotlight = async () => {
5846
if (!this.buo) await this.createBranchUniversalObject()
5947
try {
@@ -111,6 +99,18 @@ class BranchMethods extends Component {
11199
}
112100
}
113101

102+
userCompletedAction = async() => {
103+
if (!this.buo) await this.createBranchUniversalObject()
104+
try {
105+
let result = await this.buo.userCompletedAction(RegisterViewEvent)
106+
console.log('userCompletedAction', result)
107+
this.addResult('success', 'userCompletedAction', result)
108+
} catch (err) {
109+
console.log('userCompletedAction err', err.toString())
110+
this.addResult('error', 'userCompletedAction', err.toString())
111+
}
112+
}
113+
114114
addResult(type, slug, payload) {
115115
let result = { type, slug, payload }
116116
this.setState({
@@ -138,8 +138,8 @@ class BranchMethods extends Component {
138138
<Text style={styles.header}>METHODS</Text>
139139
<ScrollView style={styles.buttonsContainer}>
140140
<Button onPress={this.createBranchUniversalObject}>createBranchUniversalObject</Button>
141+
<Button onPress={this.userCompletedAction}>userCompletedAction</Button>
141142
<Button onPress={this.generateShortUrl}>generateShortUrl</Button>
142-
<Button onPress={this.registerView}>registerView</Button>
143143
<Button onPress={this.listOnSpotlight}>listOnSpotlight</Button>
144144
<Button onPress={this.showShareSheet}>showShareSheet</Button>
145145
<Button onPress={this.redeemRewards.bind(this, '')}>redeemRewards</Button>

0 commit comments

Comments
 (0)