Files
TheGame/packages/web/lib/hooks/quests.ts
dan13ram 8517a26048 Upgrade dependencies (#486)
* upgraded storybook dependencies

* upgraded web dependencies

* updated timezone selector

* upgrade chakra in metamaps

* upgraded react-dnd in metamaps

* upgraded framer-motion

* fixed types in metamaps

* upgraded eslint

* upgraded lerna, husky and graphql

* upgraded node version

* removed metamaps package

* fixed all eslint issues

* ran yarn format to prettier format all files

* updated lint-staged & husky scripts

* add executable perms to pre-push scripts

* updated yarn.lock

* fixed eslint and moved chakra icons to ds

* fixed emotion errors

* removed extra useContext

* update yarn.lock

* upgraded more packages

* removed unnecessary .huskyrc.json

* lint fix
2021-05-01 12:46:48 +05:30

68 lines
1.6 KiB
TypeScript

import {
GetQuestsQueryVariables,
QuestFragmentFragment,
useGetQuestGuildsQuery,
useGetQuestsQuery,
} from 'graphql/autogen/types';
import { useCallback, useState } from 'react';
import { defaultQueryVariables } from '../../graphql/getQuests';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type QueryVariableSetter = (key: string, value: any) => void;
interface QuestFilter {
quests: QuestFragmentFragment[] | null;
fetching: boolean;
queryVariables: GetQuestsQueryVariables;
setQueryVariable: QueryVariableSetter;
aggregates: QuestAggregates;
error?: Error;
}
export interface QuestAggregates {
guilds: { id: string; name: string }[];
}
export const useQuestFilter = (): QuestFilter => {
const [queryVariables, setQueryVariables] = useState<GetQuestsQueryVariables>(
defaultQueryVariables,
);
const [resQuests] = useGetQuestsQuery({
variables: queryVariables,
});
const [resGuilds] = useGetQuestGuildsQuery();
const { fetching, data, error } = resQuests;
const quests = data?.quest || null;
const guilds =
resGuilds?.data?.quest_aggregate.nodes.map((q) => ({
id: q.guild_id,
name: q.guild.name,
})) || [];
const aggregates = {
guilds,
};
const setQueryVariable: QueryVariableSetter = useCallback(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(key: string, value: any) => {
setQueryVariables((oldQueryVariables) => ({
...oldQueryVariables,
[key]: value !== '' ? value : null,
}));
},
[],
);
return {
quests,
aggregates,
fetching,
error,
queryVariables,
setQueryVariable,
};
};