message-verify 1.0.1-beta.39 → 1.0.1-beta.40

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/dist/index.d.ts CHANGED
@@ -1,31 +1,5 @@
1
1
  import { ModalConfig, LoginModalConfig } from './utils/type.js';
2
- import React from 'react';
3
2
  export declare const initFingerprint: () => Promise<string>;
4
3
  export declare const createMessageVerifyModal: (modalProps: ModalConfig) => void;
5
4
  export declare const createReLoginModal: (modalProps: LoginModalConfig) => void;
6
- export declare class VerifyHandler extends React.Component {
7
- private verifyPromise;
8
- createPromise: (detail: any, config: RequestConfig, http: HttpInstance) => Promise<any>;
9
- private handlePromiseReset;
10
- render(): null;
11
- }
12
- type RequestConfig = {
13
- hideLoading?: boolean;
14
- responseType?: string;
15
- };
16
- type HttpInstance = {
17
- defaults: {
18
- headers: {
19
- common: Record<string, string>;
20
- };
21
- };
22
- interceptors: {
23
- request: {
24
- use: (handler: (config: RequestConfig) => RequestConfig) => void;
25
- };
26
- response: {
27
- use: (handler: (response: any) => any) => void;
28
- };
29
- };
30
- };
31
- export {};
5
+ export declare const VerifyHandler: (modalProps: ModalConfig) => Promise<any>;
package/dist/index.js CHANGED
@@ -3,7 +3,6 @@ import ReactDOM from 'react-dom/client';
3
3
  import VerifyModal from './verify-modal.js';
4
4
  import Fingerprint2 from 'fingerprintjs2';
5
5
  import ReLoginModal from './relogin-modal.js';
6
- import React from 'react';
7
6
  let fingerprintPromise = null; // 用 Promise 本身作为缓存
8
7
  export const initFingerprint = async () => {
9
8
  console.log('fingerprintPromise:', fingerprintPromise);
@@ -56,27 +55,22 @@ const destroyModal = () => {
56
55
  modalRoot = null;
57
56
  }
58
57
  };
59
- export class VerifyHandler extends React.Component {
60
- verifyPromise = null;
61
- createPromise = (detail, config, http) => {
62
- if (!this.verifyPromise) {
63
- this.verifyPromise = new Promise((resolve, reject) => {
64
- createMessageVerifyModal({
65
- data: detail,
66
- config,
67
- http,
68
- apiResolve: resolve,
69
- apiReject: reject,
70
- apiPromiseToEmpty: this.handlePromiseReset,
71
- });
72
- }).finally(this.handlePromiseReset);
73
- }
74
- return this.verifyPromise;
58
+ export const VerifyHandler = (modalProps) => {
59
+ const { data, config, http, verifyPromise } = modalProps || {};
60
+ const toEmpty = () => {
61
+ verifyPromise.current = null;
75
62
  };
76
- handlePromiseReset = () => {
77
- this.verifyPromise = null;
78
- };
79
- render() {
80
- return null; // 纯逻辑组件不需要渲染
63
+ if (!verifyPromise.current) {
64
+ verifyPromise.current = new Promise((resolve, reject) => {
65
+ createMessageVerifyModal({
66
+ data,
67
+ config,
68
+ http,
69
+ apiResolve: resolve,
70
+ apiReject: reject,
71
+ apiPromiseToEmpty: toEmpty,
72
+ });
73
+ }).finally(toEmpty);
81
74
  }
82
- }
75
+ return verifyPromise.current;
76
+ };
package/dist/main.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createRoot } from 'react-dom/client';
3
- import { createMessageVerifyModal, initFingerprint, createReLoginModal } from './index.js'; // 或 './index'
3
+ import { initFingerprint, createReLoginModal, VerifyHandler } from './index.js'; // 或 './index'
4
4
  import { axios } from '@yqg/resource';
5
5
  const data = "{\"mobile\":\"188****4035\",\"verifyCodeKey\":\"3f025b33-988e-47c0-950d-6beb776d043f\",\"needValid\":true,\"step\":2,\"message\":\"需要填写验证码\"}";
6
6
  const fp = await initFingerprint();
@@ -36,18 +36,11 @@ const config = {
36
36
  "data": "{\"id\":1,\"classificationName\":\"个人基本概况信息\",\"classificationLevel\":2}",
37
37
  "baseURL": "http://localhost:62888"
38
38
  };
39
- createRoot(document.getElementById('root')).render(_jsxs(_Fragment, { children: [_jsx("button", { onClick: () => createMessageVerifyModal({
40
- data,
41
- config,
42
- lang: 'en',
43
- http: axios,
44
- apiReject: () => {
45
- },
46
- apiResolve: () => {
47
- },
48
- apiPromiseToEmpty: () => {
49
- }
50
- }), children: "Show verify Modal" }), _jsx("button", { onClick: () => createReLoginModal({
39
+ createRoot(document.getElementById('root')).render(_jsxs(_Fragment, { children: [_jsx("button", { onClick: () => {
40
+ // const new11 = new VerifyHandler();
41
+ const promise = { current: null };
42
+ return VerifyHandler({ data, config, http: axios, verifyPromise: promise });
43
+ }, children: "Show verify Modal" }), _jsx("button", { onClick: () => createReLoginModal({
51
44
  goLogin: () => {
52
45
  console.log('goLogin');
53
46
  },
@@ -19,9 +19,12 @@ export type ModalConfig = {
19
19
  };
20
20
  };
21
21
  api?: string;
22
- apiReject: any;
23
- apiResolve: any;
24
- apiPromiseToEmpty: () => void;
22
+ apiReject?: any;
23
+ apiResolve?: any;
24
+ apiPromiseToEmpty?: () => void;
25
+ verifyPromise: {
26
+ current: Promise<any> | null;
27
+ };
25
28
  };
26
29
  export type LoginModalConfig = {
27
30
  goLogin: () => void;
@@ -64,7 +64,7 @@ const CreateMessageVerifyModal = ({ props }) => {
64
64
  };
65
65
  return (_jsxs(Modal, { width: 420, visible: visible, onClose: () => {
66
66
  setVisible(false);
67
- apiPromiseToEmpty();
67
+ apiPromiseToEmpty?.();
68
68
  props.onClose?.();
69
69
  }, children: [_jsx("div", { style: { fontSize: 14, color: '#666' }, children: t('alreadySend', lang, { phone: mobile }) }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8, marginTop: 12 }, children: [_jsx(Input.OTP, { length: 6, value: otp, onChange: async (val) => {
70
70
  setOtp(val);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "message-verify",
3
- "version": "1.0.1-beta.39",
3
+ "version": "1.0.1-beta.40",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "dependencies": {
package/src/index.tsx CHANGED
@@ -3,7 +3,6 @@ import VerifyModal from './verify-modal.js'
3
3
  import Fingerprint2 from 'fingerprintjs2';
4
4
  import ReLoginModal from './relogin-modal.js';
5
5
  import { ModalConfig, LoginModalConfig } from './utils/type.js';
6
- import React from 'react';
7
6
 
8
7
  let fingerprintPromise: Promise<string> | null = null; // 用 Promise 本身作为缓存
9
8
 
@@ -73,53 +72,22 @@ const destroyModal = () => {
73
72
  }
74
73
  }
75
74
 
76
- export class VerifyHandler extends React.Component {
77
- private verifyPromise: Promise<any> | null = null;
78
-
79
- createPromise = (detail: any, config: RequestConfig, http: HttpInstance): Promise<any> => {
80
- if (!this.verifyPromise) {
81
- this.verifyPromise = new Promise((resolve, reject) => {
75
+ export const VerifyHandler = (modalProps: ModalConfig): Promise<any> => {
76
+ const {data, config, http, verifyPromise} = modalProps || {};
77
+ const toEmpty = () => {
78
+ verifyPromise.current = null;
79
+ };
80
+ if (!verifyPromise.current) {
81
+ verifyPromise.current = new Promise((resolve, reject) => {
82
82
  createMessageVerifyModal({
83
- data: detail,
83
+ data,
84
84
  config,
85
85
  http,
86
86
  apiResolve: resolve,
87
87
  apiReject: reject,
88
- apiPromiseToEmpty: this.handlePromiseReset,
88
+ apiPromiseToEmpty: toEmpty,
89
89
  } as any);
90
- }).finally(this.handlePromiseReset);
90
+ }).finally(toEmpty);
91
91
  }
92
- return this.verifyPromise;
93
- };
94
-
95
- private handlePromiseReset = (): void => {
96
- this.verifyPromise = null;
97
- };
98
-
99
- render() {
100
- return null; // 纯逻辑组件不需要渲染
101
- }
102
- }
103
-
104
- // 类型定义
105
- type RequestConfig = {
106
- hideLoading?: boolean;
107
- responseType?: string;
108
- // 根据实际需求扩展其他配置项
109
- };
110
-
111
- type HttpInstance = {
112
- defaults: {
113
- headers: {
114
- common: Record<string, string>;
115
- };
116
- };
117
- interceptors: {
118
- request: {
119
- use: (handler: (config: RequestConfig) => RequestConfig) => void;
120
- };
121
- response: {
122
- use: (handler: (response: any) => any) => void;
123
- };
124
- };
125
- };
92
+ return verifyPromise.current;
93
+ };
package/src/main.tsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createRoot } from 'react-dom/client';
2
- import { createMessageVerifyModal, initFingerprint, createReLoginModal } from './index.js'; // 或 './index'
2
+ import { initFingerprint, createReLoginModal, VerifyHandler } from './index.js'; // 或 './index'
3
3
  import { axios } from '@yqg/resource';
4
4
 
5
5
  const data = "{\"mobile\":\"188****4035\",\"verifyCodeKey\":\"3f025b33-988e-47c0-950d-6beb776d043f\",\"needValid\":true,\"step\":2,\"message\":\"需要填写验证码\"}";
@@ -40,19 +40,12 @@ const config = {
40
40
  };
41
41
  createRoot(document.getElementById('root')!).render(
42
42
  <>
43
- <button onClick={() => createMessageVerifyModal({
44
- data,
45
- config,
46
- lang: 'en',
47
- http: axios,
48
- apiReject: () => {
49
- },
50
- apiResolve: () => {
51
- },
52
- apiPromiseToEmpty: () => {
53
- }
54
- })}>
55
- Show verify Modal
43
+ <button onClick={() => {
44
+ // const new11 = new VerifyHandler();
45
+ const promise = {current: null};
46
+ return VerifyHandler({data, config, http: axios, verifyPromise: promise});
47
+ }}>
48
+ Show verify Modal
56
49
  </button>
57
50
  <button onClick={() => createReLoginModal({
58
51
  goLogin: () => {
package/src/utils/type.ts CHANGED
@@ -20,9 +20,10 @@ export type ModalConfig = {
20
20
  }
21
21
  };
22
22
  api?: string;
23
- apiReject: any;
24
- apiResolve: any;
25
- apiPromiseToEmpty: () => void;
23
+ apiReject?: any;
24
+ apiResolve?: any;
25
+ apiPromiseToEmpty?: () => void;
26
+ verifyPromise: {current: Promise<any> | null}
26
27
  }
27
28
 
28
29
  export type LoginModalConfig = {
@@ -72,7 +72,7 @@ const CreateMessageVerifyModal = ({ props }: { props: ModalConfig }) => {
72
72
  visible={visible}
73
73
  onClose={() => {
74
74
  setVisible(false);
75
- apiPromiseToEmpty();
75
+ apiPromiseToEmpty?.();
76
76
  props.onClose?.();
77
77
  }}
78
78
  >