{"version":3,"file":"useGoal-BlPAmUKj.js","sources":["../../../app/javascript/services/GoalService/actions/updateGoal.ts","../../../app/javascript/services/GoalService/useGoal.ts"],"sourcesContent":["import { gql } from \"graphql-tag\";\nimport { ApolloClient } from \"@apollo/client/core\";\nimport GoalType from \"types/GoalType\";\nimport { pick } from \"lodash\";\nimport { transformCamelToSnake } from \"lib/stringFunctions\";\n\nexport const updateGoalQuery = gql`\n mutation UpdateGoalQuery(\n $id: Int!\n $goal: GoalInput!\n ) {\n updateResponse: update_goal(id: $id, object: $goal) {\n errors\n goal {\n ...GoalFragment\n }\n }\n }\n`;\n\ninterface UpdateGoalQueryType {\n updateResponse: {\n errors: string[];\n goal: GoalType;\n }\n}\n\nconst updateGoalFields = [\n \"description\",\n \"goal\",\n \"metric\",\n \"start_date\",\n \"end_date\",\n \"privacy_setting_id\",\n \"archived\",\n \"conditions\",\n];\n\nexport const updateGoal = ({\n client,\n goal,\n}: {\n client: ApolloClient;\n goal: GoalType;\n}): Promise => {\n return new Promise((resolve, reject) => {\n client\n .mutate({\n mutation: updateGoalQuery,\n variables: {\n id: goal.id,\n goal: pick(transformCamelToSnake(goal), updateGoalFields),\n },\n })\n .then((result) => {\n if(result.data.updateResponse.errors?.length > 0) {\n reject(result.data.updateResponse.errors.join(\", \"));\n } else if(result.data.updateResponse.goal?.id) {\n resolve(result.data.updateResponse.goal);\n }\n })\n .catch((e) => {\n reject(e.message);\n });\n });\n};\n","import { useCallback, useState } from \"react\";\nimport { toast } from \"sonner\";\nimport { updateGoal } from \"./actions/updateGoal\";\nimport useCurrentUserId from \"hooks/user/useCurrentUserId\";\nimport { useApolloClient } from \"lib/apollo/client\";\nimport { router } from \"@inertiajs/react\";\nimport GoalType from \"types/GoalType\";\nimport { insertGoal } from \"./actions/insertGoal\";\nimport { GoalSerializersGoalByline } from \"types/serializers\";\n\ninterface Props {\n goal: GoalSerializersGoalByline;\n}\n\n\n\nexport default function useGoal({ goal }: Props) {\n const client = useApolloClient();\n const currentUserId = useCurrentUserId();\n const [loading, setLoading] = useState(false)\n\n const catchErrorMessage = (error: string) => {\n toast.error(`Something went wrong: ${error}`);\n setLoading(false);\n return error;\n };\n\n const archive = useCallback(() => {\n // Noop unless the owner\n if (goal?.userId !== currentUserId) {\n return Promise.resolve(goal);\n }\n\n setLoading(true);\n return updateGoal({\n goal: {\n ...goal as unknown as GoalType,\n ...{ archived: true },\n },\n client,\n }).then(() => {\n router.reload({ only: [\"goal\"] });\n setLoading(false);\n }).catch(catchErrorMessage);\n }, [goal]);\n\n const save = (newGoal: GoalType):Promise => {\n setLoading(false);\n\n const action = newGoal.id ? updateGoal : insertGoal;\n\n const promise = action({ goal: newGoal, client })\n \n promise.then(() => {\n setLoading(false);\n }).catch(catchErrorMessage);\n\n return promise;\n }\n\n return {\n archive,\n goal,\n loading,\n save,\n };\n}\n"],"names":["updateGoalQuery","gql","updateGoalFields","updateGoal","client","goal","resolve","reject","pick","transformCamelToSnake","result","_a","_b","useGoal","useApolloClient","currentUserId","useCurrentUserId","loading","setLoading","useState","catchErrorMessage","error","toast","useCallback","router","newGoal","promise","insertGoal"],"mappings":"mSAMO,MAAMA,EAAkBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBzBC,EAAmB,CACvB,cACA,OACA,SACA,aACA,WACA,qBACA,WACA,YACF,EAEaC,EAAa,CAAC,CACzB,OAAAC,EACA,KAAAC,CACF,IAIS,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtCH,EACG,OAA4B,CAC3B,SAAUJ,EACV,UAAW,CACT,GAAIK,EAAK,GACT,KAAMG,EAAAA,KAAKC,EAAsBJ,CAAI,EAAGH,CAAgB,CAC1D,CAAA,CACD,EACA,KAAMQ,GAAW,WACbC,EAAAD,EAAO,KAAK,eAAe,SAA3B,YAAAC,EAAmC,QAAS,EAC7CJ,EAAOG,EAAO,KAAK,eAAe,OAAO,KAAK,IAAI,CAAC,GAC3CE,EAAAF,EAAO,KAAK,eAAe,OAA3B,MAAAE,EAAiC,IACjCN,EAAAI,EAAO,KAAK,eAAe,IAAI,CACzC,CACD,EACA,MAAO,GAAM,CACZH,EAAO,EAAE,OAAO,CAAA,CACjB,CAAA,CACJ,EChDqB,SAAAM,EAAQ,CAAE,KAAAR,GAAe,CAC/C,MAAMD,EAASU,IACTC,EAAgBC,IAChB,CAACC,EAASC,CAAU,EAAIC,WAAS,EAAK,EAEtCC,EAAqBC,IACnBC,EAAA,MAAM,yBAAyBD,CAAK,EAAE,EAC5CH,EAAW,EAAK,EACTG,GAoCF,MAAA,CACL,QAlCcE,EAAAA,YAAY,KAEtBlB,GAAA,YAAAA,EAAM,UAAWU,EACZ,QAAQ,QAAQV,CAAI,GAG7Ba,EAAW,EAAI,EACRf,EAAW,CAChB,KAAM,CACJ,GAAGE,EACE,SAAU,EACjB,EACA,OAAAD,CAAA,CACD,EAAE,KAAK,IAAM,CACZoB,EAAO,OAAO,CAAE,KAAM,CAAC,MAAM,CAAG,CAAA,EAChCN,EAAW,EAAK,CAAA,CACjB,EAAE,MAAME,CAAiB,GACzB,CAACf,CAAI,CAAC,EAkBP,KAAAA,EACA,QAAAY,EACA,KAlBYQ,GAAwC,CACpDP,EAAW,EAAK,EAIhB,MAAMQ,GAFSD,EAAQ,GAAKtB,EAAawB,GAElB,CAAE,KAAMF,EAAS,OAAArB,EAAQ,EAEhD,OAAAsB,EAAQ,KAAK,IAAM,CACjBR,EAAW,EAAK,CAAA,CACjB,EAAE,MAAME,CAAiB,EAEnBM,CAAA,CAOP,CAEJ"}