@gup-fe/js-sdk 2.0.0 → 2.1.1

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/README.md CHANGED
@@ -18,6 +18,13 @@ npm install @gup-fe/js-sdk
18
18
  pnpm add @gup-fe/js-sdk
19
19
  ```
20
20
 
21
+ > **⚠️ 特别注意(针对 Vue 3 或非 React 项目):**
22
+ > 本 SDK 的底层 UI 是基于 React 渲染的,但为了避免在 React 宿主项目中产生冲突(导致 Invalid Hook Call 等报错),SDK **没有将 React 打包进源码中**。
23
+ > 因此,如果您在 **Vue 3** 等其他非 React 环境中使用,必须手动在您的项目中安装 `react` 和 `react-dom` 作为运行时依赖,打包工具(如 Vite/Webpack)才能正常为您编译:
24
+ > ```bash
25
+ > npm install react react-dom
26
+ > ```
27
+
21
28
  ## 快速上手
22
29
 
23
30
  ### 方式一:命令式调用(推荐,适用于任意框架)
@@ -27,10 +34,18 @@ pnpm add @gup-fe/js-sdk
27
34
  ```javascript
28
35
  import { login } from '@gup-fe/js-sdk';
29
36
 
30
- // 一键调出登录弹窗
31
- login({
37
+ // 一键调出登录弹窗并获取其控制句柄
38
+ const { close } = login({
32
39
  gameId: '5242',
33
- // loginTypes: ['phone', 'uid'] // 可选:指定开启哪些登录方式
40
+ // loginTypes: ['phone', 'uid'], // 可选:指定开启哪些登录方式
41
+ onLoginSuccess: (data) => {
42
+ console.log('🎉 登录成功!获取到的数据:', data)
43
+ // 成功后主动关闭登录弹窗
44
+ close()
45
+ },
46
+ onLoginError: (error) => {
47
+ console.error('❌ 登录失败:', error)
48
+ }
34
49
  });
35
50
  ```
36
51
 
@@ -74,8 +89,12 @@ function App() {
74
89
  <title>JS SDK Demo</title>
75
90
  </head>
76
91
  <body>
77
- <!-- 引入 UMD 产物 -->
78
- <script src="https://unpkg.com/@gup-fe/js-sdk@2.0.0/dist/js-sdk.umd.js"></script>
92
+ <!-- 1. 必须先引入 React 运行时库 -->
93
+ <script src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
94
+ <script src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
95
+
96
+ <!-- 2. 引入 SDK 的 UMD 产物 -->
97
+ <script src="https://unpkg.com/@gup-fe/js-sdk@2.1.0/dist/js-sdk.umd.js"></script>
79
98
 
80
99
  <script>
81
100
  // 直接使用全局变量 SDK 调用
@@ -103,6 +122,8 @@ function App() {
103
122
  | ------------ | -------------- | ---- | ------ | ---------------------------------------- |
104
123
  | `gameId` | `string` | **是** | - | 当前业务/游戏的唯一标识 ID |
105
124
  | `loginTypes` | `LoginTypes[]` | 否 | - | 支持的登录方式列表,例如 `['phone', 'uid']` |
125
+ | `onLoginSuccess` | `(data: any) => void` | 否 | - | 无论哪种登录方式,**登录成功**后触发的回调,并返回登录信息 |
126
+ | `onLoginError` | `(error: any) => void`| 否 | - | 无论哪种登录方式,**登录失败**后触发的回调,并返回错误信息 |
106
127
 
107
128
  ### 导出的核心组件与配置
108
129
  对于有高度定制化需求的业务方,SDK 同样暴露了以下底层组件:
package/dist/index.d.ts CHANGED
@@ -19,6 +19,8 @@ declare interface ConfigContextType {
19
19
  onUidLoginSuccess?: (data: any) => void;
20
20
  onPhoneLoginSuccess?: ((data: PhoneLoginResponse) => void) | ((data: PhoneLoginResponse) => Promise<void>);
21
21
  onAccountLoginSuccess?: (data: PhoneLoginResponse) => void;
22
+ onLoginSuccess?: (data: any) => void;
23
+ onLoginError?: (error: any) => void;
22
24
  closeable?: boolean;
23
25
  uidLoginConfig?: {
24
26
  uidGetterImageClassName?: string;
@@ -43,12 +45,16 @@ declare interface ConfigProviderProps {
43
45
  };
44
46
  }
45
47
 
46
- export declare function Login({ open, onOpenChange, sceneId, onPhoneLoginSuccess, onAccountLoginSuccess, onUidLoginSuccess, closeable, mountToaster, toastConfigs, ...props }: Props): JSX.Element;
48
+ export declare function Login({ open, onOpenChange, sceneId, onPhoneLoginSuccess, onAccountLoginSuccess, onUidLoginSuccess, onLoginSuccess, onLoginError, closeable, mountToaster, toastConfigs, ...props }: Props): JSX.Element;
47
49
 
48
- export declare function login({ loginTypes, gameId }: {
50
+ export declare function login({ loginTypes, gameId, onLoginSuccess, onLoginError, }: {
49
51
  loginTypes?: LoginTypes[];
50
52
  gameId: string;
51
- }): void;
53
+ onLoginSuccess?: (data: any) => void;
54
+ onLoginError?: (error: any) => void;
55
+ }): {
56
+ close: () => void;
57
+ };
52
58
 
53
59
  export declare const LOGIN_TYPES: {
54
60
  readonly ROLE_ID: "roleid";
@@ -122,6 +128,8 @@ declare interface Props extends Omit<ConfigContextType, 'setCurrentLoginType' |
122
128
  onAccountLoginSuccess?: (data: PhoneLoginResponse) => void;
123
129
  sceneId?: number;
124
130
  onUidLoginSuccess?: (data: any) => void;
131
+ onLoginSuccess?: (data: any) => void;
132
+ onLoginError?: (error: any) => void;
125
133
  autoLoginConfig?: AutoLoginConfig;
126
134
  closeable?: boolean;
127
135
  mountToaster?: boolean;