react-native/ReactKit/Views/RCTNavigatorManager.m
Christopher Chedeau 61b8c61903 Updates from Thu Mar 5
- [react_native] JS files for D1885531 | Martin Konicek
- Ported TabBarIOS to OSS and unified implementation | Nick Lockwood
- [react-packager] Add minify option as query param | Amjad Masad
- [ReactNative] Fix ExpandingText prop types | Christopher Chedeau
- [react-packager] Make dev a query param option | Amjad Masad
2015-03-06 09:55:10 -08:00

48 lines
1.3 KiB
Objective-C

// Copyright 2004-present Facebook. All Rights Reserved.
#import "RCTNavigatorManager.h"
#import "RCTBridge.h"
#import "RCTConvert.h"
#import "RCTNavigator.h"
#import "RCTSparseArray.h"
#import "RCTUIManager.h"
@implementation RCTNavigatorManager
- (UIView *)view
{
return [[RCTNavigator alloc] initWithEventDispatcher:self.bridge.eventDispatcher];
}
RCT_EXPORT_VIEW_PROPERTY(requestedTopOfStack)
- (NSDictionary *)customDirectEventTypes
{
return @{
@"topNavigationProgress": @{
@"registrationName": @"onNavigationProgress"
},
};
}
// TODO: remove error callbacks
- (void)requestSchedulingJavaScriptNavigation:(NSNumber *)reactTag
errorCallback:(RCTResponseSenderBlock)errorCallback
callback:(__unused RCTResponseSenderBlock)callback
{
RCT_EXPORT();
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry){
RCTNavigator *navigator = viewRegistry[reactTag];
if ([navigator isKindOfClass:[RCTNavigator class]]) {
BOOL wasAcquired = [navigator requestSchedulingJavaScriptNavigation];
callback(@[@(wasAcquired)]);
} else {
RCTLogError(@"Cannot set lock: %@ (tag #%@) is not an RCTNavigator", navigator, reactTag);
}
}];
}
@end