Skip to content

Commit

Permalink
[FEAT] Code refactore for storing list of universal object callbacks …
Browse files Browse the repository at this point in the history
…& implemented onLinkShareResponse callback
  • Loading branch information
Renemari Padillo committed May 19, 2016
1 parent 5618ae0 commit b6bcd14
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 19 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,7 @@ branchUniversalObj.onShareSheetLaunched(function () {
});
```

###### onShareSheetDismissed (Android & iOS)
###### onShareSheetDismissed

The event fires when the share sheet is dismissed.

Expand All @@ -514,7 +514,7 @@ branchUniversalObj.onShareSheetDismissed(function () {
});
```

###### onLinkShareResponse (Android ONLY)
###### onLinkShareResponse

The event returns a dictionary of the response data.

Expand Down
2 changes: 1 addition & 1 deletion src/ios/BranchSDK.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
@property (copy) NSDate *expirationDate;

@property (strong, nonatomic) NSMutableArray *branchUniversalObjArray;
@property (strong, nonatomic) NSMutableArray *branchUniversalSharesheetCallbackArray;

// BranchSDK Basic Methods
- (void)initSession:(CDVInvokedUrlCommand*)command;
Expand All @@ -46,6 +45,7 @@
- (void)generateShortUrl:(CDVInvokedUrlCommand*)command;
- (void)showShareSheet:(CDVInvokedUrlCommand*)command;
- (void)onShareLinkDialogDismissed:(CDVInvokedUrlCommand*)command;
- (void)onLinkShareResponse:(CDVInvokedUrlCommand*)command;
- (void)listOnSpotlight:(CDVInvokedUrlCommand*)command;

@end
78 changes: 66 additions & 12 deletions src/ios/BranchSDK.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,17 @@

#import "BranchSDK.h"

@interface BranchSDK()

- (void)doShareLinkResponse:(int)callbackId activityType:(NSString*)response;

@end

@implementation BranchSDK

- (void)pluginInitialize
{
self.branchUniversalObjArray = [[NSMutableArray alloc] init];
self.branchUniversalSharesheetCallbackArray = [[NSMutableArray alloc] init];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(postUnhandledURL:) name:@"BSDKPostUnhandledURL" object:nil];
}
Expand Down Expand Up @@ -359,8 +364,17 @@ - (void)createBranchUniversalObject:(CDVInvokedUrlCommand*)command
}
}

[self.branchUniversalObjArray addObject:branchUniversalObj];
[self.branchUniversalSharesheetCallbackArray addObject:command.callbackId];
// [self.branchUniversalObjArray addObject:branchUniversalObj];

// Instantiate callback ids
NSMutableDictionary *branchUniversalObjDict = [NSMutableDictionary dictionaryWithDictionary:@{
@"branchUniversalObj": branchUniversalObj,
@"onShareSheetDismissed": command.callbackId,
@"onShareSheetLaunched": command.callbackId,
@"onLinkShareResponse": command.callbackId,
@"onChannelSelected": command.callbackId
}];
[self.branchUniversalObjArray addObject:branchUniversalObjDict];

NSNumber *branchUniversalObjectId = [[NSNumber alloc] initWithInteger:([self.branchUniversalObjArray count] - 1)];
NSString *message = @"createBranchUniversalObject Success";
Expand All @@ -373,8 +387,9 @@ - (void)createBranchUniversalObject:(CDVInvokedUrlCommand*)command
- (void)registerView:(CDVInvokedUrlCommand*)command
{
int branchUniversalObjectId = [[command.arguments objectAtIndex:0] intValue];

BranchUniversalObject *branchUniversalObj = [self.branchUniversalObjArray objectAtIndex:branchUniversalObjectId];

NSMutableDictionary *branchUniversalObjDict = [self.branchUniversalObjArray objectAtIndex:branchUniversalObjectId];
BranchUniversalObject *branchUniversalObj = [branchUniversalObjDict objectForKey:@"branchUniversalObj"];

[branchUniversalObj registerViewWithCallback:^(NSDictionary *params, NSError *error) {
CDVPluginResult *pluginResult = nil;
Expand All @@ -394,7 +409,8 @@ - (void)generateShortUrl:(CDVInvokedUrlCommand*)command
NSDictionary *arg1 = [command.arguments objectAtIndex:1];
NSDictionary *arg2 = [command.arguments objectAtIndex:2];

BranchUniversalObject *branchUniversalObj = [self.branchUniversalObjArray objectAtIndex:branchUniversalObjectId];
NSMutableDictionary *branchUniversalObjDict = [self.branchUniversalObjArray objectAtIndex:branchUniversalObjectId];
BranchUniversalObject *branchUniversalObj = [branchUniversalObjDict objectForKey:@"branchUniversalObj"];

BranchLinkProperties *props = [[BranchLinkProperties alloc] init];

Expand Down Expand Up @@ -457,7 +473,8 @@ - (void)showShareSheet:(CDVInvokedUrlCommand*)command
NSDictionary *arg1 = [command.arguments objectAtIndex:1];
NSDictionary *arg2 = [command.arguments objectAtIndex:2];

BranchUniversalObject *branchUniversalObj = [self.branchUniversalObjArray objectAtIndex:branchUniversalObjectId];
NSMutableDictionary *branchUniversalObjDict = [self.branchUniversalObjArray objectAtIndex:branchUniversalObjectId];
BranchUniversalObject *branchUniversalObj = [branchUniversalObjDict objectForKey:@"branchUniversalObj"];

BranchLinkProperties *linkProperties = [[BranchLinkProperties alloc] init];

Expand All @@ -480,22 +497,59 @@ - (void)showShareSheet:(CDVInvokedUrlCommand*)command
andShareText:shareText
fromViewController:self.viewController
completion:^(NSString *activityType, BOOL completed) {
CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:@"Share link dismissed."];

int listenerCallbackId = [[command.arguments objectAtIndex:0] intValue];
[pluginResult setKeepCallbackAsBool:TRUE];
[self.commandDelegate sendPluginResult:pluginResult callbackId:[self.branchUniversalSharesheetCallbackArray objectAtIndex:listenerCallbackId]];

if (completed) {
[self doShareLinkResponse:listenerCallbackId activityType:activityType];
}

CDVPluginResult *shareDialogDismissed = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];

NSMutableDictionary *branchUniversalObjDict = [self.branchUniversalObjArray objectAtIndex:listenerCallbackId];

[shareDialogDismissed setKeepCallbackAsBool:TRUE];

[self.commandDelegate sendPluginResult:shareDialogDismissed callbackId:[branchUniversalObjDict objectForKey:@"onShareSheetDismissed"]];
}];
}

- (void)doShareLinkResponse:(int)callbackId activityType:(NSString*)response {
CDVPluginResult *linkShareResponse = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:response];

NSMutableDictionary *branchUniversalObjDict = [self.branchUniversalObjArray objectAtIndex:callbackId];

[linkShareResponse setKeepCallbackAsBool:TRUE];

[self.commandDelegate sendPluginResult:linkShareResponse callbackId:[branchUniversalObjDict objectForKey:@"onLinkShareResponse"]];
}

- (void)onShareLinkDialogDismissed:(CDVInvokedUrlCommand*)command
{
int listenerCallbackId = [[command.arguments objectAtIndex:0] intValue];
[self.branchUniversalSharesheetCallbackArray replaceObjectAtIndex:listenerCallbackId withObject:command.callbackId];

NSMutableDictionary *newBranchUniversalObjDict = [self.branchUniversalObjArray objectAtIndex:listenerCallbackId];
[newBranchUniversalObjDict setObject:command.callbackId forKey:@"onShareSheetDismissed"];

[self.branchUniversalObjArray replaceObjectAtIndex:listenerCallbackId withObject:newBranchUniversalObjDict];
}

- (void)onLinkShareResponse:(CDVInvokedUrlCommand*)command
{
int listenerCallbackId = [[command.arguments objectAtIndex:0] intValue];

NSMutableDictionary *newBranchUniversalObjDict = [self.branchUniversalObjArray objectAtIndex:listenerCallbackId];
[newBranchUniversalObjDict setObject:command.callbackId forKey:@"onLinkShareResponse"];

[self.branchUniversalObjArray replaceObjectAtIndex:listenerCallbackId withObject:newBranchUniversalObjDict];
}

- (void)listOnSpotlight:(CDVInvokedUrlCommand*)command {
int branchUniversalObjectId = [[command.arguments objectAtIndex:0] intValue];
BranchUniversalObject *branchUniversalObj = [self.branchUniversalObjArray objectAtIndex:branchUniversalObjectId];

NSMutableDictionary *branchUniversalObjDict = [self.branchUniversalObjArray objectAtIndex:branchUniversalObjectId];
BranchUniversalObject *branchUniversalObj = [branchUniversalObjDict objectForKey:@"branchUniversalObj"];

[branchUniversalObj listOnSpotlightWithCallback:^(NSString *string, NSError *error) {
CDVPluginResult* pluginResult = nil;
if (!error) {
Expand Down
2 changes: 1 addition & 1 deletion testbed/www/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ function ShowShareSheet()
console.log('Share sheet launched');
});
branchUniversalObj.onShareSheetDismissed(function () {
console.log('Share sheet dimissed');
console.log('Share sheet dismissed');
});
branchUniversalObj.onLinkShareResponse(function (res) {
console.log('Share link response: ' + JSON.stringify(res));
Expand Down
4 changes: 1 addition & 3 deletions www/branch.js
Original file line number Diff line number Diff line change
Expand Up @@ -313,9 +313,7 @@ Branch.prototype.createBranchUniversalObject = function (options) {
*/
obj.onLinkShareResponse = function (callback) {

if (deviceVendor.indexOf('Apple') < 0) {
executeCallback('onLinkShareResponse', callback, [obj.instanceId]);
}
executeCallback('onLinkShareResponse', callback, [obj.instanceId]);

};

Expand Down

0 comments on commit b6bcd14

Please sign in to comment.