Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3374 | Rev 3432 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3416 stevensc 1
import React from "react";
2
import { useNavigate, useParams } from "react-router-dom";
3
import { useDispatch } from "react-redux";
3270 stevensc 4
 
3416 stevensc 5
import { useFetch, useGoals } from "@hooks";
6
import { editGoal } from "@services/habits/goals";
7
import { addNotification } from "@store/notification/notification.actions";
3270 stevensc 8
 
3416 stevensc 9
import PageHeader from "@components/common/page-header";
10
import GoalForm from "@components/habits/goals/goal-form";
11
import LoadingWrapper from "@components/common/loading-wrapper";
3270 stevensc 12
 
13
export default function EditGoalPage() {
3416 stevensc 14
  const { id } = useParams();
15
  const navigate = useNavigate();
16
  const dispatch = useDispatch();
3270 stevensc 17
 
3416 stevensc 18
  const { addUrl, updateGoal, getGoalById } = useGoals();
19
  const currentGoal = getGoalById(id);
3270 stevensc 20
 
3416 stevensc 21
  const { data: goalValues, loading } = useFetch(
3270 stevensc 22
    currentGoal?.actions.link_edit
3416 stevensc 23
  );
24
  const { data: habits } = useFetch(addUrl);
3270 stevensc 25
  const habitsValues = Object.entries(habits).map(([value, name]) => ({
26
    value,
3416 stevensc 27
    name,
28
  }));
3270 stevensc 29
 
30
  const onSubmit = async (goal) => {
31
    try {
3416 stevensc 32
      const response = await editGoal(currentGoal?.actions.link_edit, goal);
33
      updateGoal(response.data);
34
      dispatch(addNotification({ style: "success", msg: response.message }));
35
      navigate("/habits/goals");
3270 stevensc 36
    } catch (error) {
3416 stevensc 37
      dispatch(addNotification({ style: "danger", msg: error.message }));
3270 stevensc 38
    }
3416 stevensc 39
  };
3270 stevensc 40
 
41
  return (
42
    <>
3416 stevensc 43
      <PageHeader title="Editar Meta" goBack />
44
      <LoadingWrapper loading={loading}>
3270 stevensc 45
        <GoalForm
46
          onSubmit={onSubmit}
47
          habits={habitsValues}
48
          values={{
49
            ...goalValues,
3416 stevensc 50
            start_date: new Date(goalValues.start_date + "T00:00:00"),
51
            end_date: new Date(goalValues.end_date + "T00:00:00"),
3270 stevensc 52
          }}
53
        />
54
      </LoadingWrapper>
55
    </>
3416 stevensc 56
  );
3270 stevensc 57
}