mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-07-31 06:01:24 +00:00
optimize global states
This commit is contained in:
@@ -163,5 +163,5 @@ export const useFetchResources = () => {
|
||||
[setResources]
|
||||
);
|
||||
|
||||
return { downloadResource };
|
||||
return downloadResource;
|
||||
};
|
||||
|
@@ -1,64 +1,50 @@
|
||||
import { useRef, useState } from 'react';
|
||||
import { useRef, useState, useCallback, useMemo } from 'react';
|
||||
|
||||
interface State {
|
||||
isShow: boolean;
|
||||
isShow: boolean;
|
||||
}
|
||||
|
||||
export const useModal = () => {
|
||||
const [state, setState] = useState<State>({
|
||||
isShow: false,
|
||||
const [state, setState] = useState<State>({ isShow: false });
|
||||
const [message, setMessage] = useState({ publishFee: '', message: '' });
|
||||
const promiseConfig = useRef<any>(null);
|
||||
|
||||
const show = useCallback((data) => {
|
||||
setMessage(data);
|
||||
return new Promise((resolve, reject) => {
|
||||
promiseConfig.current = { resolve, reject };
|
||||
setState({ isShow: true });
|
||||
});
|
||||
const [message, setMessage] = useState({
|
||||
publishFee: "",
|
||||
message: ""
|
||||
});
|
||||
const promiseConfig = useRef<any>(null);
|
||||
const show = async (data) => {
|
||||
setMessage(data)
|
||||
return new Promise((resolve, reject) => {
|
||||
promiseConfig.current = {
|
||||
resolve,
|
||||
reject,
|
||||
};
|
||||
setState({
|
||||
isShow: true,
|
||||
});
|
||||
});
|
||||
};
|
||||
}, []);
|
||||
|
||||
const hide = () => {
|
||||
setState({
|
||||
isShow: false,
|
||||
});
|
||||
setMessage({
|
||||
publishFee: "",
|
||||
message: ""
|
||||
})
|
||||
};
|
||||
const hide = useCallback(() => {
|
||||
setState({ isShow: false });
|
||||
setMessage({ publishFee: '', message: '' });
|
||||
}, []);
|
||||
|
||||
const onOk = (payload:any) => {
|
||||
const { resolve } = promiseConfig.current;
|
||||
setMessage({
|
||||
publishFee: "",
|
||||
message: ""
|
||||
})
|
||||
hide();
|
||||
resolve(payload);
|
||||
};
|
||||
const onOk = useCallback(
|
||||
(payload: any) => {
|
||||
const { resolve } = promiseConfig.current || {};
|
||||
hide();
|
||||
resolve?.(payload);
|
||||
},
|
||||
[hide]
|
||||
);
|
||||
|
||||
const onCancel = () => {
|
||||
const { reject } = promiseConfig.current;
|
||||
hide();
|
||||
reject();
|
||||
setMessage({
|
||||
publishFee: "",
|
||||
message: ""
|
||||
})
|
||||
};
|
||||
return {
|
||||
show,
|
||||
onOk,
|
||||
onCancel,
|
||||
isShow: state.isShow,
|
||||
message
|
||||
};
|
||||
};
|
||||
const onCancel = useCallback(() => {
|
||||
const { reject } = promiseConfig.current || {};
|
||||
hide();
|
||||
reject?.();
|
||||
}, [hide]);
|
||||
|
||||
return useMemo(
|
||||
() => ({
|
||||
show,
|
||||
onOk,
|
||||
onCancel,
|
||||
isShow: state.isShow,
|
||||
message,
|
||||
}),
|
||||
[show, onOk, onCancel, state.isShow, message]
|
||||
);
|
||||
};
|
||||
|
Reference in New Issue
Block a user