hooks#useLoading TypeScript Examples
The following examples show how to use
hooks#useLoading.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: RefreshButton.tsx From gear-js with GNU General Public License v3.0 | 6 votes |
function RefreshButton() {
const { isLoading, triggerRefresh } = useLoading();
return (
<div className={styles.wrapper}>
<Button
text="Refresh"
color="secondary"
onClick={triggerRefresh}
className={styles.button}
disabled={isLoading}
/>
{isLoading && <Loader />}
</div>
);
}
Example #2
Source File: useReadState.ts From gear-js with GNU General Public License v3.0 | 6 votes |
// TODO: are payload and state AnyJson? to disable useEffect deps or to memoize payload? should we handle loading on useMetadata?
function useReadState(programId: ProgramId, metaBuffer: Buffer | undefined, payload?: AnyJson) {
const [state, setState] = useState<AnyJson>();
const { api } = useApi();
const { enableLoading, disableLoading, refresh } = useLoading();
useEffect(() => {
if (metaBuffer && payload) {
enableLoading();
api.programState
.read(programId, metaBuffer, payload)
.then((codecState) => codecState.toHuman())
.then(setState)
.finally(() => disableLoading());
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [metaBuffer, payload, refresh]);
return state;
}
Example #3
Source File: useMessage.ts From gear-js with GNU General Public License v3.0 | 5 votes |
function useMessage(destination: Hex, metadata: Metadata | undefined) {
const alert = useAlert();
const { api } = useApi();
const { account } = useAccount();
const { enableLoading, disableLoading } = useLoading();
const handleEventsStatus = (events: EventRecord[]) => {
events.forEach(({ event: { method } }) => {
if (method === 'DispatchMessageEnqueued') {
alert.success('Send message: Finalized');
// onSucessCallback();
} else if (method === 'ExtrinsicFailed') {
alert.error('Extrinsic failed');
}
});
};
const handleStatus = (result: ISubmittableResult) => {
const { status, events } = result;
const { isInBlock, isInvalid, isFinalized } = status;
if (isInvalid) {
alert.error('Transaction error. Status: isInvalid');
disableLoading();
} else if (isInBlock) {
alert.success('Send message: In block');
} else if (isFinalized) {
handleEventsStatus(events);
disableLoading();
}
};
// TODO: eslint
// eslint-disable-next-line consistent-return
const sendMessage = async (payload: AnyJson, value: string | number = 0) => {
if (account && metadata) {
enableLoading();
const { address, decodedAddress, meta } = account;
const gasLimit = await api.program.gasSpent.handle(decodedAddress, destination, payload, value, metadata);
const message = { destination, payload, gasLimit, value };
api.message.submit(message, metadata);
const { source } = meta;
const { signer } = await web3FromSource(source);
return api.message.signAndSend(address, { signer }, handleStatus);
}
};
return sendMessage;
}