react-native-handoff/ios/RNHandoff.m
Marcos Rodriguez Vélez 31d005f93d Add url parameter
2021-09-24 22:28:32 -04:00

48 lines
1.4 KiB
Objective-C

#import "RNHandoff.h"
@implementation RNHandoff
RCT_EXPORT_MODULE()
NSMutableArray *activities = nil;
- (NSMutableArray *)activityList
{
if (activities == nil) activities = [NSMutableArray array];
return activities;
}
RCT_EXPORT_METHOD(becomeCurrent:(NSNumber * _Nonnull)activityId type:(NSString *)type title:(NSString *)title userInfo:(NSDictionary *)userInfo url:(NSString *)url)
{
NSUserActivity* activity = [[NSUserActivity alloc] initWithActivityType:type];
activity.title = title;
activity.eligibleForHandoff = YES;
if(!([[url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0)) {
activity.webpageURL = [NSURL URLWithString:url];
} else {
activity.userInfo = userInfo;
}
[activity becomeCurrent];
[[self activityList] addObject:@{ @"id": activityId, @"activity": activity }];
}
RCT_EXPORT_METHOD(invalidate:(NSNumber * _Nonnull)i)
{
int ix = [[self activityList] indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop) {
if ([[obj objectForKey:@"id"] intValue] == [i intValue]) {
*stop = YES;
return YES;
} else {
return NO;
}
}];
[[[[self activityList] objectAtIndex:ix] objectForKey:@"activity"] invalidate];
[[self activityList] removeObjectAtIndex:ix];
}
@end