@@ -36,20 +36,22 @@ class NavigationTurboModule(
3636 override fun onHostPause () {
3737 super .onHostPause()
3838 UiUtils .runOnMainThread {
39- navigator().onHostPause()
39+ navigator()? .onHostPause()
4040 }
4141 }
4242
4343 override fun onHostResume () {
4444 eventEmitter = EventEmitter (reactContext)
45- navigator().setEventEmitter(eventEmitter)
46- layoutFactory.init (
47- activity(),
48- eventEmitter,
49- navigator().getChildRegistry(),
50- (activity().application as NavigationApplication ).externalComponents
51- )
52- UiUtils .runOnMainThread { navigator().onHostResume() }
45+ navigator()?.let { navigator: Navigator ->
46+ navigator.setEventEmitter(eventEmitter)
47+ layoutFactory.init (
48+ activity(),
49+ eventEmitter,
50+ navigator.childRegistry,
51+ (reactApplicationContext.applicationContext as NavigationApplication ).externalComponents
52+ )
53+ UiUtils .runOnMainThread { navigator.onHostResume() }
54+ }
5355 }
5456 })
5557 }
@@ -82,7 +84,7 @@ class NavigationTurboModule(
8284 handle {
8385 Log .d(" NavigationTurboModule" , " setRoot handle ${Thread .currentThread()} " )
8486 val viewController = layoutFactory.create(layoutTree)
85- navigator().setRoot(
87+ navigator()? .setRoot(
8688 viewController,
8789 NativeCommandListener (" setRoot" , commandId, promise, eventEmitter, now)
8890 )
@@ -93,12 +95,12 @@ class NavigationTurboModule(
9395 handle {
9496 val defaultOptions = parse(options)
9597 layoutFactory.defaultOptions = defaultOptions
96- navigator().defaultOptions = defaultOptions
98+ navigator()? .defaultOptions = defaultOptions
9799 }
98100 }
99101
100102 override fun mergeOptions (componentId : String? , options : ReadableMap ? ) {
101- handle { navigator().mergeOptions(componentId, parse(options)) }
103+ handle { navigator()? .mergeOptions(componentId, parse(options)) }
102104 }
103105
104106 override fun push (
@@ -110,7 +112,7 @@ class NavigationTurboModule(
110112 val layoutTree = LayoutNodeParser .parse(jsonParser.parse(layout))
111113 handle {
112114 val viewController = layoutFactory.create(layoutTree)
113- navigator().push(
115+ navigator()? .push(
114116 componentId,
115117 viewController,
116118 NativeCommandListener (" push" , commandId, promise, eventEmitter, now)
@@ -125,7 +127,7 @@ class NavigationTurboModule(
125127 promise : Promise
126128 ) {
127129 handle {
128- navigator().pop(
130+ navigator()? .pop(
129131 componentId,
130132 parse(options),
131133 NativeCommandListener (" pop" , commandId, promise, eventEmitter, now)
@@ -140,7 +142,7 @@ class NavigationTurboModule(
140142 promise : Promise
141143 ) {
142144 handle {
143- navigator().popTo(
145+ navigator()? .popTo(
144146 componentId,
145147 parse(options),
146148 NativeCommandListener (" popTo" , commandId, promise, eventEmitter, now)
@@ -155,7 +157,7 @@ class NavigationTurboModule(
155157 promise : Promise
156158 ) {
157159 handle {
158- navigator().popToRoot(
160+ navigator()? .popToRoot(
159161 componentId,
160162 parse(options),
161163 NativeCommandListener (" popToRoot" , commandId, promise, eventEmitter, now)
@@ -175,7 +177,7 @@ class NavigationTurboModule(
175177 val layoutTree = LayoutNodeParser .parse(jsonParser.parse(children.getMap(i)))
176178 _children .add(layoutFactory.create(layoutTree))
177179 }
178- navigator().setStackRoot(
180+ navigator()? .setStackRoot(
179181 componentId,
180182 _children ,
181183 NativeCommandListener (" setStackRoot" , commandId, promise, eventEmitter, now)
@@ -187,7 +189,7 @@ class NavigationTurboModule(
187189 val layoutTree = LayoutNodeParser .parse(jsonParser.parse(layout))
188190 handle {
189191 val viewController = layoutFactory.create(layoutTree)
190- navigator().showModal(
192+ navigator()? .showModal(
191193 viewController,
192194 NativeCommandListener (" showModal" , commandId, promise, eventEmitter, now)
193195 )
@@ -201,8 +203,8 @@ class NavigationTurboModule(
201203 promise : Promise
202204 ) {
203205 handle {
204- navigator().mergeOptions(componentId, parse(options))
205- navigator().dismissModal(
206+ navigator()? .mergeOptions(componentId, parse(options))
207+ navigator()? .dismissModal(
206208 componentId,
207209 NativeCommandListener (" dismissModal" , commandId, promise, eventEmitter, now)
208210 )
@@ -211,7 +213,7 @@ class NavigationTurboModule(
211213
212214 override fun dismissAllModals (commandId : String , options : ReadableMap ? , promise : Promise ) {
213215 handle {
214- navigator().dismissAllModals(
216+ navigator()? .dismissAllModals(
215217 parse(options),
216218 NativeCommandListener (" dismissAllModals" , commandId, promise, eventEmitter, now)
217219 )
@@ -222,7 +224,7 @@ class NavigationTurboModule(
222224 val layoutTree = LayoutNodeParser .parse(jsonParser.parse(layout))
223225 handle {
224226 val viewController = layoutFactory.create(layoutTree)
225- navigator().showOverlay(
227+ navigator()? .showOverlay(
226228 viewController,
227229 NativeCommandListener (" showOverlay" , commandId, promise, eventEmitter, now)
228230 )
@@ -231,7 +233,7 @@ class NavigationTurboModule(
231233
232234 override fun dismissOverlay (commandId : String , componentId : String , promise : Promise ) {
233235 handle {
234- navigator().dismissOverlay(
236+ navigator()? .dismissOverlay(
235237 componentId,
236238 NativeCommandListener (" dismissOverlay" , commandId, promise, eventEmitter, now)
237239 )
@@ -240,7 +242,7 @@ class NavigationTurboModule(
240242
241243 override fun dismissAllOverlays (commandId : String , promise : Promise ) {
242244 handle {
243- navigator().dismissAllOverlays(
245+ navigator()? .dismissAllOverlays(
244246 NativeCommandListener (
245247 " dismissAllOverlays" ,
246248 commandId,
@@ -263,25 +265,36 @@ class NavigationTurboModule(
263265 null
264266 ) Options .EMPTY else Options .parse(
265267 ctx,
266- TypefaceLoader (activity() ),
268+ TypefaceLoader (reactApplicationContext ),
267269 jsonParser.parse(mergeOptions)
268270 )
269271 }
270272
271- private fun navigator (): Navigator {
272- return activity().navigator
273+ private fun navigator (): Navigator ? {
274+ val navigator = activity()?.navigator
275+ if (navigator == null ) {
276+ Log .e(" NavigationTurboModule" , " navigator is null!" )
277+ }
278+ return navigator
273279 }
274280
275281 private fun handle (task : Runnable ) {
276282 UiThread .post {
277- if (currentActivity != null && ! activity().isFinishing) {
283+ activity()?.let {
284+ if (it.isFinishing) {
285+ return @let
286+ }
278287 task.run ()
279288 }
280289 }
281290 }
282291
283- private fun activity (): NavigationActivity {
284- return currentActivity as NavigationActivity
292+ private fun activity (): NavigationActivity ? {
293+ val activity = reactApplicationContext.currentActivity as NavigationActivity ?
294+ if (activity == null ) {
295+ Log .e(" NavigationTurboModule" , " current activity is null!" )
296+ }
297+ return currentActivity as NavigationActivity ?
285298 }
286299
287300 companion object {
0 commit comments