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.
- package/.eslintrc.js +5 -0
- package/LICENSE +21 -0
- package/README.md +2 -0
- package/android/build.gradle +91 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/expo/modules/geetestonelogin/DTO.kt +378 -0
- package/android/src/main/java/expo/modules/geetestonelogin/ExpoGeetestOneloginModule.kt +271 -0
- package/android/src/main/java/expo/modules/geetestonelogin/ExpoGeetestOneloginView.kt +7 -0
- package/build/ExpoGeetestOnelogin.types.d.ts +770 -0
- package/build/ExpoGeetestOnelogin.types.d.ts.map +1 -0
- package/build/ExpoGeetestOnelogin.types.js +2 -0
- package/build/ExpoGeetestOnelogin.types.js.map +1 -0
- package/build/ExpoGeetestOneloginModule.d.ts +3 -0
- package/build/ExpoGeetestOneloginModule.d.ts.map +1 -0
- package/build/ExpoGeetestOneloginModule.js +5 -0
- package/build/ExpoGeetestOneloginModule.js.map +1 -0
- package/build/ExpoGeetestOneloginModule.web.d.ts +7 -0
- package/build/ExpoGeetestOneloginModule.web.d.ts.map +1 -0
- package/build/ExpoGeetestOneloginModule.web.js +12 -0
- package/build/ExpoGeetestOneloginModule.web.js.map +1 -0
- package/build/ExpoGeetestOneloginView.d.ts +4 -0
- package/build/ExpoGeetestOneloginView.d.ts.map +1 -0
- package/build/ExpoGeetestOneloginView.js +7 -0
- package/build/ExpoGeetestOneloginView.js.map +1 -0
- package/build/ExpoGeetestOneloginView.web.d.ts +4 -0
- package/build/ExpoGeetestOneloginView.web.d.ts.map +1 -0
- package/build/ExpoGeetestOneloginView.web.js +6 -0
- package/build/ExpoGeetestOneloginView.web.js.map +1 -0
- package/build/index.d.ts +40 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +132 -0
- package/build/index.js.map +1 -0
- package/expo-module.config.json +9 -0
- package/ios/Bridging-Header.h +13 -0
- package/ios/DTO.swift +1031 -0
- package/ios/ExpoGeetestOnelogin.podspec +29 -0
- package/ios/ExpoGeetestOneloginModule.swift +342 -0
- package/ios/ExpoGeetestOneloginView.swift +7 -0
- package/package.json +67 -0
- package/src/ExpoGeetestOnelogin.types.ts +939 -0
- package/src/ExpoGeetestOneloginModule.ts +5 -0
- package/src/ExpoGeetestOneloginModule.web.ts +13 -0
- package/src/ExpoGeetestOneloginView.tsx +11 -0
- package/src/ExpoGeetestOneloginView.web.tsx +11 -0
- package/src/index.ts +174 -0
- 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
|
+
}
|