@tuya-sat/sdf-main-sdk 0.0.1-beta.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/.vscode/settings.json +5 -0
- package/README.md +1 -0
- package/antd.less.overwrite.js +56 -0
- package/color.js +140 -0
- package/dark-variable.less +1449 -0
- package/package.json +74 -0
- package/scripts/gen-localize-file.mjs +56 -0
- package/src/App.less +156 -0
- package/src/App.tsx +87 -0
- package/src/api/index.ts +52 -0
- package/src/api/req.ts +23 -0
- package/src/api/res.ts +29 -0
- package/src/api/urls.ts +30 -0
- package/src/api/utils.ts +41 -0
- package/src/assets/imgs/404.svg +194 -0
- package/src/assets/imgs/reLogin.png +0 -0
- package/src/components/404/index.tsx +44 -0
- package/src/components/500/index.tsx +49 -0
- package/src/components/BCustomNav/index.module.less +17 -0
- package/src/components/BCustomNav/index.tsx +108 -0
- package/src/components/BForgot/index.module.less +5 -0
- package/src/components/BForgot/index.tsx +96 -0
- package/src/components/BHeaderUser/account.png +0 -0
- package/src/components/BHeaderUser/app-scan-en.png +0 -0
- package/src/components/BHeaderUser/app-scan-zh.png +0 -0
- package/src/components/BHeaderUser/app-scan.png +0 -0
- package/src/components/BHeaderUser/components/BSwitchLang/index.module.less +6 -0
- package/src/components/BHeaderUser/components/BSwitchLang/index.tsx +56 -0
- package/src/components/BHeaderUser/components/Badge/components/Notice/Drawer/Content.tsx +199 -0
- package/src/components/BHeaderUser/components/Badge/components/Notice/Drawer/index.module.less +11 -0
- package/src/components/BHeaderUser/components/Badge/components/Notice/Drawer/index.tsx +27 -0
- package/src/components/BHeaderUser/components/Badge/components/Notice/hooks.ts +104 -0
- package/src/components/BHeaderUser/components/Badge/components/Notice/index.module.less +70 -0
- package/src/components/BHeaderUser/components/Badge/components/Notice/index.tsx +184 -0
- package/src/components/BHeaderUser/components/Badge/components/Notice/table/index.tsx +184 -0
- package/src/components/BHeaderUser/components/Badge/components/Notice/table/read.tsx +67 -0
- package/src/components/BHeaderUser/components/Badge/components/Notice/tools/index.tsx +116 -0
- package/src/components/BHeaderUser/components/Badge/index.module.less +99 -0
- package/src/components/BHeaderUser/components/Badge/index.tsx +179 -0
- package/src/components/BHeaderUser/index.module.less +105 -0
- package/src/components/BHeaderUser/index.tsx +261 -0
- package/src/components/BHeaderUser/logout.tsx +26 -0
- package/src/components/BLayout/components/Header/index.module.less +27 -0
- package/src/components/BLayout/components/Header/index.tsx +36 -0
- package/src/components/BLayout/components/Layout/empty.tsx +35 -0
- package/src/components/BLayout/components/Layout/emptyPage.png +0 -0
- package/src/components/BLayout/components/Layout/index.tsx +72 -0
- package/src/components/BLayout/components/Logo.tsx +6 -0
- package/src/components/BLayout/components/Menu/collapse.tsx +41 -0
- package/src/components/BLayout/components/Menu/image/close.tsx +26 -0
- package/src/components/BLayout/components/Menu/image/closedefault.tsx +26 -0
- package/src/components/BLayout/components/Menu/image/open.tsx +38 -0
- package/src/components/BLayout/components/Menu/image/opendefault.tsx +38 -0
- package/src/components/BLayout/components/Menu/index.module.less +125 -0
- package/src/components/BLayout/components/Menu/index.tsx +244 -0
- package/src/components/BLayout/components/MenuIcon.module.less +5 -0
- package/src/components/BLayout/components/MenuIcon.tsx +46 -0
- package/src/components/BLayout/components/MultiSider/index.module.less +104 -0
- package/src/components/BLayout/components/MultiSider/index.tsx +172 -0
- package/src/components/BLayout/components/Sider/index.less +64 -0
- package/src/components/BLayout/components/Sider/index.module.less +17 -0
- package/src/components/BLayout/components/Sider/index.tsx +34 -0
- package/src/components/BLayout/index.tsx +78 -0
- package/src/components/BLayoutLogin/index.module.less +65 -0
- package/src/components/BLayoutLogin/index.tsx +68 -0
- package/src/components/BLayoutLogin/login.jpg +0 -0
- package/src/components/BLogin/component/Clause/index.module.less +25 -0
- package/src/components/BLogin/component/Clause/index.tsx +58 -0
- package/src/components/BLogin/component/ForgotBtn/index.module.less +9 -0
- package/src/components/BLogin/component/ForgotBtn/index.tsx +18 -0
- package/src/components/BLogin/component/Password/index.tsx +39 -0
- package/src/components/BLogin/component/SubmitBtn/index.tsx +30 -0
- package/src/components/BLogin/component/TenanSpace/index.tsx +28 -0
- package/src/components/BLogin/component/Title/index.module.less +6 -0
- package/src/components/BLogin/component/Title/index.tsx +12 -0
- package/src/components/BLogin/component/UserName/index.tsx +48 -0
- package/src/components/BLogin/component/VerifyCode/index.module.less +11 -0
- package/src/components/BLogin/component/VerifyCode/index.tsx +165 -0
- package/src/components/BLogin/index.module.less +31 -0
- package/src/components/BLogin/index.tsx +210 -0
- package/src/components/BRegister/components/TenantName/index.tsx +26 -0
- package/src/components/BRegister/index.module.less +5 -0
- package/src/components/BRegister/index.tsx +71 -0
- package/src/components/Back/index.tsx +25 -0
- package/src/components/IconFont/font.js +66 -0
- package/src/components/IconFont/index.tsx +18 -0
- package/src/components/MicroComponent/Header/index.module.less +7 -0
- package/src/components/MicroComponent/Header/index.tsx +220 -0
- package/src/components/PForgot/index.tsx +10 -0
- package/src/components/PLogin/index.tsx +12 -0
- package/src/components/PRegister/index.tsx +10 -0
- package/src/components/PSetting/index.module.less +53 -0
- package/src/components/PSetting/index.tsx +420 -0
- package/src/constant/chargeStatus.ts +6 -0
- package/src/constant/imgs.ts +6 -0
- package/src/constant/index.ts +293 -0
- package/src/dark-variable.less +1449 -0
- package/src/global.d.ts +54 -0
- package/src/hooks/index.ts +133 -0
- package/src/index.css +1493 -0
- package/src/index.tsx +105 -0
- package/src/lang/en.json +266 -0
- package/src/lang/index.ts +44 -0
- package/src/lang/utils.ts +285 -0
- package/src/lang/zh.json +270 -0
- package/src/micro-script/theme/index.ts +29 -0
- package/src/micro-script/theme/theme-css/static.js +73 -0
- package/src/micro-script/theme/theme-css/subscriber.ts +201 -0
- package/src/micro-script/theme/util/index.ts +58 -0
- package/src/mqtt/index.ts +121 -0
- package/src/pages/403.tsx +18 -0
- package/src/pages/404.tsx +17 -0
- package/src/pages/expiration.tsx +23 -0
- package/src/pages/forgot.tsx +9 -0
- package/src/pages/home/index.tsx +172 -0
- package/src/pages/home/setting/index.tsx +7 -0
- package/src/pages/index.ts +50 -0
- package/src/pages/login.tsx +46 -0
- package/src/pages/register.tsx +9 -0
- package/src/pages/relogin/index.module.less +0 -0
- package/src/pages/relogin/index.tsx +54 -0
- package/src/plugins/index.ts +11 -0
- package/src/public-path.js +8 -0
- package/src/qiankun/globalState.ts +6 -0
- package/src/qiankun/index.ts +174 -0
- package/src/qiankun/utils/index.ts +69 -0
- package/src/qiankun/xhook/index.ts +193 -0
- package/src/reportWebVitals.ts +15 -0
- package/src/sentry/index.ts +33 -0
- package/src/sky/index.ts +57 -0
- package/src/theme/custom-dark.less +64 -0
- package/src/theme/custom-light.less +48 -0
- package/src/theme/index.less +327 -0
- package/src/theme/variable.less +13 -0
- package/src/utils/checkPass.ts +21 -0
- package/src/utils/common.ts +195 -0
- package/src/utils/eventBus.ts +112 -0
- package/src/utils/gt.js +293 -0
- package/src/utils/index.ts +89 -0
- package/src/utils/theme/base.ts +110 -0
- package/src/utils/theme/changeCssVariable.ts +157 -0
- package/src/utils/theme/changeMenuCssVariable.ts +176 -0
- package/src/utils/theme/index.ts +85 -0
- package/src/utils/theme/store.ts +37 -0
- package/tsconfig.json +28 -0
- package/typings.d.ts +10 -0
- package/webpack.config.js +103 -0
package/src/global.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
type LangKey = 'zh' | 'zh_tw' | 'en';
|
|
3
|
+
interface Window {
|
|
4
|
+
csrf: string;
|
|
5
|
+
location: any;
|
|
6
|
+
FS: any;
|
|
7
|
+
_SDF_CONFIG: any;
|
|
8
|
+
TPM: any;
|
|
9
|
+
runtime: string;
|
|
10
|
+
_SDF: {
|
|
11
|
+
region: string;
|
|
12
|
+
runtime: string;
|
|
13
|
+
saas: {
|
|
14
|
+
is_support_mobile: boolean | undefined;
|
|
15
|
+
charge_status: string;
|
|
16
|
+
expire_time: number;
|
|
17
|
+
custom_configs:
|
|
18
|
+
| {
|
|
19
|
+
config_key:
|
|
20
|
+
| 'dynamic_theme'
|
|
21
|
+
| 'is_support_theme_change'
|
|
22
|
+
| 'dynamic_header_menu';
|
|
23
|
+
config_group: string;
|
|
24
|
+
platform: string;
|
|
25
|
+
config_value_json: string;
|
|
26
|
+
config_name_zh: string;
|
|
27
|
+
config_name_en: string;
|
|
28
|
+
config_value: { [key: string]: any };
|
|
29
|
+
}[]
|
|
30
|
+
| undefined;
|
|
31
|
+
entries: {
|
|
32
|
+
entry_mode: 'normal' | 'group';
|
|
33
|
+
};
|
|
34
|
+
saas_locales?: Record<string, Record<string, Record<LangKey, string>>>;
|
|
35
|
+
[key: string]: any;
|
|
36
|
+
};
|
|
37
|
+
base: string;
|
|
38
|
+
saasInfo: any;
|
|
39
|
+
user: {
|
|
40
|
+
user_nick_name: string;
|
|
41
|
+
user_name: string;
|
|
42
|
+
roles: Array<{
|
|
43
|
+
role_code?: string;
|
|
44
|
+
role_name: string;
|
|
45
|
+
}>;
|
|
46
|
+
mobile?: string;
|
|
47
|
+
email?: string;
|
|
48
|
+
country_code?: string;
|
|
49
|
+
} | null;
|
|
50
|
+
};
|
|
51
|
+
initGeetest: (options: any, callback: (geetest: any) => void) => void;
|
|
52
|
+
darkLightChangeSubscriber?: any;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { useEffect, useRef, useState, useMemo } from 'react';
|
|
2
|
+
import { useLocation, useHistory } from 'react-router-dom';
|
|
3
|
+
import { api, URLS } from '@/api';
|
|
4
|
+
import { gMainConfig } from '@/index';
|
|
5
|
+
|
|
6
|
+
export let micApps;
|
|
7
|
+
export let permissions;
|
|
8
|
+
export const universalIds = [];
|
|
9
|
+
export let apis = {};
|
|
10
|
+
|
|
11
|
+
export const useSaasInfo = () => {
|
|
12
|
+
const [entryInfo, setEntry] = useState({});
|
|
13
|
+
const [apps, setApps] = useState([]);
|
|
14
|
+
const [appIds, setAppIds] = useState([]);
|
|
15
|
+
const [saasIdInfoList, setsaasIdInfoList] = useState([]);
|
|
16
|
+
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (window._SDF.saasInfo) {
|
|
19
|
+
/**
|
|
20
|
+
* 注意:请勿改动下面hooks的调用顺序,
|
|
21
|
+
* 因为每个hook都会造成组件的重新渲染,且runQiankun里的参数存在闭包引用(https://registry.code.tuya-inc.top/micro-apps/iot-suite-fe-gateway/-/blob/master/main-app/src/pages/home/index.tsx#L46)
|
|
22
|
+
*/
|
|
23
|
+
if (gMainConfig?.hooks?.loginedSaaSHook) {
|
|
24
|
+
gMainConfig.hooks.loginedSaaSHook(window?._SDF?.saasInfo).then(() => {
|
|
25
|
+
const res = window._SDF?.saasInfo;
|
|
26
|
+
apis = res.apis;
|
|
27
|
+
const apps = res.apps.map((element) => {
|
|
28
|
+
element.universal_id && universalIds.push(element.universal_id);
|
|
29
|
+
return {
|
|
30
|
+
...element,
|
|
31
|
+
active_rule:
|
|
32
|
+
(window.location.pathname.match(/\/g\/\d+/)?.[0] || '') +
|
|
33
|
+
element.active_rule,
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
setEntry(res.entry_info);
|
|
37
|
+
setApps(apps);
|
|
38
|
+
micApps = apps;
|
|
39
|
+
setAppIds(res.saas_id_info_list.map((item) => item.oem_micro_app_id));
|
|
40
|
+
setsaasIdInfoList(res.saas_id_info_list);
|
|
41
|
+
permissions = res.permissions;
|
|
42
|
+
});
|
|
43
|
+
} else {
|
|
44
|
+
const res = window._SDF?.saasInfo;
|
|
45
|
+
apis = res.apis;
|
|
46
|
+
const apps = res.apps.map((element) => {
|
|
47
|
+
element.universal_id && universalIds.push(element.universal_id);
|
|
48
|
+
return {
|
|
49
|
+
...element,
|
|
50
|
+
active_rule:
|
|
51
|
+
(window.location.pathname.match(/\/g\/\d+/)?.[0] || '') +
|
|
52
|
+
element.active_rule,
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
setEntry(res.entry_info);
|
|
56
|
+
setApps(apps);
|
|
57
|
+
micApps = apps;
|
|
58
|
+
setAppIds(res.saas_id_info_list.map((item) => item.oem_micro_app_id));
|
|
59
|
+
setsaasIdInfoList(res.saas_id_info_list);
|
|
60
|
+
permissions = res.permissions;
|
|
61
|
+
}
|
|
62
|
+
} else {
|
|
63
|
+
if (gMainConfig?.hooks?.loginedSaaSHook) {
|
|
64
|
+
api.get(URLS.SAAS_INFO).then(async (res) => {
|
|
65
|
+
window._SDF.saasInfo = res;
|
|
66
|
+
await gMainConfig.hooks.loginedSaaSHook(window?._SDF?.saasInfo);
|
|
67
|
+
const apps = res.apps.map((element) => {
|
|
68
|
+
element.universal_id && universalIds.push(element.universal_id);
|
|
69
|
+
return {
|
|
70
|
+
...element,
|
|
71
|
+
active_rule:
|
|
72
|
+
(window.location.pathname.match(/\/g\/\d+/)?.[0] || '') +
|
|
73
|
+
element.active_rule,
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
setEntry(res.entry_info);
|
|
77
|
+
setApps(apps);
|
|
78
|
+
micApps = apps;
|
|
79
|
+
setAppIds(res.saas_id_info_list.map((item) => item.oem_micro_app_id));
|
|
80
|
+
setsaasIdInfoList(res.saas_id_info_list);
|
|
81
|
+
permissions = res.permissions;
|
|
82
|
+
});
|
|
83
|
+
} else {
|
|
84
|
+
api.get(URLS.SAAS_INFO).then((res) => {
|
|
85
|
+
const apps = res.apps.map((element) => {
|
|
86
|
+
element.universal_id && universalIds.push(element.universal_id);
|
|
87
|
+
return {
|
|
88
|
+
...element,
|
|
89
|
+
active_rule:
|
|
90
|
+
(window.location.pathname.match(/\/g\/\d+/)?.[0] || '') +
|
|
91
|
+
element.active_rule,
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
setEntry(res.entry_info);
|
|
95
|
+
setApps(apps);
|
|
96
|
+
micApps = apps;
|
|
97
|
+
setAppIds(res.saas_id_info_list.map((item) => item.oem_micro_app_id));
|
|
98
|
+
setsaasIdInfoList(res.saas_id_info_list);
|
|
99
|
+
permissions = res.permissions;
|
|
100
|
+
window._SDF.saasInfo = res;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}, []);
|
|
105
|
+
return { entryInfo, apps, appIds, saasIdInfoList };
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export const use403 = (authAppIds) => {
|
|
109
|
+
const location = useLocation();
|
|
110
|
+
const history = useHistory();
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
if (
|
|
113
|
+
location.pathname.includes('/apps') &&
|
|
114
|
+
!authAppIds.includes(location.pathname.split('/')[2])
|
|
115
|
+
) {
|
|
116
|
+
history.push('/404');
|
|
117
|
+
}
|
|
118
|
+
}, [authAppIds]);
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export const usePrevious = <T>(value: T): T => {
|
|
122
|
+
const ref = useRef<T>();
|
|
123
|
+
useEffect(() => {
|
|
124
|
+
ref.current = value;
|
|
125
|
+
}, [value]);
|
|
126
|
+
return ref.current;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
export const useQuery = () => {
|
|
130
|
+
const { search } = useLocation();
|
|
131
|
+
|
|
132
|
+
return useMemo(() => new URLSearchParams(search), [search]);
|
|
133
|
+
};
|