freerasp-react-native 3.12.0 → 3.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +8 -4
  3. package/android/build.gradle +1 -1
  4. package/android/gradle.properties +2 -2
  5. package/android/proguard-rules.pro +8 -0
  6. package/android/src/main/java/com/freeraspreactnative/FreeraspReactNativeModule.kt +59 -10
  7. package/android/src/main/java/com/freeraspreactnative/FreeraspThreatHandler.kt +8 -0
  8. package/android/src/main/java/com/freeraspreactnative/ScreenProtector.kt +164 -0
  9. package/android/src/main/java/com/freeraspreactnative/Threat.kt +5 -1
  10. package/android/src/main/java/com/freeraspreactnative/utils/Extensions.kt +1 -1
  11. package/example/Gemfile +6 -2
  12. package/example/Gemfile.lock +121 -0
  13. package/example/android/app/build.gradle +64 -265
  14. package/example/android/app/src/debug/AndroidManifest.xml +1 -5
  15. package/example/android/app/src/main/AndroidManifest.xml +5 -3
  16. package/example/android/app/src/main/java/com/freerasp/rn/example/MainActivity.kt +22 -0
  17. package/example/android/app/src/main/java/com/freerasp/rn/example/MainApplication.kt +44 -0
  18. package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +3 -2
  19. package/example/android/app/src/main/res/values/strings.xml +1 -1
  20. package/example/android/build.gradle +16 -45
  21. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  22. package/example/android/gradle/wrapper/gradle-wrapper.properties +3 -1
  23. package/example/android/gradle.properties +5 -6
  24. package/example/android/gradlew +30 -13
  25. package/example/android/gradlew.bat +21 -16
  26. package/example/android/settings.gradle +5 -10
  27. package/example/app.json +3 -3
  28. package/example/index.js +4 -0
  29. package/example/ios/FreeraspRNExample/AppDelegate.swift +30 -0
  30. package/example/ios/{FreeraspReactNativeExample → FreeraspRNExample}/Info.plist +8 -12
  31. package/example/ios/{FreeraspReactNativeExample → FreeraspRNExample}/LaunchScreen.storyboard +1 -1
  32. package/example/ios/FreeraspRNExample/PrivacyInfo.xcprivacy +37 -0
  33. package/example/ios/FreeraspRNExample.xcodeproj/project.pbxproj +488 -0
  34. package/example/ios/{FreeraspReactNativeExample.xcodeproj/xcshareddata/xcschemes/FreeraspReactNativeExample.xcscheme → FreeraspRNExample.xcodeproj/xcshareddata/xcschemes/FreeraspRNExample.xcscheme} +12 -12
  35. package/example/ios/{FreeraspReactNativeExample.xcworkspace → FreeraspRNExample.xcworkspace}/contents.xcworkspacedata +1 -1
  36. package/example/ios/Podfile +19 -32
  37. package/example/metro.config.js +13 -14
  38. package/example/package.json +23 -12
  39. package/example/src/App.tsx +18 -0
  40. package/example/src/DemoApp.tsx +181 -79
  41. package/example/src/MalwareModal.tsx +2 -12
  42. package/example/src/checks.ts +2 -0
  43. package/example/yarn.lock +2483 -1624
  44. package/ios/FreeraspReactNative.swift +6 -2
  45. package/ios/TalsecRuntime.xcframework/Info.plist +5 -5
  46. package/ios/TalsecRuntime.xcframework/_CodeSignature/CodeDirectory +0 -0
  47. package/ios/TalsecRuntime.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
  48. package/ios/TalsecRuntime.xcframework/_CodeSignature/CodeResources +87 -87
  49. package/ios/TalsecRuntime.xcframework/_CodeSignature/CodeSignature +0 -0
  50. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
  51. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +1 -1
  52. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curl.h +7 -7
  53. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/multi.h +4 -4
  54. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/options.h +1 -1
  55. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/urlapi.h +1 -1
  56. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Info.plist +0 -0
  57. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.abi.json +316 -178
  58. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.private.swiftinterface +2 -0
  59. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  60. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftinterface +2 -0
  61. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/TalsecRuntime +0 -0
  62. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
  63. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +2 -2
  64. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curl.h +7 -7
  65. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/multi.h +4 -4
  66. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/options.h +1 -1
  67. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/urlapi.h +1 -1
  68. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Info.plist +0 -0
  69. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.abi.json +316 -178
  70. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +2 -0
  71. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  72. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftinterface +2 -0
  73. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.abi.json +316 -178
  74. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +2 -0
  75. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  76. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +2 -0
  77. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/TalsecRuntime +0 -0
  78. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/_CodeSignature/CodeResources +33 -33
  79. package/lib/commonjs/index.js +25 -3
  80. package/lib/commonjs/index.js.map +1 -1
  81. package/lib/commonjs/threat.js +3 -1
  82. package/lib/commonjs/threat.js.map +1 -1
  83. package/lib/module/index.js +19 -1
  84. package/lib/module/index.js.map +1 -1
  85. package/lib/module/threat.js +3 -1
  86. package/lib/module/threat.js.map +1 -1
  87. package/lib/typescript/src/index.d.ts +2 -0
  88. package/lib/typescript/src/index.d.ts.map +1 -1
  89. package/lib/typescript/src/threat.d.ts +2 -0
  90. package/lib/typescript/src/threat.d.ts.map +1 -1
  91. package/lib/typescript/src/types.d.ts +2 -0
  92. package/lib/typescript/src/types.d.ts.map +1 -1
  93. package/package.json +1 -1
  94. package/src/index.tsx +24 -0
  95. package/src/threat.ts +6 -0
  96. package/src/types.ts +2 -0
  97. package/example/android/app/_BUCK +0 -55
  98. package/example/android/app/build_defs.bzl +0 -19
  99. package/example/android/app/src/debug/java/com/freeraspreactnativeexample/ReactNativeFlipper.java +0 -73
  100. package/example/android/app/src/main/java/com/freeraspreactnativeexample/MainActivity.java +0 -48
  101. package/example/android/app/src/main/java/com/freeraspreactnativeexample/MainApplication.java +0 -91
  102. package/example/android/app/src/main/java/com/freeraspreactnativeexample/newarchitecture/MainApplicationReactNativeHost.java +0 -116
  103. package/example/android/app/src/main/java/com/freeraspreactnativeexample/newarchitecture/components/MainComponentsRegistry.java +0 -36
  104. package/example/android/app/src/main/java/com/freeraspreactnativeexample/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java +0 -48
  105. package/example/android/app/src/main/jni/CMakeLists.txt +0 -7
  106. package/example/android/app/src/main/jni/MainApplicationModuleProvider.cpp +0 -32
  107. package/example/android/app/src/main/jni/MainApplicationModuleProvider.h +0 -16
  108. package/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp +0 -45
  109. package/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h +0 -38
  110. package/example/android/app/src/main/jni/MainComponentsRegistry.cpp +0 -65
  111. package/example/android/app/src/main/jni/MainComponentsRegistry.h +0 -32
  112. package/example/android/app/src/main/jni/OnLoad.cpp +0 -11
  113. package/example/ios/File.swift +0 -6
  114. package/example/ios/FreeraspReactNativeExample/AppDelegate.h +0 -8
  115. package/example/ios/FreeraspReactNativeExample/AppDelegate.mm +0 -133
  116. package/example/ios/FreeraspReactNativeExample/main.m +0 -10
  117. package/example/ios/FreeraspReactNativeExample-Bridging-Header.h +0 -3
  118. package/example/ios/FreeraspReactNativeExample.xcodeproj/project.pbxproj +0 -729
  119. package/example/ios/FreeraspReactNativeExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  120. package/example/ios/FreeraspReactNativeExampleTests/FreeraspReactNativeExampleTests.m +0 -66
  121. package/example/ios/FreeraspReactNativeExampleTests/Info.plist +0 -24
  122. /package/example/ios/{FreeraspReactNativeExample → FreeraspRNExample}/Images.xcassets/AppIcon.appiconset/Contents.json +0 -0
  123. /package/example/ios/{FreeraspReactNativeExample → FreeraspRNExample}/Images.xcassets/Contents.json +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "FreeraspReactNativeExample",
3
- "version": "0.0.1",
2
+ "name": "FreeraspRNExample",
3
+ "version": "2.0.0",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "android": "react-native run-android",
@@ -12,18 +12,29 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@react-native-material/core": "^1.3.7",
15
- "react": "18.1.0",
16
- "react-native": "^0.70.6",
17
- "react-native-svg": "^13.8.0"
15
+ "react": "19.0.0",
16
+ "react-native": "0.78.0",
17
+ "react-native-svg": "^15.11.1"
18
18
  },
19
19
  "devDependencies": {
20
- "@babel/core": "^7.24.4",
21
- "@babel/runtime": "^7.24.1",
22
- "babel-plugin-module-resolver": "^5.0.0",
23
- "metro-react-native-babel-preset": "0.72.3",
24
- "react-native-svg-transformer": "^1.0.0"
20
+ "@babel/core": "^7.25.2",
21
+ "@babel/preset-env": "^7.25.3",
22
+ "@babel/runtime": "^7.25.0",
23
+ "@react-native-community/cli": "15.0.1",
24
+ "@react-native-community/cli-platform-android": "15.0.1",
25
+ "@react-native-community/cli-platform-ios": "15.0.1",
26
+ "@react-native/babel-preset": "0.78.0",
27
+ "@react-native/eslint-config": "0.78.0",
28
+ "@react-native/metro-config": "0.78.0",
29
+ "@react-native/typescript-config": "0.78.0",
30
+ "babel-plugin-module-resolver": "^5.0.2",
31
+ "@types/react": "^19.0.0",
32
+ "eslint-config-prettier": "^10.0.1",
33
+ "eslint-plugin-prettier": "^5.2.3",
34
+ "metro-react-native-babel-preset": "^0.77.0",
35
+ "react-native-svg-transformer": "^1.5.0"
25
36
  },
26
- "resolutions": {
27
- "react-devtools-core": "^4.28.4"
37
+ "engines": {
38
+ "node": ">=18"
28
39
  }
29
40
  }
@@ -188,6 +188,24 @@ const App = () => {
188
188
  )
189
189
  );
190
190
  },
191
+ // Android & iOS
192
+ screenshot: () => {
193
+ setAppChecks((currentState) =>
194
+ currentState.map((threat) =>
195
+ threat.name === 'Screenshot' ? { ...threat, status: 'nok' } : threat
196
+ )
197
+ );
198
+ },
199
+ // Android & iOS
200
+ screenRecording: () => {
201
+ setAppChecks((currentState) =>
202
+ currentState.map((threat) =>
203
+ threat.name === 'Screen Recording'
204
+ ? { ...threat, status: 'nok' }
205
+ : threat
206
+ )
207
+ );
208
+ },
191
209
  };
192
210
 
193
211
  const addItemsToMalwareWhitelist = async () => {
@@ -4,10 +4,20 @@ import { Box, Flex, HStack, Text, VStack } from '@react-native-material/core';
4
4
  import CheckmarkCircle from '../assets/checkmark-circle-outline.png';
5
5
  import CloseCircle from '../assets/close-circle-outline.png';
6
6
  import TalsecLogo from '../assets/talsec-logo.png';
7
- import { Image } from 'react-native';
7
+ import {
8
+ ScrollView,
9
+ Image,
10
+ TouchableOpacity,
11
+ StyleSheet,
12
+ Platform,
13
+ } from 'react-native';
8
14
  import { Colors } from './styles';
9
15
  import { MalwareModal } from './MalwareModal';
10
- import type { SuspiciousAppInfo } from 'freerasp-react-native';
16
+ import {
17
+ isScreenCaptureBlocked,
18
+ blockScreenCapture,
19
+ type SuspiciousAppInfo,
20
+ } from 'freerasp-react-native';
11
21
 
12
22
  export const DemoApp: React.FC<{
13
23
  checks: {
@@ -16,88 +26,180 @@ export const DemoApp: React.FC<{
16
26
  }[];
17
27
  suspiciousApps: SuspiciousAppInfo[];
18
28
  }> = ({ checks, suspiciousApps }) => {
29
+ const [hasScreenCaptureBlocked, setHasScreenCaptureBlocked] =
30
+ React.useState(false);
31
+
32
+ React.useEffect(() => {
33
+ (async () => {
34
+ Platform.OS === 'android' && (await updateScreenCaptureStatus());
35
+ })();
36
+ }, []);
37
+
38
+ const updateScreenCaptureStatus = async () => {
39
+ try {
40
+ const isBlocked = await isScreenCaptureBlocked();
41
+ setHasScreenCaptureBlocked(isBlocked);
42
+ } catch (error) {
43
+ console.error('Error fetching screen capture status:', error);
44
+ }
45
+ };
46
+
47
+ const toggleScreenCaptureBlock = async () => {
48
+ try {
49
+ const response = await blockScreenCapture(!hasScreenCaptureBlocked);
50
+ console.info('Changing Screen Capture Status:', response);
51
+ await updateScreenCaptureStatus();
52
+ } catch (error: any) {
53
+ console.error('Screen capture Error:', error.message);
54
+ }
55
+ };
56
+
19
57
  return (
20
58
  <>
21
- <Flex
22
- fill
23
- style={{
24
- backgroundColor: Colors.background,
25
- justifyContent: 'center',
26
- }}
27
- >
28
- <VStack>
29
- <Image source={TalsecLogo} style={{ alignSelf: 'center' }} />;
30
- <Text
31
- style={{
32
- alignSelf: 'center',
33
- fontWeight: 'bold',
34
- fontSize: 25,
35
- color: 'white',
36
- paddingTop: 15,
37
- }}
38
- >
39
- freeRASP checks:
40
- </Text>
41
- {checks.map((check: any, idx: number) => (
42
- <Box
43
- key={idx}
44
- style={{
45
- borderColor:
46
- check.status === 'ok'
47
- ? Colors.checkOkDark
48
- : Colors.checkNokDark,
49
- backgroundColor:
59
+ <Flex fill style={styles.flex}>
60
+ <ScrollView>
61
+ <VStack>
62
+ <Image source={TalsecLogo} style={{ alignSelf: 'center' }} />;
63
+ {Platform.OS === 'android' && (
64
+ <HStack
65
+ style={{ justifyContent: 'space-evenly', paddingTop: 10 }}>
66
+ <TouchableOpacity
67
+ onPress={toggleScreenCaptureBlock}
68
+ style={[
69
+ styles.button,
70
+ hasScreenCaptureBlocked
71
+ ? styles.unblockedButton
72
+ : styles.blockedButton,
73
+ ]}>
74
+ <Text
75
+ style={[
76
+ styles.buttonText,
77
+ hasScreenCaptureBlocked
78
+ ? styles.colorCheckNok
79
+ : styles.colorCheckOk,
80
+ ]}>
81
+ {hasScreenCaptureBlocked
82
+ ? 'Enable Screen Capture'
83
+ : 'Block Screen Capture'}
84
+ </Text>
85
+ </TouchableOpacity>
86
+ </HStack>
87
+ )}
88
+ <Text style={styles.titleText}>freeRASP checks:</Text>
89
+ {checks.map((check: any, idx: number) => (
90
+ <Box
91
+ key={idx}
92
+ style={[
93
+ styles.box,
50
94
  check.status === 'ok'
51
- ? Colors.checkOkLight
52
- : Colors.checkNokLight,
53
- borderWidth: 1,
54
- paddingHorizontal: 30,
55
- paddingVertical: 4,
56
- marginVertical: 8,
57
- marginHorizontal: 20,
58
- borderRadius: 15,
59
- }}
60
- >
61
- <HStack style={{ justifyContent: 'space-between' }}>
62
- <Text
63
- style={{
64
- color: check.status === 'ok' ? 'green' : 'rgb(200, 0, 0)',
65
- fontWeight: 'bold',
66
- alignSelf: 'center',
67
- }}
68
- >
69
- {check.name}
70
- </Text>
71
- {check.name === 'Malware' && (
72
- <MalwareModal
73
- isDisabled={check.status === 'ok'}
74
- suspiciousApps={suspiciousApps}
75
- />
76
- )}
77
- {check.status === 'ok' ? (
78
- <Image
79
- source={CheckmarkCircle}
80
- style={{
81
- tintColor: Colors.checkOkDark,
82
- width: 30,
83
- height: 30,
84
- }}
85
- />
86
- ) : (
87
- <Image
88
- source={CloseCircle}
95
+ ? styles.boxCheckOk
96
+ : styles.boxCheckNok,
97
+ ]}>
98
+ <HStack style={{ justifyContent: 'space-between' }}>
99
+ <Text
89
100
  style={{
90
- tintColor: Colors.checkNokDark,
91
- width: 30,
92
- height: 30,
93
- }}
94
- />
95
- )}
96
- </HStack>
97
- </Box>
98
- ))}
99
- </VStack>
101
+ color: check.status === 'ok' ? 'green' : 'rgb(200, 0, 0)',
102
+ fontWeight: 'bold',
103
+ alignSelf: 'center',
104
+ }}>
105
+ {check.name}
106
+ </Text>
107
+ {check.name === 'Malware' && (
108
+ <MalwareModal
109
+ isDisabled={check.status === 'ok'}
110
+ suspiciousApps={suspiciousApps}
111
+ />
112
+ )}
113
+ {check.status === 'ok' ? (
114
+ <Image
115
+ source={CheckmarkCircle}
116
+ style={[
117
+ styles.checkIcon,
118
+ {
119
+ tintColor: Colors.checkOkDark,
120
+ },
121
+ ]}
122
+ />
123
+ ) : (
124
+ <Image
125
+ source={CloseCircle}
126
+ style={[
127
+ styles.checkIcon,
128
+ {
129
+ tintColor: Colors.checkNokDark,
130
+ },
131
+ ]}
132
+ />
133
+ )}
134
+ </HStack>
135
+ </Box>
136
+ ))}
137
+ </VStack>
138
+ </ScrollView>
100
139
  </Flex>
101
140
  </>
102
141
  );
103
142
  };
143
+
144
+ const styles = StyleSheet.create({
145
+ flex: {
146
+ paddingTop: 50,
147
+ backgroundColor: Colors.background,
148
+ justifyContent: 'center',
149
+ },
150
+ buttonText: {
151
+ fontSize: 16,
152
+ fontWeight: '500',
153
+ alignSelf: 'center',
154
+ textAlign: 'center',
155
+ },
156
+ button: {
157
+ justifyContent: 'center',
158
+ alignItems: 'center',
159
+ width: 180,
160
+ height: 50,
161
+ backgroundColor: Colors.checkOkLight,
162
+ borderRadius: 10,
163
+ padding: 2,
164
+ marginTop: 20,
165
+ },
166
+ blockedButton: {
167
+ backgroundColor: Colors.checkOkLight,
168
+ },
169
+ unblockedButton: {
170
+ backgroundColor: Colors.checkNokLight,
171
+ },
172
+ colorCheckNok: {
173
+ color: Colors.checkNokDark,
174
+ },
175
+ colorCheckOk: {
176
+ color: Colors.checkOkDark,
177
+ },
178
+ boxCheckNok: {
179
+ borderColor: Colors.checkNokDark,
180
+ backgroundColor: Colors.checkNokLight,
181
+ },
182
+ boxCheckOk: {
183
+ borderColor: Colors.checkOkDark,
184
+ backgroundColor: Colors.checkOkLight,
185
+ },
186
+ box: {
187
+ borderWidth: 1,
188
+ paddingHorizontal: 30,
189
+ paddingVertical: 4,
190
+ marginVertical: 8,
191
+ marginHorizontal: 20,
192
+ borderRadius: 15,
193
+ },
194
+ checkIcon: {
195
+ width: 30,
196
+ height: 30,
197
+ },
198
+ titleText: {
199
+ alignSelf: 'center',
200
+ fontWeight: 'bold',
201
+ fontSize: 25,
202
+ color: 'white',
203
+ paddingTop: 15,
204
+ },
205
+ });
@@ -42,8 +42,7 @@ export const MalwareModal: React.FC<{
42
42
  onRequestClose={() => {
43
43
  Alert.alert('Modal has been closed.');
44
44
  setModalVisible(false);
45
- }}
46
- >
45
+ }}>
47
46
  <View style={styles.centeredView}>
48
47
  <View style={styles.modalView}>
49
48
  <SafeAreaView style={styles.container}>
@@ -56,8 +55,7 @@ export const MalwareModal: React.FC<{
56
55
  </SafeAreaView>
57
56
  <Pressable
58
57
  style={[styles.button, styles.buttonClose]}
59
- onPress={() => setModalVisible(false)}
60
- >
58
+ onPress={() => setModalVisible(false)}>
61
59
  <Text style={styles.textStyle}>Close</Text>
62
60
  </Pressable>
63
61
  </View>
@@ -79,13 +77,6 @@ const styles = StyleSheet.create({
79
77
  borderRadius: 20,
80
78
  padding: 15,
81
79
  alignItems: 'center',
82
- shadowColor: '#000',
83
- shadowOffset: {
84
- width: 0,
85
- height: 2,
86
- },
87
- shadowOpacity: 0.25,
88
- shadowRadius: 4,
89
80
  elevation: 5,
90
81
  flex: 1,
91
82
  width: '98%',
@@ -95,7 +86,6 @@ const styles = StyleSheet.create({
95
86
  paddingHorizontal: 30,
96
87
  paddingVertical: 10,
97
88
  marginTop: 15,
98
- elevation: 2,
99
89
  },
100
90
  buttonClose: {
101
91
  backgroundColor: '#2196F3',
@@ -9,6 +9,8 @@ export const commonChecks = [
9
9
  { name: 'System VPN', status: 'ok' },
10
10
  { name: 'Device Binding', status: 'ok' },
11
11
  { name: 'Unofficial Store', status: 'ok' },
12
+ { name: 'Screenshot', status: 'ok' },
13
+ { name: 'Screen Recording', status: 'ok' },
12
14
  ];
13
15
 
14
16
  export const iosChecks = [{ name: 'Device ID', status: 'ok' }];