Skip to content

Commit

Permalink
DeviceEventManagerModule.java->.kt (#45813)
Browse files Browse the repository at this point in the history
Summary:
Pull Request resolved: #45813

# Changelog:
[Internal] -

As in the title.

Differential Revision: D60446332
  • Loading branch information
rshest authored and facebook-github-bot committed Jul 30, 2024
1 parent cb105c5 commit 926d5b1
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 79 deletions.
11 changes: 8 additions & 3 deletions packages/react-native/ReactAndroid/api/ReactAndroid.api
Original file line number Diff line number Diff line change
Expand Up @@ -3140,13 +3140,18 @@ public abstract interface class com/facebook/react/modules/core/DefaultHardwareB
public abstract fun invokeDefaultOnBackPressed ()V
}

public class com/facebook/react/modules/core/DeviceEventManagerModule : com/facebook/fbreact/specs/NativeDeviceEventManagerSpec {
public final class com/facebook/react/modules/core/DeviceEventManagerModule : com/facebook/fbreact/specs/NativeDeviceEventManagerSpec {
public static final field Companion Lcom/facebook/react/modules/core/DeviceEventManagerModule$Companion;
public static final field NAME Ljava/lang/String;
public fun <init> (Lcom/facebook/react/bridge/ReactApplicationContext;Lcom/facebook/react/modules/core/DefaultHardwareBackBtnHandler;)V
public fun emitHardwareBackPressed ()V
public fun emitNewIntentReceived (Landroid/net/Uri;)V
public final fun emitHardwareBackPressed ()V
public final fun emitNewIntentReceived (Landroid/net/Uri;)V
public fun invokeDefaultBackPressHandler ()V
}

public final class com/facebook/react/modules/core/DeviceEventManagerModule$Companion {
}

public abstract interface class com/facebook/react/modules/core/DeviceEventManagerModule$RCTDeviceEventEmitter : com/facebook/react/bridge/JavaScriptModule {
public abstract fun emit (Ljava/lang/String;Ljava/lang/Object;)V
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

package com.facebook.react.modules.core

import android.net.Uri
import com.facebook.proguard.annotations.DoNotStrip
import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.JavaScriptModule
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.UiThreadUtil
import com.facebook.react.module.annotations.ReactModule

/** Native module that handles device hardware events like hardware back presses. */
@ReactModule(name = com.facebook.fbreact.specs.NativeDeviceEventManagerSpec.NAME)
public class DeviceEventManagerModule(
reactContext: ReactApplicationContext?,
backBtnHandler: DefaultHardwareBackBtnHandler
) : com.facebook.fbreact.specs.NativeDeviceEventManagerSpec(reactContext) {
@DoNotStrip
public fun interface RCTDeviceEventEmitter : JavaScriptModule {
public fun emit(eventName: String, data: Any?)
}

private val invokeDefaultBackPressRunnable: Runnable = Runnable {
UiThreadUtil.assertOnUiThread()
backBtnHandler.invokeDefaultOnBackPressed()
}

/** Sends an event to the JS instance that the hardware back has been pressed. */
public fun emitHardwareBackPressed() {
val reactApplicationContext: ReactApplicationContext? =
getReactApplicationContextIfActiveOrWarn()
reactApplicationContext?.emitDeviceEvent("hardwareBackPress", null)
}

/** Sends an event to the JS instance that a new intent was received. */
public fun emitNewIntentReceived(uri: Uri) {
val reactApplicationContext: ReactApplicationContext? =
getReactApplicationContextIfActiveOrWarn()
val map = Arguments.createMap()
map.putString("url", uri.toString())
reactApplicationContext?.emitDeviceEvent("url", map)
}

/**
* Invokes the default back handler for the host of this catalyst instance. This should be invoked
* if JS does not want to handle the back press itself.
*/
override fun invokeDefaultBackPressHandler() {
// There should be no need to check if the catalyst instance is alive. After initialization
// the thread instances cannot be null, and scheduling on a thread after ReactApplicationContext
// teardown is a noop.
getReactApplicationContext().runOnUiQueueThread(invokeDefaultBackPressRunnable)
}

public companion object {
public const val NAME: String = com.facebook.fbreact.specs.NativeDeviceEventManagerSpec.NAME
}
}

0 comments on commit 926d5b1

Please sign in to comment.