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