diff options
author | Adrián Oliva <adrian.oliva@cimat.mx> | 2023-05-27 14:16:12 -0600 |
---|---|---|
committer | Adrián Oliva <adrian.oliva@cimat.mx> | 2023-05-27 14:16:12 -0600 |
commit | e04bff29bf8146bb709a76fc187e0683065e4f03 (patch) | |
tree | acb7a81dd4d362f3bdac09e0d3e5723d413a5c67 /src | |
parent | 5fc5f300463f606c948ec10fc5554e3c60a8ec36 (diff) | |
download | ToDo-App-FE-e04bff29bf8146bb709a76fc187e0683065e4f03.tar.gz ToDo-App-FE-e04bff29bf8146bb709a76fc187e0683065e4f03.zip |
List of to dos is initialized on database.
At the beginning, the app will fetch the to dos from the back end and
write all of them on Redux.
Diffstat (limited to '')
-rw-r--r-- | src/App.jsx | 25 | ||||
-rw-r--r-- | src/api/axios_methods.js | 8 | ||||
-rw-r--r-- | src/features/todo/reducer.js | 26 |
3 files changed, 55 insertions, 4 deletions
diff --git a/src/App.jsx b/src/App.jsx index a77c0d2..8397a9f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,7 +3,32 @@ import { Search } from "./ToDo-UI/Search"; import { NewToDo } from "./ToDo-UI/NewToDo"; import { ListToDos } from "./ToDo-UI/ListToDo"; +import { useDispatch } from "react-redux"; +import { set_todo, refresh_filtered_todos } from "./features/todo/reducer"; + +import { get_todos_function } from "./api/axios_methods"; + function App() { + const get_todos = get_todos_function(); + + const dispatch = useDispatch(); + function handler(data) { + data.map((todo) => { + dispatch( + set_todo({ + id: todo.id, + text: todo.text, + due_date: todo.dueDate.substring(0, 16), + done: todo.done, + priority: todo.priority, + creation_date: todo.creationDate, + }) + ); + }); + dispatch(refresh_filtered_todos()); + } + get_todos(handler); + return ( <div> <Search /> diff --git a/src/api/axios_methods.js b/src/api/axios_methods.js index 2e2329f..b9e40dc 100644 --- a/src/api/axios_methods.js +++ b/src/api/axios_methods.js @@ -1,13 +1,13 @@ import api from "./axios_config"; // findAll() on Back End. -export function get_todos_function(hook) { +export function get_todos_function() { // Get a list of all to dos. // GET "/v1/todos" - return async () => { + return async (handler) => { try { - const response = await api.get("/v1/todos"); - hook(response.data); + const response = await api.get("/todos"); + handler(response.data); } catch (err) { console.log(err); } diff --git a/src/features/todo/reducer.js b/src/features/todo/reducer.js index 960ab97..d62e599 100644 --- a/src/features/todo/reducer.js +++ b/src/features/todo/reducer.js @@ -31,6 +31,31 @@ export const todo_slice = createSlice({ ]; }, + set_todo: (state, action) => { + let selected_todo = state.todos.findIndex( + (x) => x.id == action.payload.id + ); + if (selected_todo == -1) { + state.todos = [ + ...state.todos, + { + id: action.payload.id, + text: action.payload.text, + due_date: action.payload.due_date, + done: action.payload.done, + priority: action.payload.priority, + creation_date: action.payload.creation_date, + }, + ]; + state.last_id++; + } else { + state.todos[selected_todo].text = action.payload.text; + state.todos[selected_todo].due_date = action.payload.due_date; + state.todos[selected_todo].done = action.payload.done; + state.todos[selected_todo].priority = action.payload.priority; + } + }, + change_done: (state, action) => { let selected_todo = state.todos.findIndex( (x) => x.id == action.payload.id @@ -173,6 +198,7 @@ export const todo_slice = createSlice({ export const { add_todo, + set_todo, change_done, remove_todo, edit_todo, |