diff --git a/src/pages/node/[id].tsx b/src/pages/node/[id].tsx index 4b2d197a..6d4067b5 100644 --- a/src/pages/node/[id].tsx +++ b/src/pages/node/[id].tsx @@ -41,7 +41,7 @@ const NodePage: FC = ({ return ( - + { - const { data, isValidating: isLoading } = useSWR>( + const { data, isValidating: isLoading, mutate } = useSWR>( API.NODE.RELATED(id), api.get ); - return { related: data?.data.related, isLoading }; + const refresh = useCallback(() => mutate(data, true), [data, mutate]); + + return { related: data?.data.related, isLoading, refresh }; }; diff --git a/src/utils/providers/NodeRelatedProvider.tsx b/src/utils/providers/NodeRelatedProvider.tsx index b2e55a56..5211b2a1 100644 --- a/src/utils/providers/NodeRelatedProvider.tsx +++ b/src/utils/providers/NodeRelatedProvider.tsx @@ -1,11 +1,12 @@ -import React, { FC } from 'react'; -import { INode } from '~/redux/types'; +import React, { FC, useEffect } from 'react'; +import { INode, ITag } from '~/redux/types'; import { NodeRelatedContextProvider } from '~/utils/context/NodeRelatedContextProvider'; import { INodeRelated } from '~/redux/node/types'; import { useGetNodeRelated } from '~/utils/hooks/data/useGetNodeRelated'; interface NodeRelatedProviderProps { id: INode['id']; + tags?: ITag[]; } const defaultValue: INodeRelated = { @@ -13,8 +14,16 @@ const defaultValue: INodeRelated = { similar: [], }; -const NodeRelatedProvider: FC = ({ id, children }) => { - const { related, isLoading } = useGetNodeRelated(id); +const NodeRelatedProvider: FC = ({ id, children, tags }) => { + const { related, isLoading, refresh } = useGetNodeRelated(id); + + useEffect( + () => { + refresh(); + }, + // eslint-disable-next-line + [tags] + ); return (