@wzyjs/hooks 0.2.27 → 0.2.37
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/antd/useDateRange.d.ts +0 -0
- package/dist/antd/useDateRange.js +122 -0
- package/dist/antd/useForm.d.ts +29 -0
- package/dist/antd/useForm.js +113 -0
- package/dist/antd/useHideFooter.js +16 -0
- package/dist/antd/useHovered.d.ts +9 -0
- package/dist/antd/useHovered.js +24 -0
- package/dist/antd/useImperativeHandleForm.d.ts +5 -0
- package/dist/antd/useImperativeHandleForm.js +13 -0
- package/dist/antd/useModalFooter.d.ts +8 -0
- package/dist/antd/useModalFooter.js +69 -0
- package/dist/antd/useOptions.d.ts +0 -0
- package/dist/antd/useOptions.js +46 -0
- package/dist/antd/usePaginationState.d.ts +9 -0
- package/dist/antd/usePaginationState.js +41 -0
- package/dist/antd/useStep.d.ts +16 -0
- package/dist/antd/useStep.js +35 -0
- package/dist/base/useClick.d.ts +10 -0
- package/dist/base/useClick.js +31 -0
- package/dist/base/useDeepEffect.d.ts +1 -0
- package/dist/base/useDeepEffect.js +18 -0
- package/dist/base/useEffectValue.d.ts +1 -0
- package/dist/base/useEffectValue.js +11 -0
- package/dist/base/useOnceEffect.d.ts +1 -0
- package/dist/base/useOnceEffect.js +24 -0
- package/dist/base/useVisibleInfo.d.ts +5 -0
- package/dist/base/useVisibleInfo.js +23 -0
- package/dist/dom/useElementScrollVisible.js +40 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +42 -0
- package/dist/other/useCRUD.d.ts +63 -0
- package/dist/other/useCRUD.js +135 -0
- package/dist/other/useRequestPro.d.ts +0 -0
- package/dist/other/useRequestPro.js +73 -0
- package/dist/other/useSetting.d.ts +0 -0
- package/dist/other/useSetting.js +69 -0
- package/dist/other/useUserInfo.d.ts +0 -0
- package/dist/other/useUserInfo.js +97 -0
- package/dist/other/useWechatLogin.d.ts +11 -0
- package/dist/other/useWechatLogin.js +86 -0
- package/package.json +7 -36
- package/dist/cjs/index.d.ts +0 -10
- package/dist/cjs/index.js +0 -63
- package/dist/cjs/useDateRange.d.ts +0 -26
- package/dist/cjs/useDateRange.js +0 -135
- package/dist/cjs/useEffectValue.d.ts +0 -2
- package/dist/cjs/useEffectValue.js +0 -34
- package/dist/cjs/useElementScrollVisible.js +0 -61
- package/dist/cjs/useHideFooter.js +0 -38
- package/dist/cjs/useOptions.d.ts +0 -13
- package/dist/cjs/useOptions.js +0 -60
- package/dist/cjs/useRequestPro.d.ts +0 -11
- package/dist/cjs/useRequestPro.js +0 -76
- package/dist/cjs/useVisibleInfo.d.ts +0 -5
- package/dist/cjs/useVisibleInfo.js +0 -45
- package/dist/esm/index.d.ts +0 -10
- package/dist/esm/index.js +0 -10
- package/dist/esm/useDateRange.d.ts +0 -26
- package/dist/esm/useDateRange.js +0 -115
- package/dist/esm/useEffectValue.d.ts +0 -2
- package/dist/esm/useEffectValue.js +0 -18
- package/dist/esm/useElementScrollVisible.d.ts +0 -5
- package/dist/esm/useElementScrollVisible.js +0 -52
- package/dist/esm/useHideFooter.d.ts +0 -1
- package/dist/esm/useHideFooter.js +0 -13
- package/dist/esm/useOptions.d.ts +0 -13
- package/dist/esm/useOptions.js +0 -60
- package/dist/esm/useRequestPro.d.ts +0 -11
- package/dist/esm/useRequestPro.js +0 -64
- package/dist/esm/useVisibleInfo.d.ts +0 -5
- package/dist/esm/useVisibleInfo.js +0 -32
- /package/dist/{cjs → antd}/useHideFooter.d.ts +0 -0
- /package/dist/{cjs → dom}/useElementScrollVisible.d.ts +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
+
if (ar || !(i in from)) {
|
|
5
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
+
ar[i] = from[i];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.useOnceEffect = void 0;
|
|
13
|
+
var react_1 = require("react");
|
|
14
|
+
var useOnceEffect = function (effect, deps) {
|
|
15
|
+
var _a = (0, react_1.useState)(false), hasRun = _a[0], setHasRun = _a[1];
|
|
16
|
+
(0, react_1.useEffect)(function () {
|
|
17
|
+
if (hasRun) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
var res = effect();
|
|
21
|
+
setHasRun(res);
|
|
22
|
+
}, __spreadArray([hasRun, effect], deps, true));
|
|
23
|
+
};
|
|
24
|
+
exports.useOnceEffect = useOnceEffect;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useVisibleInfo = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
// visible和info的集合体
|
|
6
|
+
var useVisibleInfo = function (v, i) {
|
|
7
|
+
if (v === void 0) { v = false; }
|
|
8
|
+
var _a = (0, react_1.useState)(v), visible = _a[0], setVisible = _a[1];
|
|
9
|
+
var _b = (0, react_1.useState)(i), info = _b[0], setInfo = _b[1];
|
|
10
|
+
return [
|
|
11
|
+
visible,
|
|
12
|
+
{
|
|
13
|
+
setTrue: function () { return setVisible(true); },
|
|
14
|
+
setFalse: function () { return setVisible(false); },
|
|
15
|
+
toggle: function () { return setVisible(!visible); },
|
|
16
|
+
},
|
|
17
|
+
[
|
|
18
|
+
info,
|
|
19
|
+
setInfo,
|
|
20
|
+
],
|
|
21
|
+
];
|
|
22
|
+
};
|
|
23
|
+
exports.useVisibleInfo = useVisibleInfo;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useElementScrollVisible = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
// 判断某元素滚动时,指定元素是否显示
|
|
6
|
+
var useElementScrollVisible = function (scroll, target) {
|
|
7
|
+
var $scroll = document.querySelector(scroll) || {};
|
|
8
|
+
var $scrollRect = $scroll.getBoundingClientRect();
|
|
9
|
+
var _a = (0, react_1.useState)(false), visible = _a[0], setVisible = _a[1];
|
|
10
|
+
var _b = (0, react_1.useState)(''), direction = _b[0], setDirection = _b[1];
|
|
11
|
+
var _c = (0, react_1.useState)(''), rect = _c[0], setRect = _c[1];
|
|
12
|
+
(0, react_1.useEffect)(function () {
|
|
13
|
+
var fn = function () {
|
|
14
|
+
var $target = document.querySelector(target) || {};
|
|
15
|
+
var rect = $target.getBoundingClientRect();
|
|
16
|
+
setRect(rect);
|
|
17
|
+
if (rect.bottom < $scrollRect.top) {
|
|
18
|
+
setDirection('top');
|
|
19
|
+
setVisible(false);
|
|
20
|
+
}
|
|
21
|
+
else if (rect.top > $scrollRect.bottom) {
|
|
22
|
+
setDirection('bottom');
|
|
23
|
+
setVisible(false);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
setDirection('show');
|
|
27
|
+
setVisible(true);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
fn();
|
|
31
|
+
$scroll.addEventListener('scroll', fn);
|
|
32
|
+
return function () { return $scroll.removeEventListener('scroll', fn); };
|
|
33
|
+
}, []);
|
|
34
|
+
return {
|
|
35
|
+
visible: visible,
|
|
36
|
+
direction: direction,
|
|
37
|
+
rect: rect,
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
exports.useElementScrollVisible = useElementScrollVisible;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from 'ahooks';
|
|
2
|
+
export { default as useUrlState } from '@ahooksjs/use-url-state';
|
|
3
|
+
export { useCopyToClipboard, useCookie, useUpdate } from 'react-use';
|
|
4
|
+
export * from './base/useEffectValue';
|
|
5
|
+
export * from './base/useVisibleInfo';
|
|
6
|
+
export * from './base/useClick';
|
|
7
|
+
export * from './antd/useForm';
|
|
8
|
+
export * from './antd/usePaginationState';
|
|
9
|
+
export * from './antd/useHideFooter';
|
|
10
|
+
export * from './antd/useHovered';
|
|
11
|
+
export * from './antd/useModalFooter';
|
|
12
|
+
export * from './antd/useImperativeHandleForm';
|
|
13
|
+
export * from './dom/useElementScrollVisible';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.useUpdate = exports.useCookie = exports.useCopyToClipboard = exports.useUrlState = void 0;
|
|
21
|
+
__exportStar(require("ahooks"), exports);
|
|
22
|
+
var use_url_state_1 = require("@ahooksjs/use-url-state");
|
|
23
|
+
Object.defineProperty(exports, "useUrlState", { enumerable: true, get: function () { return __importDefault(use_url_state_1).default; } });
|
|
24
|
+
var react_use_1 = require("react-use");
|
|
25
|
+
Object.defineProperty(exports, "useCopyToClipboard", { enumerable: true, get: function () { return react_use_1.useCopyToClipboard; } });
|
|
26
|
+
Object.defineProperty(exports, "useCookie", { enumerable: true, get: function () { return react_use_1.useCookie; } });
|
|
27
|
+
Object.defineProperty(exports, "useUpdate", { enumerable: true, get: function () { return react_use_1.useUpdate; } });
|
|
28
|
+
__exportStar(require("./base/useEffectValue"), exports);
|
|
29
|
+
__exportStar(require("./base/useVisibleInfo"), exports);
|
|
30
|
+
__exportStar(require("./base/useClick"), exports);
|
|
31
|
+
__exportStar(require("./antd/useForm"), exports);
|
|
32
|
+
__exportStar(require("./antd/usePaginationState"), exports);
|
|
33
|
+
__exportStar(require("./antd/useHideFooter"), exports);
|
|
34
|
+
__exportStar(require("./antd/useHovered"), exports);
|
|
35
|
+
__exportStar(require("./antd/useModalFooter"), exports);
|
|
36
|
+
__exportStar(require("./antd/useImperativeHandleForm"), exports);
|
|
37
|
+
__exportStar(require("./dom/useElementScrollVisible"), exports);
|
|
38
|
+
// export * from './other/useSetting'
|
|
39
|
+
//
|
|
40
|
+
// export * from './useRequestPro'
|
|
41
|
+
// export * from './useDateRange'
|
|
42
|
+
// export * from './useOptions'
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export interface ApiResult<D = any> {
|
|
2
|
+
status?: string;
|
|
3
|
+
message?: string;
|
|
4
|
+
success?: boolean;
|
|
5
|
+
data?: D;
|
|
6
|
+
meta?: {
|
|
7
|
+
total_count?: number;
|
|
8
|
+
filter_count?: number;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare enum CRUDAction {
|
|
12
|
+
Info = "info",
|
|
13
|
+
List = "list",
|
|
14
|
+
Create = "create",
|
|
15
|
+
Update = "update",
|
|
16
|
+
Delete = "delete"
|
|
17
|
+
}
|
|
18
|
+
type InfoAPI<I> = (id: string) => Promise<ApiResult<I>>;
|
|
19
|
+
type ListAPI<I> = (params?: any) => Promise<ApiResult<I[]>>;
|
|
20
|
+
type CreateAPI<I> = (data: any) => Promise<ApiResult<I>>;
|
|
21
|
+
type UpdateAPI<I> = (id: string, data: any) => Promise<ApiResult<I>>;
|
|
22
|
+
type DeleteAPI<I> = (id: string) => Promise<ApiResult<I>>;
|
|
23
|
+
interface Apis<I> {
|
|
24
|
+
[CRUDAction.Info]?: InfoAPI<I>;
|
|
25
|
+
[CRUDAction.List]?: ListAPI<I>;
|
|
26
|
+
[CRUDAction.Create]?: CreateAPI<I>;
|
|
27
|
+
[CRUDAction.Update]?: UpdateAPI<I>;
|
|
28
|
+
[CRUDAction.Delete]?: DeleteAPI<I>;
|
|
29
|
+
}
|
|
30
|
+
interface AutoRefreshList {
|
|
31
|
+
[CRUDAction.Info]?: boolean;
|
|
32
|
+
[CRUDAction.List]?: boolean;
|
|
33
|
+
[CRUDAction.Create]?: boolean;
|
|
34
|
+
[CRUDAction.Update]?: boolean;
|
|
35
|
+
[CRUDAction.Delete]?: boolean;
|
|
36
|
+
}
|
|
37
|
+
interface CRUDOptions<I> {
|
|
38
|
+
id?: string;
|
|
39
|
+
apis: Apis<I>;
|
|
40
|
+
autoRefreshList?: boolean | AutoRefreshList;
|
|
41
|
+
convertInfo?: (data?: I) => any;
|
|
42
|
+
replaceLocation?: boolean;
|
|
43
|
+
autoFetchList?: boolean;
|
|
44
|
+
debounceWait?: number;
|
|
45
|
+
onSuccess?: (action: CRUDAction, data?: any) => void;
|
|
46
|
+
}
|
|
47
|
+
export declare function useCRUD<I extends {
|
|
48
|
+
id: string;
|
|
49
|
+
}>(options: CRUDOptions<I>): {
|
|
50
|
+
info: I;
|
|
51
|
+
list: I[];
|
|
52
|
+
infoState: import("ahooks/lib/useRequest/src/types").Result<ApiResult<I>, string[]>;
|
|
53
|
+
listState: import("ahooks/lib/useRequest/src/types").Result<ApiResult<I[]>, [params?: any]>;
|
|
54
|
+
createState: import("ahooks/lib/useRequest/src/types").Result<ApiResult<I>, [data: any]>;
|
|
55
|
+
updateState: import("ahooks/lib/useRequest/src/types").Result<ApiResult<I>, [id: string, data: any]>;
|
|
56
|
+
deleteState: import("ahooks/lib/useRequest/src/types").Result<ApiResult<I>, [id: string]>;
|
|
57
|
+
onSave: (data: I & {
|
|
58
|
+
id?: string;
|
|
59
|
+
}) => Promise<void>;
|
|
60
|
+
apis: Apis<I>;
|
|
61
|
+
loading: boolean;
|
|
62
|
+
};
|
|
63
|
+
export {};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.CRUDAction = void 0;
|
|
40
|
+
exports.useCRUD = useCRUD;
|
|
41
|
+
var react_1 = require("react");
|
|
42
|
+
var ahooks_1 = require("ahooks");
|
|
43
|
+
var CRUDAction;
|
|
44
|
+
(function (CRUDAction) {
|
|
45
|
+
CRUDAction["Info"] = "info";
|
|
46
|
+
CRUDAction["List"] = "list";
|
|
47
|
+
CRUDAction["Create"] = "create";
|
|
48
|
+
CRUDAction["Update"] = "update";
|
|
49
|
+
CRUDAction["Delete"] = "delete";
|
|
50
|
+
})(CRUDAction || (exports.CRUDAction = CRUDAction = {}));
|
|
51
|
+
function useCRUD(options) {
|
|
52
|
+
var _this = this;
|
|
53
|
+
var id = options.id, apis = options.apis, _a = options.autoRefreshList, autoRefreshList = _a === void 0 ? true : _a, _b = options.autoFetchList, autoFetchList = _b === void 0 ? false : _b, _c = options.replaceLocation, replaceLocation = _c === void 0 ? false : _c, _d = options.convertInfo, convertInfo = _d === void 0 ? function (data) { return data; } : _d, _e = options.onSuccess, onSuccess = _e === void 0 ? function () { return undefined; } : _e, _f = options.debounceWait, debounceWait = _f === void 0 ? 300 : _f;
|
|
54
|
+
var _g = (0, react_1.useState)([]), list = _g[0], setList = _g[1];
|
|
55
|
+
var _h = (0, react_1.useState)(), info = _h[0], setInfo = _h[1];
|
|
56
|
+
var shouldRefresh = function (action, autoRefreshList) {
|
|
57
|
+
if (typeof autoRefreshList === 'boolean') {
|
|
58
|
+
return autoRefreshList;
|
|
59
|
+
}
|
|
60
|
+
return autoRefreshList[action];
|
|
61
|
+
};
|
|
62
|
+
var infoState = (0, ahooks_1.useRequest)(apis.info, {
|
|
63
|
+
ready: !!id,
|
|
64
|
+
defaultParams: [id],
|
|
65
|
+
debounceWait: debounceWait,
|
|
66
|
+
onSuccess: function (res) {
|
|
67
|
+
var convertedInfo = convertInfo(res.data);
|
|
68
|
+
setInfo(convertedInfo);
|
|
69
|
+
onSuccess(CRUDAction.Info, convertedInfo);
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
var listState = (0, ahooks_1.useRequest)(apis.list, {
|
|
73
|
+
manual: !autoFetchList,
|
|
74
|
+
debounceWait: debounceWait,
|
|
75
|
+
onSuccess: function (res) {
|
|
76
|
+
var _a;
|
|
77
|
+
var convertedList = (_a = res.data) === null || _a === void 0 ? void 0 : _a.map(convertInfo);
|
|
78
|
+
setList(convertedList || []);
|
|
79
|
+
onSuccess(CRUDAction.List, convertedList);
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
var createState = (0, ahooks_1.useRequest)(apis.create, {
|
|
83
|
+
manual: true,
|
|
84
|
+
debounceWait: debounceWait,
|
|
85
|
+
onSuccess: function (res) {
|
|
86
|
+
if (shouldRefresh(CRUDAction.Create, autoRefreshList)) {
|
|
87
|
+
listState.run();
|
|
88
|
+
}
|
|
89
|
+
onSuccess(CRUDAction.Create, res.data);
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
var updateState = (0, ahooks_1.useRequest)(apis.update, {
|
|
93
|
+
manual: true,
|
|
94
|
+
debounceWait: debounceWait,
|
|
95
|
+
onSuccess: function (res) {
|
|
96
|
+
if (shouldRefresh(CRUDAction.Update, autoRefreshList)) {
|
|
97
|
+
listState.run();
|
|
98
|
+
}
|
|
99
|
+
onSuccess(CRUDAction.Update, res.data);
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
var deleteState = (0, ahooks_1.useRequest)(apis.delete, {
|
|
103
|
+
manual: true,
|
|
104
|
+
debounceWait: debounceWait,
|
|
105
|
+
onSuccess: function (res) {
|
|
106
|
+
if (shouldRefresh(CRUDAction.Delete, autoRefreshList)) {
|
|
107
|
+
listState.run();
|
|
108
|
+
}
|
|
109
|
+
onSuccess(CRUDAction.Delete, res.data);
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
var onSave = function (data) { return __awaiter(_this, void 0, void 0, function () {
|
|
113
|
+
return __generator(this, function (_a) {
|
|
114
|
+
if (data.id) {
|
|
115
|
+
updateState.run(data.id, data);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
createState.run(data);
|
|
119
|
+
}
|
|
120
|
+
return [2 /*return*/];
|
|
121
|
+
});
|
|
122
|
+
}); };
|
|
123
|
+
return {
|
|
124
|
+
info: info,
|
|
125
|
+
list: list,
|
|
126
|
+
infoState: infoState,
|
|
127
|
+
listState: listState,
|
|
128
|
+
createState: createState,
|
|
129
|
+
updateState: updateState,
|
|
130
|
+
deleteState: deleteState,
|
|
131
|
+
onSave: onSave,
|
|
132
|
+
apis: apis,
|
|
133
|
+
loading: infoState.loading || listState.loading || createState.loading || updateState.loading || deleteState.loading,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// import { message } from 'antd'
|
|
2
|
+
// import { useRequest } from 'ahooks'
|
|
3
|
+
// import { noop, omit } from '@wzyjs/utils'
|
|
4
|
+
// import { RequestRes } from '@wzyjs/types'
|
|
5
|
+
// import { Options, Result, Service } from 'ahooks/lib/useRequest/src/types'
|
|
6
|
+
//
|
|
7
|
+
// // 在 useRequest 的基础上扩展的功能
|
|
8
|
+
// interface UserOptions<P extends any[], R> extends Options<R, P> {
|
|
9
|
+
// alertErrorMessage?: false | string,
|
|
10
|
+
// alertSuccessMessage?: true | string,
|
|
11
|
+
// }
|
|
12
|
+
//
|
|
13
|
+
// // 取出 data 里的 data
|
|
14
|
+
// interface IResult<R extends RequestRes, P extends any[]> extends Omit<Result<R, P>, 'data'> {
|
|
15
|
+
// data?: R['data'],
|
|
16
|
+
// }
|
|
17
|
+
//
|
|
18
|
+
// const defaultResult = {
|
|
19
|
+
// loading: false,
|
|
20
|
+
// data: undefined,
|
|
21
|
+
// error: undefined,
|
|
22
|
+
// params: [],
|
|
23
|
+
// cancel: noop,
|
|
24
|
+
// refresh: noop,
|
|
25
|
+
// refreshAsync: noop,
|
|
26
|
+
// run: noop,
|
|
27
|
+
// runAsync: noop,
|
|
28
|
+
// mutate: noop,
|
|
29
|
+
// }
|
|
30
|
+
//
|
|
31
|
+
// export const useRequestPro = <P extends any[], R extends RequestRes>(
|
|
32
|
+
// reqPromise?: Service<R, P>,
|
|
33
|
+
// userOptions?: UserOptions<P, R>,
|
|
34
|
+
// ): IResult<R, P> => {
|
|
35
|
+
// if (!reqPromise) {
|
|
36
|
+
// return defaultResult as IResult<R, P>
|
|
37
|
+
// }
|
|
38
|
+
//
|
|
39
|
+
// const { alertErrorMessage = true, alertSuccessMessage = false } = userOptions || {}
|
|
40
|
+
//
|
|
41
|
+
// const defaultOptions = {
|
|
42
|
+
// debounceWait: 300,
|
|
43
|
+
// throttleWait: 300,
|
|
44
|
+
// onError: (err: Error, params: P) => {
|
|
45
|
+
// if (alertErrorMessage) {
|
|
46
|
+
// message.error(typeof alertErrorMessage === 'string' ? alertErrorMessage : err.message || '请求失败')
|
|
47
|
+
// }
|
|
48
|
+
// userOptions?.onError?.(err, params)
|
|
49
|
+
// },
|
|
50
|
+
// onSuccess: (res: R, params: P) => {
|
|
51
|
+
// // 如果失败,则还是调用 onError
|
|
52
|
+
// if (!res?.success) {
|
|
53
|
+
// defaultOptions.onError(new Error(res?.message), params)
|
|
54
|
+
// return
|
|
55
|
+
// }
|
|
56
|
+
//
|
|
57
|
+
// // 如果成功,并且需要自动弹出提示
|
|
58
|
+
// if (alertSuccessMessage) {
|
|
59
|
+
// message.success(typeof alertSuccessMessage === 'string' ? alertSuccessMessage : res.message || '请求成功')
|
|
60
|
+
// }
|
|
61
|
+
// userOptions?.onSuccess?.(res, params)
|
|
62
|
+
// },
|
|
63
|
+
// }
|
|
64
|
+
//
|
|
65
|
+
// // 用户配置与默认配置合并
|
|
66
|
+
// const enableOptions = Object.assign(defaultOptions, omit(userOptions, ['onSuccess', 'onError']))
|
|
67
|
+
//
|
|
68
|
+
// // 取出 data 里的 data
|
|
69
|
+
// const state = useRequest(reqPromise, enableOptions)
|
|
70
|
+
// state.data = state.data?.data
|
|
71
|
+
//
|
|
72
|
+
// return state
|
|
73
|
+
// }
|
|
File without changes
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// import { useCallback, useEffect, useState } from 'react'
|
|
2
|
+
//
|
|
3
|
+
// export const useSetting = (key: string, defaultValue: any = {}) => {
|
|
4
|
+
// // 分割 key 以支持嵌套结构
|
|
5
|
+
// const keys = key.split('.')
|
|
6
|
+
//
|
|
7
|
+
// // 获取初始值
|
|
8
|
+
// const getInitialSetting = useCallback(() => {
|
|
9
|
+
// if (typeof window === 'undefined') return defaultValue
|
|
10
|
+
// try {
|
|
11
|
+
// const stored = localStorage.getItem('settings')
|
|
12
|
+
// if (!stored) return defaultValue
|
|
13
|
+
// let result = JSON.parse(stored)
|
|
14
|
+
// for (let k of keys) {
|
|
15
|
+
// if (result[k] === undefined) {
|
|
16
|
+
// return defaultValue
|
|
17
|
+
// }
|
|
18
|
+
// result = result[k]
|
|
19
|
+
// }
|
|
20
|
+
// return result
|
|
21
|
+
// } catch (error) {
|
|
22
|
+
// console.error('从 localStorage 读取设置失败:', error)
|
|
23
|
+
// return defaultValue
|
|
24
|
+
// }
|
|
25
|
+
// }, [keys])
|
|
26
|
+
//
|
|
27
|
+
// const [setting, setSettingState] = useState(getInitialSetting)
|
|
28
|
+
//
|
|
29
|
+
// // 更新 localStorage
|
|
30
|
+
// const setSetting = useCallback(
|
|
31
|
+
// (newSetting: any) => {
|
|
32
|
+
// setSettingState(newSetting)
|
|
33
|
+
// if (typeof window === 'undefined') return
|
|
34
|
+
// try {
|
|
35
|
+
// const stored = localStorage.getItem('settings')
|
|
36
|
+
// const parsed = stored ? JSON.parse(stored) : {}
|
|
37
|
+
//
|
|
38
|
+
// let current = parsed
|
|
39
|
+
// for (let i = 0; i < keys.length - 1; i++) {
|
|
40
|
+
// if (current[keys[i]] === undefined || typeof current[keys[i]] !== 'object') {
|
|
41
|
+
// current[keys[i]] = {}
|
|
42
|
+
// }
|
|
43
|
+
// current = current[keys[i]]
|
|
44
|
+
// }
|
|
45
|
+
// current[keys[keys.length - 1]] = newSetting
|
|
46
|
+
//
|
|
47
|
+
// localStorage.setItem('settings', JSON.stringify(parsed))
|
|
48
|
+
// } catch (error) {
|
|
49
|
+
// console.error('向 localStorage 写入设置失败:', error)
|
|
50
|
+
// }
|
|
51
|
+
// },
|
|
52
|
+
// [keys],
|
|
53
|
+
// )
|
|
54
|
+
//
|
|
55
|
+
// // 监听 localStorage 中 settings 的变化
|
|
56
|
+
// useEffect(() => {
|
|
57
|
+
// const handleStorageChange = (event: any) => {
|
|
58
|
+
// if (event.key === 'settings') {
|
|
59
|
+
// setSettingState(getInitialSetting())
|
|
60
|
+
// }
|
|
61
|
+
// }
|
|
62
|
+
// window.addEventListener('storage', handleStorageChange)
|
|
63
|
+
// return () => {
|
|
64
|
+
// window.removeEventListener('storage', handleStorageChange)
|
|
65
|
+
// }
|
|
66
|
+
// }, [getInitialSetting])
|
|
67
|
+
//
|
|
68
|
+
// return [setting, setSetting]
|
|
69
|
+
// }
|
|
File without changes
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// import { useEffect, useState } from 'react'
|
|
2
|
+
//
|
|
3
|
+
// import { pick } from 'lodash'
|
|
4
|
+
// import { useLocalStorageState, useRequest } from 'ahooks'
|
|
5
|
+
//
|
|
6
|
+
// import { user } from '@/services'
|
|
7
|
+
// import { User, PageKey } from '@/types'
|
|
8
|
+
//
|
|
9
|
+
// export const useUserInfo = () => {
|
|
10
|
+
// const [token, setToken] = useLocalStorageState<user.LoginResult>('token')
|
|
11
|
+
//
|
|
12
|
+
// const [userInfo, setUserInfo] = useState<User>()
|
|
13
|
+
//
|
|
14
|
+
// const loginState = useRequest(user.login, {
|
|
15
|
+
// manual: true,
|
|
16
|
+
// })
|
|
17
|
+
//
|
|
18
|
+
// const refreshState = useRequest(user.refresh, {
|
|
19
|
+
// manual: true,
|
|
20
|
+
// })
|
|
21
|
+
//
|
|
22
|
+
// const userInfoState = useRequest(user.info, {
|
|
23
|
+
// refreshDeps: [token?.access_token],
|
|
24
|
+
// ready: !!token?.access_token,
|
|
25
|
+
// debounceWait: 300,
|
|
26
|
+
// onSuccess: res => {
|
|
27
|
+
// setUserInfo(res.data)
|
|
28
|
+
// },
|
|
29
|
+
// onError: () => {
|
|
30
|
+
// refreshToken()
|
|
31
|
+
// },
|
|
32
|
+
// })
|
|
33
|
+
//
|
|
34
|
+
// const cacheToken = (data?: user.LoginResult) => {
|
|
35
|
+
// if (!data) {
|
|
36
|
+
// throw new Error('token failed')
|
|
37
|
+
// }
|
|
38
|
+
// data.expires_at = Date.now() + data.expires
|
|
39
|
+
// setToken(data)
|
|
40
|
+
// }
|
|
41
|
+
//
|
|
42
|
+
// const refreshToken = async () => {
|
|
43
|
+
// const token = JSON.parse(localStorage.getItem('token') || '{}')
|
|
44
|
+
//
|
|
45
|
+
// if (token?.expires_at && ((token.expires_at - Date.now()) < (30 * 1000))) {
|
|
46
|
+
// const res = await refreshState.runAsync(pick(token, 'refresh_token'))
|
|
47
|
+
// cacheToken(res.data)
|
|
48
|
+
// }
|
|
49
|
+
// }
|
|
50
|
+
//
|
|
51
|
+
// const login = async (data: user.LoginData) => {
|
|
52
|
+
// if (!data) {
|
|
53
|
+
// throw new Error('data is required')
|
|
54
|
+
// }
|
|
55
|
+
//
|
|
56
|
+
// const res = await loginState.runAsync(data)
|
|
57
|
+
// cacheToken(res.data)
|
|
58
|
+
// }
|
|
59
|
+
//
|
|
60
|
+
// const logout = async () => {
|
|
61
|
+
// if (!token) {
|
|
62
|
+
// return
|
|
63
|
+
// }
|
|
64
|
+
// await user.logout({ refresh_token: token.refresh_token })
|
|
65
|
+
// setToken(undefined)
|
|
66
|
+
// setUserInfo(undefined)
|
|
67
|
+
// location.reload()
|
|
68
|
+
// }
|
|
69
|
+
//
|
|
70
|
+
// useEffect(() => {
|
|
71
|
+
// const timer = setInterval(async () => {
|
|
72
|
+
// try {
|
|
73
|
+
// await refreshToken()
|
|
74
|
+
//
|
|
75
|
+
// } catch (err) {
|
|
76
|
+
// clearInterval(timer)
|
|
77
|
+
// if (location.pathname !== PageKey.Login) {
|
|
78
|
+
// location.reload()
|
|
79
|
+
// }
|
|
80
|
+
// }
|
|
81
|
+
// }, 10 * 1000)
|
|
82
|
+
//
|
|
83
|
+
// return () => {
|
|
84
|
+
// clearInterval(timer)
|
|
85
|
+
// }
|
|
86
|
+
// }, [])
|
|
87
|
+
//
|
|
88
|
+
// return {
|
|
89
|
+
// login,
|
|
90
|
+
// loginLoading: loginState.loading,
|
|
91
|
+
//
|
|
92
|
+
// userInfo,
|
|
93
|
+
// userInfoLoading: userInfoState.loading,
|
|
94
|
+
//
|
|
95
|
+
// logout,
|
|
96
|
+
// }
|
|
97
|
+
// }
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface WeChatLoginResult {
|
|
2
|
+
token: string;
|
|
3
|
+
}
|
|
4
|
+
interface wechatLoginOption {
|
|
5
|
+
onSuccess?: (loginResult: WeChatLoginResult) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function insertWxLoginScript(): void;
|
|
8
|
+
export declare const useWechatLogin: (option: wechatLoginOption) => {
|
|
9
|
+
renderLoginView: () => void;
|
|
10
|
+
};
|
|
11
|
+
export {};
|