Skip to content

Commit 570c124

Browse files
committed
feat: refactor listener registration
1 parent 40618e4 commit 570c124

File tree

4 files changed

+91
-75
lines changed

4 files changed

+91
-75
lines changed

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ dependencies {
9999
implementation "com.facebook.react:react-native:$react_native_version"
100100
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
101101
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1"
102-
implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:17.0.1"
102+
implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:18.0.1"
103103
}
104104

105105
if (isNewArchitectureEnabled()) {

android/src/main/java/com/freeraspreactnative/FreeraspReactNativeModule.kt

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,12 @@ import com.freeraspreactnative.utils.toEncodedWritableArray
3535
class FreeraspReactNativeModule(private val reactContext: ReactApplicationContext) :
3636
ReactContextBaseJavaModule(reactContext) {
3737

38-
private val listener = ThreatListener(WrapperThreatHandler, WrapperThreatHandler, WrapperThreatHandler)
38+
private val listener = ThreatListener(
39+
WrapperThreatHandler.threatDetected,
40+
WrapperThreatHandler.deviceState,
41+
WrapperThreatHandler.raspExecutionState
42+
)
43+
3944
private val lifecycleListener = object : LifecycleEventListener {
4045
override fun onHostResume() {
4146
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
@@ -236,17 +241,17 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
236241

237242
@ReactMethod
238243
fun storeExternalId(
239-
externalId: String, promise: Promise
244+
externalId: String, promise: Promise
240245
) {
241-
try {
242-
Talsec.storeExternalId(reactContext, externalId)
243-
promise.resolve("OK - Store external ID")
244-
} catch (e: Exception) {
245-
promise.reject(
246-
"NativePluginError",
247-
"Error during storeExternalId operation in Talsec Native Plugin"
248-
)
249-
}
246+
try {
247+
Talsec.storeExternalId(reactContext, externalId)
248+
promise.resolve("OK - Store external ID")
249+
} catch (e: Exception) {
250+
promise.reject(
251+
"NativePluginError",
252+
"Error during storeExternalId operation in Talsec Native Plugin"
253+
)
254+
}
250255
}
251256

252257
private fun buildTalsecConfig(config: ReadableMap): TalsecConfig {

android/src/main/java/com/freeraspreactnative/WrapperThreatHandler.kt

Lines changed: 73 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -7,92 +7,104 @@ import com.freeraspreactnative.dispatchers.ThreatDispatcher
77
import com.freeraspreactnative.events.RaspExecutionStateEvent
88
import com.freeraspreactnative.events.ThreatEvent
99

10-
internal object WrapperThreatHandler : ThreatListener.ThreatDetected, ThreatListener.DeviceState, ThreatListener.RaspExecutionState() {
10+
internal object WrapperThreatHandler {
1111

1212
internal val threatDispatcher = ThreatDispatcher()
1313
internal val executionStateDispatcher = ExecutionStateDispatcher()
1414

15-
override fun onRootDetected() {
16-
threatDispatcher.dispatchThreat(ThreatEvent.PrivilegedAccess)
17-
}
15+
internal val threatDetected = object : ThreatListener.ThreatDetected() {
1816

19-
override fun onDebuggerDetected() {
20-
threatDispatcher.dispatchThreat(ThreatEvent.Debug)
21-
}
17+
override fun onRootDetected() {
18+
threatDispatcher.dispatchThreat(ThreatEvent.PrivilegedAccess)
19+
}
2220

23-
override fun onEmulatorDetected() {
24-
threatDispatcher.dispatchThreat(ThreatEvent.Simulator)
25-
}
21+
override fun onDebuggerDetected() {
22+
threatDispatcher.dispatchThreat(ThreatEvent.Debug)
23+
}
2624

27-
override fun onTamperDetected() {
28-
threatDispatcher.dispatchThreat(ThreatEvent.AppIntegrity)
29-
}
25+
override fun onEmulatorDetected() {
26+
threatDispatcher.dispatchThreat(ThreatEvent.Simulator)
27+
}
3028

31-
override fun onUntrustedInstallationSourceDetected() {
32-
threatDispatcher.dispatchThreat(ThreatEvent.UnofficialStore)
33-
}
29+
override fun onTamperDetected() {
30+
threatDispatcher.dispatchThreat(ThreatEvent.AppIntegrity)
31+
}
3432

35-
override fun onHookDetected() {
36-
threatDispatcher.dispatchThreat(ThreatEvent.Hooks)
37-
}
33+
override fun onUntrustedInstallationSourceDetected() {
34+
threatDispatcher.dispatchThreat(ThreatEvent.UnofficialStore)
35+
}
3836

39-
override fun onDeviceBindingDetected() {
40-
threatDispatcher.dispatchThreat(ThreatEvent.DeviceBinding)
41-
}
37+
override fun onHookDetected() {
38+
threatDispatcher.dispatchThreat(ThreatEvent.Hooks)
39+
}
4240

43-
override fun onObfuscationIssuesDetected() {
44-
threatDispatcher.dispatchThreat(ThreatEvent.ObfuscationIssues)
45-
}
41+
override fun onDeviceBindingDetected() {
42+
threatDispatcher.dispatchThreat(ThreatEvent.DeviceBinding)
43+
}
4644

47-
override fun onMalwareDetected(suspiciousAppInfos: MutableList<SuspiciousAppInfo>) {
48-
threatDispatcher.dispatchMalware(suspiciousAppInfos ?: mutableListOf())
49-
}
45+
override fun onObfuscationIssuesDetected() {
46+
threatDispatcher.dispatchThreat(ThreatEvent.ObfuscationIssues)
47+
}
5048

51-
override fun onUnlockedDeviceDetected() {
52-
threatDispatcher.dispatchThreat(ThreatEvent.Passcode)
53-
}
49+
override fun onMalwareDetected(suspiciousAppInfos: MutableList<SuspiciousAppInfo>) {
50+
threatDispatcher.dispatchMalware(suspiciousAppInfos ?: mutableListOf())
51+
}
5452

55-
override fun onHardwareBackedKeystoreNotAvailableDetected() {
56-
threatDispatcher.dispatchThreat(ThreatEvent.SecureHardwareNotAvailable)
57-
}
53+
override fun onScreenshotDetected() {
54+
threatDispatcher.dispatchThreat(ThreatEvent.Screenshot)
55+
}
5856

59-
override fun onDeveloperModeDetected() {
60-
threatDispatcher.dispatchThreat(ThreatEvent.DevMode)
61-
}
57+
override fun onScreenRecordingDetected() {
58+
threatDispatcher.dispatchThreat(ThreatEvent.ScreenRecording)
59+
}
6260

63-
override fun onADBEnabledDetected() {
64-
threatDispatcher.dispatchThreat(ThreatEvent.ADBEnabled)
65-
}
61+
override fun onMultiInstanceDetected() {
62+
threatDispatcher.dispatchThreat(ThreatEvent.MultiInstance)
63+
}
6664

67-
override fun onSystemVPNDetected() {
68-
threatDispatcher.dispatchThreat(ThreatEvent.SystemVPN)
69-
}
65+
override fun onUnsecureWifiDetected() {
66+
threatDispatcher.dispatchThreat(ThreatEvent.UnsecureWifi)
67+
}
7068

71-
override fun onScreenshotDetected() {
72-
threatDispatcher.dispatchThreat(ThreatEvent.Screenshot)
73-
}
69+
override fun onTimeSpoofingDetected() {
70+
threatDispatcher.dispatchThreat(ThreatEvent.TimeSpoofing)
71+
}
7472

75-
override fun onScreenRecordingDetected() {
76-
threatDispatcher.dispatchThreat(ThreatEvent.ScreenRecording)
77-
}
73+
override fun onLocationSpoofingDetected() {
74+
threatDispatcher.dispatchThreat(ThreatEvent.LocationSpoofing)
75+
}
7876

79-
override fun onMultiInstanceDetected() {
80-
threatDispatcher.dispatchThreat(ThreatEvent.MultiInstance)
77+
override fun onAutomationDetected() {
78+
threatDispatcher.dispatchThreat(ThreatEvent.Automation)
79+
}
8180
}
8281

83-
override fun onUnsecureWifiDetected() {
84-
threatDispatcher.dispatchThreat(ThreatEvent.UnsecureWifi)
85-
}
82+
internal val deviceState = object : ThreatListener.DeviceState() {
8683

87-
override fun onTimeSpoofingDetected() {
88-
threatDispatcher.dispatchThreat(ThreatEvent.TimeSpoofing)
89-
}
84+
override fun onUnlockedDeviceDetected() {
85+
threatDispatcher.dispatchThreat(ThreatEvent.Passcode)
86+
}
87+
88+
override fun onHardwareBackedKeystoreNotAvailableDetected() {
89+
threatDispatcher.dispatchThreat(ThreatEvent.SecureHardwareNotAvailable)
90+
}
91+
92+
override fun onDeveloperModeDetected() {
93+
threatDispatcher.dispatchThreat(ThreatEvent.DevMode)
94+
}
95+
96+
override fun onADBEnabledDetected() {
97+
threatDispatcher.dispatchThreat(ThreatEvent.ADBEnabled)
98+
}
9099

91-
override fun onLocationSpoofingDetected() {
92-
threatDispatcher.dispatchThreat(ThreatEvent.LocationSpoofing)
100+
override fun onSystemVPNDetected() {
101+
threatDispatcher.dispatchThreat(ThreatEvent.SystemVPN)
102+
}
93103
}
94104

95-
override fun onAllChecksFinished() {
96-
executionStateDispatcher.dispatch(RaspExecutionStateEvent.AllChecksFinished)
105+
internal val raspExecutionState = object : ThreatListener.RaspExecutionState() {
106+
override fun onAllChecksFinished() {
107+
executionStateDispatcher.dispatch(RaspExecutionStateEvent.AllChecksFinished)
108+
}
97109
}
98110
}

example/tsconfig.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{
22
"compilerOptions": {
3-
"baseUrl": "./",
43
"paths": {
54
"freerasp-react-native": ["../src/index"]
65
},
@@ -12,7 +11,7 @@
1211
"jsx": "react",
1312
"lib": ["esnext"],
1413
"module": "esnext",
15-
"moduleResolution": "node",
14+
"moduleResolution": "bundler",
1615
"noFallthroughCasesInSwitch": true,
1716
"noImplicitReturns": true,
1817
"noImplicitUseStrict": false,

0 commit comments

Comments
 (0)