diff --git a/backend/src/routes.ts b/backend/src/routes.ts index 233f88f..3dda052 100644 --- a/backend/src/routes.ts +++ b/backend/src/routes.ts @@ -68,7 +68,19 @@ const endpoints = new Router() serverSideUser.updatedAt = new Date(); } - ctx.response.body = serverSideUser; + await users.updateOne({ id: userId }, { + $set: { + tasks: serverSideUser.tasks, + categories: serverSideUser.categories, + updatedAt: serverSideUser.updatedAt + } + }) + + ctx.response.body = { + tasks: serverSideUser.tasks, + categories: serverSideUser.categories, + updatedAt: serverSideUser.updatedAt, + }; }) const routes = new Router() diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js index 942e970..f50a893 100644 --- a/frontend/src/api/index.js +++ b/frontend/src/api/index.js @@ -29,7 +29,11 @@ class Api { }, }), }); - console.log(await response.json()); + + const syncedData = await response.json(); + store.commit('setTasks', syncedData.tasks); + store.commit('setCategories', syncedData.categories); + store.commit('updated'); } } diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js index c724c7e..14a10ad 100644 --- a/frontend/src/store/index.js +++ b/frontend/src/store/index.js @@ -16,11 +16,13 @@ export default createStore({ }, mutations: { addCategory(state, category) { + this.commit('updated'); if (category && !state.categories.includes(category)) { state.categories = [...state.categories, category]; } }, removeCategory(state, category) { + this.commit('updated'); state.categories = state.categories.filter((element) => element !== category); state.tasks = state.tasks.map((task) => { const newTask = task; @@ -29,6 +31,7 @@ export default createStore({ }); }, assignCategory(state, { name, category }) { + this.commit('updated'); state.tasks = state.tasks.map((task) => { const newTask = task; if (newTask.name === name) { @@ -37,8 +40,12 @@ export default createStore({ return newTask; }); }, + setCategories(state, categories) { + state.categories = categories; + }, addTask(state, name) { + this.commit('updated'); if (name) { const task = { name, @@ -51,12 +58,15 @@ export default createStore({ } }, removeTask(state, name) { + this.commit('updated'); state.tasks = state.tasks.filter((task) => task.name !== name); }, removeAllTasks(state) { + this.commit('updated'); state.tasks = []; }, startTask(state, name) { + this.commit('updated'); state.tasks = state.tasks.map((task) => { const newTask = task; if (newTask.name === name) { @@ -71,6 +81,7 @@ export default createStore({ }); }, stopTask(state, name) { + this.commit('updated'); state.tasks = state.tasks.map((task) => { const newTask = task; if (newTask.name === name) { @@ -82,6 +93,7 @@ export default createStore({ }); }, resetTasks(state) { + this.commit('updated'); state.tasks = state.tasks.map((task) => { const newTask = task; newTask.running = false; @@ -91,13 +103,16 @@ export default createStore({ }); state.lastReset = new Date(); }, + setTasks(state, tasks) { + state.tasks = tasks; + }, setMidnightReset(state, value) { state.midnightReset = !!value; }, - updated(state) { - state.updatedAt = new Date(); + updated(state, at) { + state.updatedAt = at ?? new Date(); }, }, plugins: [vuexLocal.plugin],