projects/deliberation_at_scale/packages/frontend/hooks/useDemographicsSurvey.ts (31 lines of code) (raw):

import { useUpdateDemographicsMutation } from "@/generated/graphql"; import { useCallback, useState } from "react"; export interface UseDemographicsSurveyOptions { userId: string; } export default function useDemographicsSurvey(options: UseDemographicsSurveyOptions) { const { userId } = options ?? {}; const [newDemographics, setNewDemographics] = useState({}); const [updateDemographicsMutation] = useUpdateDemographicsMutation(); const saveDemographics = useCallback(() => { updateDemographicsMutation({ variables: { userId, demographics: newDemographics, } }); }, [newDemographics, updateDemographicsMutation, userId]); const expandDemographics = useCallback((key: string, value: string) => { setNewDemographics((demographics) => { return { ...demographics, [key]: value, }; }); }, [setNewDemographics]); return { newDemographics, expandDemographics, saveDemographics, }; }