Skip to content

Commit 3c303f9

Browse files
committed
feat: add BrownfieldNavigation TurboModule and other classes
1 parent fed9d95 commit 3c303f9

10 files changed

Lines changed: 561 additions & 1 deletion
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import Foundation
2+
3+
@objc public protocol BrownfieldNavigationDelegate: AnyObject {
4+
5+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//
2+
// BrownfieldNavigationManager.swift
3+
//
4+
// Created by Hur Ali on 10/02/2026.
5+
//
6+
7+
public class BrownfieldNavigationManager: NSObject {
8+
@objc public static let shared = BrownfieldNavigationManager()
9+
private var navigationDelegate: BrownfieldNavigationDelegate?
10+
11+
public func setDelegate(navigationDelegate: BrownfieldNavigationDelegate) {
12+
self.navigationDelegate = navigationDelegate
13+
}
14+
15+
@objc public func getDelegate() -> BrownfieldNavigationDelegate {
16+
return self.navigationDelegate!
17+
}
18+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// NativeBrownfieldNavigation.h
3+
//
4+
// Created by Hur Ali on 10/02/2026.
5+
//
6+
7+
#ifdef __cplusplus
8+
9+
#import <ReactNativeBrownfield/ReactNativeBrownfield.h>
10+
11+
@interface NativeBrownfieldNavigation : NSObject <NativeBrownfieldNavigationSpec>
12+
13+
@end
14+
15+
#endif
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#import "NativeBrownfieldNavigation.h"
2+
3+
#if __has_include("ReactBrownfield/ReactBrownfield-Swift.h")
4+
#import "ReactBrownfield/ReactBrownfield-Swift.h"
5+
#else
6+
#import "ReactBrownfield-Swift.h"
7+
#endif
8+
9+
@implementation NativeBrownfieldNavigation
10+
11+
- (void)temporary {
12+
NSLog(@"temporary");
13+
}
14+
15+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
16+
(const facebook::react::ObjCTurboModule::InitParams &)params
17+
{
18+
return std::make_shared<facebook::react::NativeBrownfieldNavigationSpecJSI>(params);
19+
}
20+
21+
+ (NSString *)moduleName
22+
{
23+
return @"NativeBrownfieldNavigation";
24+
}
25+
26+
@end

packages/react-native-brownfield/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"license": "MIT",
55
"author": "Michal Chudziak <mike.chudziak@callstack.com>",
66
"bin": {
7-
"brownfield": "lib/commonjs/scripts/brownfield.js"
7+
"brownfield": "lib/commonjs/scripts/brownfield.js",
8+
"brownfield-navigation-codegen": "lib/commonjs/scripts/brownfield-navigation.js"
89
},
910
"contributors": [
1011
"Piotr Drapich <piotr.drapich@callstack.com>"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import NativeBrownfieldNavigation from './NativeBrownfieldNavigation';
2+
3+
const BrownfieldNavigation = {
4+
temporary: () => {
5+
NativeBrownfieldNavigation.temporary();
6+
},
7+
};
8+
9+
export default BrownfieldNavigation;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { TurboModuleRegistry, type TurboModule } from 'react-native';
2+
3+
export interface Spec extends TurboModule {
4+
temporary(): void;
5+
}
6+
7+
export default TurboModuleRegistry.getEnforcing<Spec>(
8+
'NativeBrownfieldNavigation'
9+
);

packages/react-native-brownfield/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Platform } from 'react-native';
22
import ReactNativeBrownfieldModule from './NativeReactNativeBrownfieldModule';
3+
import BrownfieldNavigation from './BrownfieldNavigation';
34

45
const ReactNativeBrownfield = {
56
popToNative: (animated?: boolean): void => {
@@ -24,3 +25,4 @@ const ReactNativeBrownfield = {
2425
};
2526

2627
export default ReactNativeBrownfield;
28+
export { BrownfieldNavigation };

0 commit comments

Comments
 (0)