- Take turns implementation for the todos

This commit is contained in:
Dejan
2024-10-29 00:05:15 +01:00
parent 7771f397b6
commit b9aa24a0c2
3 changed files with 46 additions and 13 deletions

View File

@ -2,7 +2,7 @@ import { useMutation, useQueryClient } from "react-query";
import firestore from "@react-native-firebase/firestore";
import {IToDo, REPEAT_TYPE} from "@/hooks/firebase/types/todoData";
import {addDays, addMonths, addWeeks, addYears, compareAsc, format, subDays} from "date-fns";
import {daysOfWeek} from "@/hooks/firebase/useCreateTodo";
import {daysOfWeek, resolveTodoAlternatingAssignees} from "@/hooks/firebase/useCreateTodo";
import {useAuthContext} from "@/contexts/AuthContext";
export const useUpdateTodo = () => {
@ -79,18 +79,24 @@ export const useUpdateTodo = () => {
}
console.log(todosToAddCycles);
let newDoc = firestore().collection("Todos").doc();
const newTodo = { ...todoData, id: newDoc.id, date: todoData.date, connectedTodoId: newDoc?.id };
batch.set(newDoc, newTodo);
let originalTodo = { ...todoData, id: newDoc.id, date: todoData.date, connectedTodoId: newDoc?.id };
originalTodo = resolveTodoAlternatingAssignees(todoData, originalTodo, 0);
batch.set(newDoc, originalTodo);
console.log(dates);
for (let i = 0; i < todosToAddCycles; i++) {
let index = 1;
for (let i = 0; i <= todosToAddCycles; i++) {
dates?.forEach((dateToAdd) => {
index++;
let newTodoDate = addWeeks(dateToAdd, i);
if (compareAsc(newTodoDate, originalTodo.date) !== 0) {
console.log("ENTER")
let docRef = firestore().collection("Todos").doc();
const newTodo = { ...todoData, id: docRef.id, date: newTodoDate, connectedTodoId: newDoc?.id };
let newTodo = { ...todoData, id: docRef.id, date: newTodoDate, connectedTodoId: newDoc?.id };
newTodo = resolveTodoAlternatingAssignees(todoData, newTodo, index);
batch.set(docRef, newTodo);
}
})
}
} else if (todoData.repeatType === REPEAT_TYPE.ONCE_A_MONTH) {
@ -100,9 +106,10 @@ export const useUpdateTodo = () => {
for (let i = 0; i < 12; i++) {
let date = todoData?.date;
const nextMonth = addMonths(date, i);
const newTodo = { ...todoData, date: nextMonth, connectedTodoId: firstTodo?.connectedTodoId };
let docRef = firestore().collection("Todos").doc();
let newTodo = { ...todoData, id: docRef.id, date: nextMonth, connectedTodoId: firstTodo?.connectedTodoId };
newTodo = resolveTodoAlternatingAssignees(todoData, newTodo, i);
batch.set(docRef, newTodo);
}
} else if (todoData.repeatType === REPEAT_TYPE.ONCE_A_YEAR) {
@ -112,9 +119,10 @@ export const useUpdateTodo = () => {
for (let i = 0; i < 5; i++) {
let date = todoData?.date;
const nextMonth = addYears(date, i);
const newTodo = { ...todoData, date: nextMonth, connectedTodoId: firstTodo?.connectedTodoId };
let docRef = firestore().collection("Todos").doc();
let newTodo = { ...todoData, id: docRef.id, date: nextMonth, connectedTodoId: firstTodo?.connectedTodoId };
newTodo = resolveTodoAlternatingAssignees(todoData, newTodo, i);
batch.set(docRef, newTodo);
}
}
@ -179,11 +187,14 @@ const updateRepeatDaysTodos = async (batch: any, todoData: IToDo, firstTodo: ITo
dates.push(newDate);
});
let index = 0;
for (let i = 0; i < todosToAddCycles; i++) {
dates?.forEach((dateToAdd) => {
index ++;
let newTodoDate = addWeeks(dateToAdd, i);
if (compareAsc(newTodoDate, firstTodo?.date) !== 0) {
const newTodo = {...todoData, date: newTodoDate};
let newTodo = {...todoData, date: newTodoDate};
newTodo = resolveTodoAlternatingAssignees(todoData, newTodo, index);
let docRef = firestore().collection("Todos").doc();
batch.set(docRef, newTodo);