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,5 @@
1
+ import { requireNativeModule } from 'expo-modules-core';
2
+
3
+ // It loads the native module object from the JSI or falls back to
4
+ // the bridge module (from NativeModulesProxy) if the remote debugger is on.
5
+ export default requireNativeModule('ExpoGeetestOnelogin');
@@ -0,0 +1,13 @@
1
+ import { EventEmitter } from 'expo-modules-core';
2
+
3
+ const emitter = new EventEmitter({} as any);
4
+
5
+ export default {
6
+ PI: Math.PI,
7
+ async setValueAsync(value: string): Promise<void> {
8
+ emitter.emit('onChange', { value });
9
+ },
10
+ hello() {
11
+ return 'Hello world! 👋';
12
+ },
13
+ };
@@ -0,0 +1,11 @@
1
+ import { requireNativeViewManager } from 'expo-modules-core';
2
+ import * as React from 'react';
3
+
4
+ import { ExpoGeetestOneloginViewProps } from './ExpoGeetestOnelogin.types';
5
+
6
+ const NativeView: React.ComponentType<ExpoGeetestOneloginViewProps> =
7
+ requireNativeViewManager('ExpoGeetestOnelogin');
8
+
9
+ export default function ExpoGeetestOneloginView(props: ExpoGeetestOneloginViewProps) {
10
+ return <NativeView {...props} />;
11
+ }
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+
3
+ import { ExpoGeetestOneloginViewProps } from './ExpoGeetestOnelogin.types';
4
+
5
+ export default function ExpoGeetestOneloginView(props: ExpoGeetestOneloginViewProps) {
6
+ return (
7
+ <div>
8
+ <span>{props.name}</span>
9
+ </div>
10
+ );
11
+ }
package/src/index.ts ADDED
@@ -0,0 +1,174 @@
1
+ import { Platform, processColor } from 'react-native';
2
+ import { NativeModulesProxy, EventEmitter, Subscription } from 'expo-modules-core';
3
+
4
+ // Import the native module. On web, it will be resolved to ExpoGeetestOnelogin.web.ts
5
+ // and on native platforms to ExpoGeetestOnelogin.ts
6
+ import ExpoGeetestOneloginModule from './ExpoGeetestOneloginModule';
7
+ import ExpoGeetestOneloginView from './ExpoGeetestOneloginView';
8
+ import {
9
+ AndroidOneLoginResponse,
10
+ AndroidOneLoginUIConfig,
11
+ ChangeEventPayload,
12
+ ExpoGeetestOneloginViewProps,
13
+ IOSOneLoginResponse,
14
+ IOSOneLoginUIConfig,
15
+ } from './ExpoGeetestOnelogin.types';
16
+
17
+ // Get the native constant value.
18
+ export const PI = ExpoGeetestOneloginModule.PI;
19
+
20
+ export async function setValueAsync(value: string) {
21
+ return await ExpoGeetestOneloginModule.setValueAsync(value);
22
+ }
23
+
24
+ const emitter = new EventEmitter(
25
+ ExpoGeetestOneloginModule ?? NativeModulesProxy.ExpoGeetestOnelogin
26
+ );
27
+
28
+ let callbackId = 0;
29
+ let callbackMap = {};
30
+
31
+ export function addChangeListener<T>(
32
+ listener: (event: ChangeEventPayload<T>) => void
33
+ ): Subscription {
34
+ return emitter.addListener<ChangeEventPayload<T>>('onChange', listener);
35
+ }
36
+
37
+ export { ExpoGeetestOneloginView, ExpoGeetestOneloginViewProps, ChangeEventPayload };
38
+
39
+ /**
40
+ * 初始化。iOS不需要这这个Api,如果调用的话什么都不会发生
41
+ * @param appId appId String 极验后台配置唯一产品APPID,请在官网申请, 注意与服务端保持一致
42
+ */
43
+ export function init(appId: string) {
44
+ if (Platform.OS === 'android') {
45
+ return ExpoGeetestOneloginModule.init(appId);
46
+ }
47
+ }
48
+
49
+ /**
50
+ * 判断预取号结果是否有效
51
+ *
52
+ * @param appId 极验后台配置唯一产品APPID,请在官网申请, 如init接口传了 appId 此处可传空值
53
+ */
54
+ export function register(appId: string) {
55
+ return ExpoGeetestOneloginModule.register(appId);
56
+ }
57
+
58
+ /**
59
+ * @return true: 预取号结果有效,可直接拉起授权页面 false: 预取号结果无效,需加载进度条,等待预取号完成之后拉起授权页面
60
+ */
61
+ export function isPreGetTokenResultValidate(): boolean {
62
+ return ExpoGeetestOneloginModule.isPreGetTokenResultValidate();
63
+ }
64
+
65
+ export async function requestToken(
66
+ oneLoginThemeConfig: AndroidOneLoginUIConfig,
67
+ callback: (response: AndroidOneLoginResponse) => void
68
+ ) {
69
+ if (Platform.OS !== 'android') {
70
+ return;
71
+ }
72
+ if (oneLoginThemeConfig?.privacyTextGravity) {
73
+ switch (oneLoginThemeConfig?.privacyTextGravity) {
74
+ case 'Gravity.CENTER_HORIZONTAL':
75
+ oneLoginThemeConfig['privacyTextGravity'] = 1 << 0;
76
+ break;
77
+ }
78
+ }
79
+ function process(obj) {
80
+ Object.keys(obj).map((key) => {
81
+ if (typeof obj[key] === 'object') {
82
+ return process(obj[key]);
83
+ }
84
+ if (typeof obj[key] === 'string' && obj[key].length > 0) {
85
+ const colorInt = processColor(obj[key]);
86
+ if (colorInt === 0) {
87
+ obj[key] = colorInt;
88
+ } else {
89
+ obj[key] = colorInt || obj[key];
90
+ }
91
+ }
92
+ });
93
+ return obj;
94
+ }
95
+ process(oneLoginThemeConfig);
96
+ return ExpoGeetestOneloginModule.requestToken(
97
+ oneLoginThemeConfig,
98
+ functionToCallbackId(callback)
99
+ );
100
+ }
101
+
102
+ /**
103
+ * 注意:
104
+ * 1、在成功进入授权页面时,不会立即收到 completion 回调,在授权页面点击一键登录、切换账号或者返回按钮时,才会收到 completion 回调;
105
+ * 2、若不能成功进入授权页面,则会立即收到 completion 回调
106
+ * @param viewModel
107
+ * @returns
108
+ */
109
+ export function requestTokenWithViewController(
110
+ viewModel?: IOSOneLoginUIConfig,
111
+ callback?: (response: IOSOneLoginResponse) => void
112
+ ) {
113
+ if (Platform.OS === 'ios') {
114
+ function processParams(map) {
115
+ Object.keys(map).forEach((key) => {
116
+ if (typeof map[key] === 'function') {
117
+ map.callbackId = functionToCallbackId(map[key]);
118
+ return;
119
+ }
120
+ if (typeof map[key] === 'object') {
121
+ processParams(map[key]);
122
+ return;
123
+ }
124
+ });
125
+ }
126
+ processParams(viewModel);
127
+ return ExpoGeetestOneloginModule.requestTokenWithViewController(
128
+ viewModel,
129
+ callback ? functionToCallbackId(callback) : undefined
130
+ );
131
+ }
132
+ }
133
+
134
+ function functionToCallbackId(callback: Function): number {
135
+ if (!callback) {
136
+ return -1;
137
+ }
138
+ const newCallbackId = ++callbackId;
139
+ callbackMap[newCallbackId] = callback;
140
+ return newCallbackId;
141
+ }
142
+
143
+ addChangeListener((data) => {
144
+ if (data.type === 'callback') {
145
+ if (callbackMap[data.callbackId!]?.(data?.result)) {
146
+ delete callbackMap[data.callbackId!];
147
+ }
148
+ }
149
+ });
150
+
151
+ export async function dismiss(animated?: boolean) {
152
+ if (Platform.OS === 'android') {
153
+ return ExpoGeetestOneloginModule.dismissAuthActivity();
154
+ }
155
+ if (Platform.OS === 'ios') {
156
+ return ExpoGeetestOneloginModule.dismissAuthViewController(true);
157
+ }
158
+ }
159
+
160
+ /**
161
+ * 超时时间,单位:ms,取值范围:1000~15000,默认8000。
162
+ * @param preGetTokenTimeout 预取号超时时间
163
+ * @param requestTokenTimeout 取号超时时间
164
+ */
165
+ export function setRequestTimeout(
166
+ preGetTokenTimeout: number = 8000,
167
+ requestTokenTimeout: number = 8000
168
+ ) {
169
+ return ExpoGeetestOneloginModule.setRequestTimeout(preGetTokenTimeout, requestTokenTimeout);
170
+ }
171
+
172
+ export function stopLoading() {
173
+ return ExpoGeetestOneloginModule.stopLoading();
174
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,9 @@
1
+ // @generated by expo-module-scripts
2
+ {
3
+ "extends": "expo-module-scripts/tsconfig.base",
4
+ "compilerOptions": {
5
+ "outDir": "./build"
6
+ },
7
+ "include": ["./src"],
8
+ "exclude": ["**/__mocks__/*", "**/__tests__/*", "**/__stories__/*"]
9
+ }