diff --git a/apps/portal/src/utils/questions/useVote.ts b/apps/portal/src/utils/questions/useVote.ts index e71a6a62..3eb59cee 100644 --- a/apps/portal/src/utils/questions/useVote.ts +++ b/apps/portal/src/utils/questions/useVote.ts @@ -74,6 +74,10 @@ export const useQuestionVote = (id: string) => { create: 'questions.questions.createVote', deleteKey: 'questions.questions.deleteVote', idKey: 'questionId', + invalidateKeys: [ + 'questions.questions.getQuestionsByFilter', + 'questions.questions.getQuestionById', + ], query: 'questions.questions.getVote', update: 'questions.questions.updateVote', }); @@ -84,6 +88,10 @@ export const useAnswerVote = (id: string) => { create: 'questions.answers.createVote', deleteKey: 'questions.answers.deleteVote', idKey: 'answerId', + invalidateKeys: [ + 'questions.answers.getAnswers', + 'questions.answers.getAnswerById', + ], query: 'questions.answers.getVote', update: 'questions.answers.updateVote', }); @@ -94,6 +102,7 @@ export const useQuestionCommentVote = (id: string) => { create: 'questions.questions.comments.createVote', deleteKey: 'questions.questions.comments.deleteVote', idKey: 'questionCommentId', + invalidateKeys: ['questions.questions.comments.getQuestionComments'], query: 'questions.questions.comments.getVote', update: 'questions.questions.comments.updateVote', }); @@ -104,6 +113,7 @@ export const useAnswerCommentVote = (id: string) => { create: 'questions.answers.comments.createVote', deleteKey: 'questions.answers.comments.deleteVote', idKey: 'answerCommentId', + invalidateKeys: ['questions.answers.comments.getAnswerComments'], query: 'questions.answers.comments.getVote', update: 'questions.answers.comments.updateVote', }); @@ -113,6 +123,7 @@ type VoteProps = { create: MutationKey; deleteKey: MutationKey; idKey: string; + invalidateKeys: Array; query: VoteQueryKey; update: MutationKey; }; @@ -121,21 +132,16 @@ export const useVote = ( id: string, opts: VoteProps, ) => { - const { create, deleteKey, query, update, idKey } = opts; + const { create, deleteKey, query, update, idKey, invalidateKeys } = opts; const utils = trpc.useContext(); const onVoteUpdate = useCallback(() => { // TODO: Optimise query invalidation utils.invalidateQueries([query, { [idKey]: id } as any]); - utils.invalidateQueries(['questions.questions.getQuestionsByFilter']); - utils.invalidateQueries(['questions.questions.getQuestionById']); - utils.invalidateQueries(['questions.answers.getAnswers']); - utils.invalidateQueries(['questions.answers.getAnswerById']); - utils.invalidateQueries([ - 'questions.questions.comments.getQuestionComments', - ]); - utils.invalidateQueries(['questions.answers.comments.getAnswerComments']); - }, [id, idKey, utils, query]); + for (const invalidateKey of invalidateKeys) { + utils.invalidateQueries([invalidateKey]); + } + }, [id, idKey, utils, query, invalidateKeys]); const { data } = trpc.useQuery([ query,