mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-25 12:56:41 +07:00
99 use swr (#100)
* 99: made node use SWR * 99: fixed comments for SWR node * 99: added error toast to useNodeFormFormik.ts
This commit is contained in:
parent
832386d39a
commit
c2d1c2bfc9
35 changed files with 366 additions and 413 deletions
|
@ -1,19 +1,29 @@
|
|||
import { INode } from '~/redux/types';
|
||||
import useSWR from 'swr';
|
||||
import { AxiosResponse } from 'axios';
|
||||
import { ApiGetNodeResponse } from '~/redux/node/types';
|
||||
import { API } from '~/constants/api';
|
||||
import { api } from '~/utils/api';
|
||||
import { useOnNodeSeen } from '~/utils/hooks/node/useOnNodeSeen';
|
||||
import { apiGetNode } from '~/redux/node/api';
|
||||
import { useCallback } from 'react';
|
||||
import { INode } from '~/redux/types';
|
||||
|
||||
export const useGetNode = (id?: INode['id']) => {
|
||||
const { data, isValidating: isLoading } = useSWR<AxiosResponse<ApiGetNodeResponse>>(
|
||||
API.NODE.GET_NODE(id || ''),
|
||||
api.get
|
||||
export const useGetNode = (id: number) => {
|
||||
const { data, isValidating, mutate } = useSWR<ApiGetNodeResponse>(API.NODE.GET_NODE(id), () =>
|
||||
apiGetNode({ id })
|
||||
);
|
||||
|
||||
if (!id) {
|
||||
return { node: undefined, isLoading: false };
|
||||
}
|
||||
const update = useCallback(
|
||||
async (node?: Partial<INode>) => {
|
||||
if (!data?.node) {
|
||||
await mutate();
|
||||
return;
|
||||
}
|
||||
|
||||
return { node: data?.data.node, isLoading };
|
||||
await mutate({ node: { ...data.node, ...node } }, true);
|
||||
},
|
||||
[data, mutate]
|
||||
);
|
||||
|
||||
useOnNodeSeen(data?.node);
|
||||
|
||||
return { node: data?.node, isLoading: isValidating && !data, update };
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue