Working synchronization

This commit is contained in:
Анатолий Копыл
2022-05-09 21:43:55 +03:00
parent 7458750053
commit 4023b3fec8
3 changed files with 35 additions and 4 deletions

View File

@@ -68,7 +68,19 @@ const endpoints = new Router()
serverSideUser.updatedAt = new Date(); 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() const routes = new Router()

View File

@@ -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');
} }
} }

View File

@@ -16,11 +16,13 @@ export default createStore({
}, },
mutations: { mutations: {
addCategory(state, category) { addCategory(state, category) {
this.commit('updated');
if (category && !state.categories.includes(category)) { if (category && !state.categories.includes(category)) {
state.categories = [...state.categories, category]; state.categories = [...state.categories, category];
} }
}, },
removeCategory(state, category) { removeCategory(state, category) {
this.commit('updated');
state.categories = state.categories.filter((element) => element !== category); state.categories = state.categories.filter((element) => element !== category);
state.tasks = state.tasks.map((task) => { state.tasks = state.tasks.map((task) => {
const newTask = task; const newTask = task;
@@ -29,6 +31,7 @@ export default createStore({
}); });
}, },
assignCategory(state, { name, category }) { assignCategory(state, { name, category }) {
this.commit('updated');
state.tasks = state.tasks.map((task) => { state.tasks = state.tasks.map((task) => {
const newTask = task; const newTask = task;
if (newTask.name === name) { if (newTask.name === name) {
@@ -37,8 +40,12 @@ export default createStore({
return newTask; return newTask;
}); });
}, },
setCategories(state, categories) {
state.categories = categories;
},
addTask(state, name) { addTask(state, name) {
this.commit('updated');
if (name) { if (name) {
const task = { const task = {
name, name,
@@ -51,12 +58,15 @@ export default createStore({
} }
}, },
removeTask(state, name) { removeTask(state, name) {
this.commit('updated');
state.tasks = state.tasks.filter((task) => task.name !== name); state.tasks = state.tasks.filter((task) => task.name !== name);
}, },
removeAllTasks(state) { removeAllTasks(state) {
this.commit('updated');
state.tasks = []; state.tasks = [];
}, },
startTask(state, name) { startTask(state, name) {
this.commit('updated');
state.tasks = state.tasks.map((task) => { state.tasks = state.tasks.map((task) => {
const newTask = task; const newTask = task;
if (newTask.name === name) { if (newTask.name === name) {
@@ -71,6 +81,7 @@ export default createStore({
}); });
}, },
stopTask(state, name) { stopTask(state, name) {
this.commit('updated');
state.tasks = state.tasks.map((task) => { state.tasks = state.tasks.map((task) => {
const newTask = task; const newTask = task;
if (newTask.name === name) { if (newTask.name === name) {
@@ -82,6 +93,7 @@ export default createStore({
}); });
}, },
resetTasks(state) { resetTasks(state) {
this.commit('updated');
state.tasks = state.tasks.map((task) => { state.tasks = state.tasks.map((task) => {
const newTask = task; const newTask = task;
newTask.running = false; newTask.running = false;
@@ -91,13 +103,16 @@ export default createStore({
}); });
state.lastReset = new Date(); state.lastReset = new Date();
}, },
setTasks(state, tasks) {
state.tasks = tasks;
},
setMidnightReset(state, value) { setMidnightReset(state, value) {
state.midnightReset = !!value; state.midnightReset = !!value;
}, },
updated(state) { updated(state, at) {
state.updatedAt = new Date(); state.updatedAt = at ?? new Date();
}, },
}, },
plugins: [vuexLocal.plugin], plugins: [vuexLocal.plugin],