expo-geetest-onelogin 0.1.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 (46) hide show
  1. package/.eslintrc.js +5 -0
  2. package/LICENSE +21 -0
  3. package/README.md +2 -0
  4. package/android/build.gradle +91 -0
  5. package/android/src/main/AndroidManifest.xml +2 -0
  6. package/android/src/main/java/expo/modules/geetestonelogin/DTO.kt +378 -0
  7. package/android/src/main/java/expo/modules/geetestonelogin/ExpoGeetestOneloginModule.kt +271 -0
  8. package/android/src/main/java/expo/modules/geetestonelogin/ExpoGeetestOneloginView.kt +7 -0
  9. package/build/ExpoGeetestOnelogin.types.d.ts +770 -0
  10. package/build/ExpoGeetestOnelogin.types.d.ts.map +1 -0
  11. package/build/ExpoGeetestOnelogin.types.js +2 -0
  12. package/build/ExpoGeetestOnelogin.types.js.map +1 -0
  13. package/build/ExpoGeetestOneloginModule.d.ts +3 -0
  14. package/build/ExpoGeetestOneloginModule.d.ts.map +1 -0
  15. package/build/ExpoGeetestOneloginModule.js +5 -0
  16. package/build/ExpoGeetestOneloginModule.js.map +1 -0
  17. package/build/ExpoGeetestOneloginModule.web.d.ts +7 -0
  18. package/build/ExpoGeetestOneloginModule.web.d.ts.map +1 -0
  19. package/build/ExpoGeetestOneloginModule.web.js +12 -0
  20. package/build/ExpoGeetestOneloginModule.web.js.map +1 -0
  21. package/build/ExpoGeetestOneloginView.d.ts +4 -0
  22. package/build/ExpoGeetestOneloginView.d.ts.map +1 -0
  23. package/build/ExpoGeetestOneloginView.js +7 -0
  24. package/build/ExpoGeetestOneloginView.js.map +1 -0
  25. package/build/ExpoGeetestOneloginView.web.d.ts +4 -0
  26. package/build/ExpoGeetestOneloginView.web.d.ts.map +1 -0
  27. package/build/ExpoGeetestOneloginView.web.js +6 -0
  28. package/build/ExpoGeetestOneloginView.web.js.map +1 -0
  29. package/build/index.d.ts +40 -0
  30. package/build/index.d.ts.map +1 -0
  31. package/build/index.js +132 -0
  32. package/build/index.js.map +1 -0
  33. package/expo-module.config.json +9 -0
  34. package/ios/Bridging-Header.h +13 -0
  35. package/ios/DTO.swift +1031 -0
  36. package/ios/ExpoGeetestOnelogin.podspec +29 -0
  37. package/ios/ExpoGeetestOneloginModule.swift +342 -0
  38. package/ios/ExpoGeetestOneloginView.swift +7 -0
  39. package/package.json +67 -0
  40. package/src/ExpoGeetestOnelogin.types.ts +939 -0
  41. package/src/ExpoGeetestOneloginModule.ts +5 -0
  42. package/src/ExpoGeetestOneloginModule.web.ts +13 -0
  43. package/src/ExpoGeetestOneloginView.tsx +11 -0
  44. package/src/ExpoGeetestOneloginView.web.tsx +11 -0
  45. package/src/index.ts +174 -0
  46. package/tsconfig.json +9 -0
@@ -0,0 +1,271 @@
1
+ package expo.modules.geetestonelogin
2
+
3
+ import android.app.Activity
4
+ import android.app.Dialog
5
+ import android.content.Intent
6
+ import android.graphics.Color
7
+ import android.graphics.Typeface
8
+ import android.widget.AbsoluteLayout
9
+ import android.widget.CheckBox
10
+ import android.widget.FrameLayout
11
+ import android.widget.ImageView
12
+ import android.widget.LinearLayout
13
+ import android.widget.RelativeLayout
14
+ import android.widget.TextView
15
+ import com.geetest.onelogin.OneLoginHelper
16
+ import com.geetest.onelogin.config.AuthRegisterViewConfig
17
+ import com.geetest.onelogin.config.OneLoginThemeConfig
18
+ import com.geetest.onelogin.config.UserInterfaceStyle
19
+ import com.geetest.onelogin.listener.AbstractOneLoginListener
20
+ import com.geetest.onelogin.view.GTContainerWithLifecycle
21
+ import com.geetest.onelogin.view.GTGifView
22
+ import com.geetest.onelogin.view.GTVideoView
23
+ import com.geetest.onelogin.view.LoadingImageView
24
+ import expo.modules.kotlin.Promise
25
+ import expo.modules.kotlin.modules.Module
26
+ import expo.modules.kotlin.modules.ModuleDefinition
27
+ import org.json.JSONObject
28
+
29
+
30
+ class ExpoGeetestOneloginModule : Module() {
31
+ // Each module class must implement the definition function. The definition consists of components
32
+ // that describes the module's functionality and behavior.
33
+ // See https://docs.expo.dev/modules/module-api for more details about available components.
34
+ override fun definition() = ModuleDefinition {
35
+ // Sets the name of the module that JavaScript code will use to refer to the module. Takes a string as an argument.
36
+ // Can be inferred from module's class name, but it's recommended to set it explicitly for clarity.
37
+ // The module will be accessible from `requireNativeModule('ExpoGeetestOnelogin')` in JavaScript.
38
+ Name("ExpoGeetestOnelogin")
39
+
40
+ // Sets constant properties on the module. Can take a dictionary or a closure that returns a dictionary.
41
+ Constants(
42
+ "PI" to Math.PI
43
+ )
44
+
45
+ // Defines event names that the module can send to JavaScript.
46
+ Events("onChange")
47
+
48
+ Function("setLogEnable") { isLogEnable: Boolean ->
49
+ OneLoginHelper
50
+ .with()
51
+ //开启 SDK 日志打印功能
52
+ .setLogEnable(isLogEnable)
53
+ }
54
+
55
+ Function("init") { appId: String ->
56
+ OneLoginHelper
57
+ .with()
58
+ //开启 SDK 日志打印功能
59
+ // .setLogEnable(true)
60
+ // .setRequestTimeout(8000, 8000)
61
+ //第一个参数为当前 Application 或 Activity 的 Context
62
+ //第二个参数为所需要配置的 APPID, 注意与服务端保持一致
63
+ .init(context, appId)
64
+ }
65
+
66
+ Function("setRequestTimeout") { preGetTokenTimeout: Int, requestTokenTimeout: Int ->
67
+ OneLoginHelper
68
+ .with()
69
+ .setRequestTimeout(preGetTokenTimeout, requestTokenTimeout)
70
+ }
71
+
72
+ Function("register") { appId: String ->
73
+ OneLoginHelper
74
+ .with()
75
+ //第二个参数为所需要配置的 APPID, 注意与服务端保持一致
76
+ .register(appId)
77
+ }
78
+
79
+ Function("isPreGetTokenResultValidate") {
80
+ return@Function OneLoginHelper
81
+ .with().isPreGetTokenResultValidate
82
+ }
83
+
84
+ AsyncFunction("requestToken") { oneLoginThemeConfig: RNOneLoginThemeConfig?, callbackId: Int? ->
85
+ val themeBuilder = OneLoginThemeConfig.Builder()
86
+ if (oneLoginThemeConfig?.statusBar != null) {
87
+ themeBuilder.setStatusBar(oneLoginThemeConfig.statusBar.statusBarColor, when (oneLoginThemeConfig.statusBar.statusBarStyle) {
88
+ "UserInterfaceStyle.LIGHT" -> UserInterfaceStyle.LIGHT
89
+ "UserInterfaceStyle.DARK" -> UserInterfaceStyle.DARK
90
+ else -> UserInterfaceStyle.UNSPECIFIED
91
+ }, oneLoginThemeConfig.statusBar.bgLayoutInStatusBar)
92
+ }
93
+ if (oneLoginThemeConfig?.authBGImgPath != null) {
94
+ themeBuilder.setAuthBGImgPath(oneLoginThemeConfig.authBGImgPath)
95
+ }
96
+ if (oneLoginThemeConfig?.dialogTheme != null) {
97
+ val dialogTheme = oneLoginThemeConfig.dialogTheme
98
+ themeBuilder.setDialogTheme(dialogTheme.isDialogTheme,
99
+ dialogTheme.dialogWidth,
100
+ dialogTheme.dialogHeight,
101
+ dialogTheme.dialogX,
102
+ dialogTheme.dialogY,
103
+ dialogTheme.isDialogBottom,
104
+ dialogTheme.isWebViewDialogTheme)
105
+ }
106
+ if (oneLoginThemeConfig?.authNavLayout != null) {
107
+ val map = oneLoginThemeConfig.authNavLayout
108
+ themeBuilder.setAuthNavLayout(map.navColor,
109
+ map.authNavHeight,
110
+ map.authNavTransparent,
111
+ map.authNavGone)
112
+ }
113
+ if (oneLoginThemeConfig?.authNavTextView != null) {
114
+ val map = oneLoginThemeConfig.authNavTextView
115
+ themeBuilder.setAuthNavTextView(map.navText,
116
+ map.navTextColor,
117
+ map.navTextSize,
118
+ map.navWebTextNormal,
119
+ map.navWebText,
120
+ map.navWebTextColor,
121
+ map.navWebTextSize,
122
+ map.navTextMargin)
123
+ }
124
+ if (oneLoginThemeConfig?.switchViewLayout != null) {
125
+ val map = oneLoginThemeConfig.switchViewLayout
126
+ themeBuilder.setSwitchViewLayout(map.switchImgPath,
127
+ map.switchWidth,
128
+ map.switchHeight)
129
+ }
130
+ if (oneLoginThemeConfig?.logBtnTextView != null) {
131
+ val map = oneLoginThemeConfig.logBtnTextView
132
+ themeBuilder.setLogBtnTextView(map.logBtnText,
133
+ map.logBtnColor,
134
+ map.logBtnTextSize)
135
+ }
136
+ if (oneLoginThemeConfig?.logBtnLoadingView != null) {
137
+ val map = oneLoginThemeConfig.logBtnLoadingView
138
+ themeBuilder.setLogBtnLoadingView(map.loadingView,
139
+ map.loadingViewWidth,
140
+ map.loadingViewHeight,
141
+ map.loadingViewOffsetRight)
142
+ }
143
+ if (oneLoginThemeConfig?.privacyUnCheckedToastText != null) {
144
+ themeBuilder.setPrivacyUnCheckedToastText(oneLoginThemeConfig.privacyUnCheckedToastText)
145
+ }
146
+ if (oneLoginThemeConfig?.privacyClauseText != null) {
147
+ val map = oneLoginThemeConfig.privacyClauseText
148
+ themeBuilder.setPrivacyClauseText(map.clauseNameOne,
149
+ map.clauseUrlOne,map.clauseNameTwo,
150
+ map.clauseUrlTwo,map.clauseNameThree,
151
+ map.clauseUrlThree)
152
+ }
153
+ if (oneLoginThemeConfig?.privacyTextGravity != null) {
154
+ themeBuilder.setPrivacyTextGravity(oneLoginThemeConfig.privacyTextGravity)
155
+ }
156
+ if (oneLoginThemeConfig?.privacyClauseView != null) {
157
+ val map = oneLoginThemeConfig.privacyClauseView
158
+ themeBuilder.setPrivacyClauseView(map.baseClauseColor,
159
+ map.clauseColor,map.privacyClauseTextSize)
160
+ }
161
+ if (oneLoginThemeConfig?.privacyTextView != null) {
162
+ val map = oneLoginThemeConfig.privacyTextView
163
+ themeBuilder.setPrivacyTextView(map.privacyTextViewTv1,
164
+ map.privacyTextViewTv2,map.privacyTextViewTv3,map.privacyTextViewTv4)
165
+ }
166
+ if (oneLoginThemeConfig?.authNavTextViewTypeface != null) {
167
+ val map = oneLoginThemeConfig.authNavTextViewTypeface
168
+ themeBuilder.setAuthNavTextViewTypeface(Typeface.createFromAsset(context.assets, map.navTextTypeface),Typeface.createFromAsset(context.assets, map.navWebTextTypeface))
169
+ }
170
+ if (oneLoginThemeConfig?.numberViewTypeface != null) {
171
+ themeBuilder.setNumberViewTypeface(Typeface.createFromAsset(context.assets, oneLoginThemeConfig.numberViewTypeface))
172
+ }
173
+ if (oneLoginThemeConfig?.switchViewTypeface != null) {
174
+ themeBuilder.setSwitchViewTypeface(Typeface.createFromAsset(context.assets, oneLoginThemeConfig.switchViewTypeface))
175
+ }
176
+ if (oneLoginThemeConfig?.logBtnTextViewTypeface != null) {
177
+ themeBuilder.setLogBtnTextViewTypeface(Typeface.createFromAsset(context.assets, oneLoginThemeConfig.logBtnTextViewTypeface))
178
+ }
179
+ if (oneLoginThemeConfig?.logoImgView != null) {
180
+ val map = oneLoginThemeConfig.logoImgView
181
+ themeBuilder.setLogoImgView(map.logoImgPath,
182
+ map.logoWidth,map.logoHeight,map.logoHidden,map.logoOffsetY,map.logoOffsetY_B,map.logoOffsetX)
183
+ }
184
+ if (oneLoginThemeConfig?.authNavReturnImgView != null) {
185
+ val map = oneLoginThemeConfig.authNavReturnImgView
186
+ themeBuilder.setAuthNavReturnImgView(map.returnImgPath,
187
+ map.returnImgWidth,map.returnImgHeight,map.returnImgHidden,map.returnImgOffsetX)
188
+ }
189
+ if (oneLoginThemeConfig?.numberView != null) {
190
+ val map = oneLoginThemeConfig.numberView
191
+ themeBuilder.setNumberView(map.numberColor,
192
+ map.numberSize,map.numberOffsetY,map.numberOffsetY_B,map.numberOffsetX)
193
+ }
194
+ if (oneLoginThemeConfig?.sloganView != null) {
195
+ val map = oneLoginThemeConfig.sloganView
196
+ themeBuilder.setSloganView(map.sloganColor,
197
+ map.sloganSize,map.sloganOffsetY,map.sloganOffsetY_B,map.sloganOffsetX)
198
+ }
199
+ if (oneLoginThemeConfig?.logBtnLayout != null) {
200
+ val map = oneLoginThemeConfig.logBtnLayout
201
+ themeBuilder.setLogBtnLayout(map.logBtnImgPath,map.logBtnUncheckedImgPath,map.logBtnWidth,
202
+ map.logBtnHeight,map.logBtnOffsetY,map.logBtnOffsetY_B,map.logBtnOffsetX)
203
+ }
204
+ if (oneLoginThemeConfig?.switchView != null) {
205
+ val map = oneLoginThemeConfig.switchView
206
+ themeBuilder.setSwitchView(map.switchText,map.switchColor,map.switchSize,
207
+ map.switchHidden,map.switchOffsetY,map.switchOffsetY_B,map.switchOffsetX)
208
+ }
209
+ if (oneLoginThemeConfig?.privacyCheckBox != null) {
210
+ val map = oneLoginThemeConfig.privacyCheckBox
211
+ themeBuilder.setPrivacyCheckBox(map.unCheckedImgPath,map.checkedImgPath,map.privacyState,
212
+ map.privacyCheckBoxWidth,map.privacyCheckBoxHeight,map.privacyCheckBoxOffsetY,map.privacyCheckBoxMarginRight)
213
+ }
214
+ if (oneLoginThemeConfig?.privacyLayout != null) {
215
+ val map = oneLoginThemeConfig.privacyLayout
216
+ themeBuilder.setPrivacyLayout(map.privacyLayoutWidth,map.privacyOffsetY,map.privacyOffsetY_B,
217
+ map.privacyOffsetX,map.isUseNormalWebActivity,map.gravity)
218
+ }
219
+ if (oneLoginThemeConfig?.privacyClauseViewTypeface != null) {
220
+ val map = oneLoginThemeConfig.privacyClauseViewTypeface
221
+ themeBuilder.setPrivacyClauseViewTypeface(Typeface.createFromAsset(context.assets, map.privacyClauseBaseTypeface),Typeface.createFromAsset(context.assets, map.privacyClauseTypeface))
222
+ }
223
+ if (oneLoginThemeConfig?.sloganViewTypeface != null) {
224
+ themeBuilder.setSloganViewTypeface(Typeface.createFromAsset(context.assets, oneLoginThemeConfig.sloganViewTypeface))
225
+ }
226
+ if (oneLoginThemeConfig?.customViews != null) {
227
+
228
+ val authRegisterViewConfigBuilder = AuthRegisterViewConfig.Builder()
229
+ authRegisterViewConfigBuilder.setView(oneLoginThemeConfig.customViews[0].build(appContext.reactContext!!))
230
+ authRegisterViewConfigBuilder.setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
231
+ OneLoginHelper.with().addOneLoginRegisterViewConfig("custom_views", authRegisterViewConfigBuilder.build())
232
+ }
233
+ OneLoginHelper
234
+ .with().requestToken(themeBuilder.build(), object : AbstractOneLoginListener() {
235
+ override fun onResult(p0: JSONObject?) {
236
+ if (callbackId != null) {
237
+ p0?.toMap()?.let { callback(callbackId, it) }
238
+ }
239
+ }
240
+ })
241
+ }
242
+
243
+ // Defines a JavaScript function that always returns a Promise and whose native code
244
+ // is by default dispatched on the different thread than the JavaScript runtime runs on.
245
+ AsyncFunction("setValueAsync") { value: String ->
246
+ // Send an event to JavaScript.
247
+ sendEvent("onChange", mapOf(
248
+ "value" to value
249
+ ))
250
+ }
251
+
252
+ // Enables the module to be used as a native view. Definition components that are accepted as part of
253
+ // the view definition: Prop, Events.
254
+ View(ExpoGeetestOneloginView::class) {
255
+ // Defines a setter for the `name` prop.
256
+ Prop("name") { view: ExpoGeetestOneloginView, prop: String ->
257
+ println(prop)
258
+ }
259
+ }
260
+ }
261
+
262
+ private val context
263
+ get() = requireNotNull(appContext.reactContext)
264
+
265
+ fun callback(callbackId: Int) {
266
+ callback(callbackId, null)
267
+ }
268
+ fun callback(callbackId: Int, params: Any?) {
269
+ sendEvent("onChange", mapOf("callbackId" to callbackId, "type" to "callback", "result" to params))
270
+ }
271
+ }
@@ -0,0 +1,7 @@
1
+ package expo.modules.geetestonelogin
2
+
3
+ import android.content.Context
4
+ import expo.modules.kotlin.AppContext
5
+ import expo.modules.kotlin.views.ExpoView
6
+
7
+ class ExpoGeetestOneloginView(context: Context, appContext: AppContext) : ExpoView(context, appContext)