From 1dcf0753ea874ba985bf2c41279b13fa2f8e9729 Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Mon, 22 Nov 2021 17:40:46 +0700 Subject: [PATCH] updating related on tags changed --- src/pages/node/[id].tsx | 2 +- src/utils/hooks/data/useGetNodeRelated.ts | 7 +++++-- src/utils/providers/NodeRelatedProvider.tsx | 17 +++++++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) 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 (