mirror of
https://github.com/urosran/cally.git
synced 2025-07-09 22:57:16 +00:00
- Added Daily repeat type for the todos and implemented creating and updating this kinds of todos
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import { createContext, FC, ReactNode, useContext, useState } from "react";
|
||||
import {IToDo} from "@/hooks/firebase/types/todoData";
|
||||
import {IToDo, REPEAT_TYPE} from "@/hooks/firebase/types/todoData";
|
||||
import {useGetTodos} from "@/hooks/firebase/useGetTodos";
|
||||
import {useCreateTodo} from "@/hooks/firebase/useCreateTodo";
|
||||
import {useUpdateTodo} from "@/hooks/firebase/useUpdateTodo";
|
||||
@ -83,10 +83,11 @@ const initialTodosList = [
|
||||
];
|
||||
|
||||
export const repeatOptions = [
|
||||
{ label: "None", value: "None" },
|
||||
{ label: "Every week", value: "Every week" },
|
||||
{ label: "Once a month", value: "Once a month" },
|
||||
{ label: "Once a year", value: "Once a year" },
|
||||
{ label: REPEAT_TYPE.NONE, value: REPEAT_TYPE.NONE },
|
||||
{ label: REPEAT_TYPE.DAILY, value: REPEAT_TYPE.DAILY},
|
||||
{ label: REPEAT_TYPE.EVERY_WEEK, value: REPEAT_TYPE.EVERY_WEEK },
|
||||
{ label: REPEAT_TYPE.ONCE_A_MONTH, value: REPEAT_TYPE.ONCE_A_MONTH },
|
||||
{ label: REPEAT_TYPE.ONCE_A_YEAR, value: REPEAT_TYPE.ONCE_A_YEAR },
|
||||
];
|
||||
|
||||
interface IToDosContext {
|
||||
|
@ -26,6 +26,7 @@ export const DAYS_OF_WEEK_ENUM = {
|
||||
|
||||
export const REPEAT_TYPE = {
|
||||
NONE: "None",
|
||||
DAILY: "Daily",
|
||||
EVERY_WEEK: "Every week",
|
||||
ONCE_A_MONTH: "Once a month",
|
||||
ONCE_A_YEAR: "Once a year"
|
||||
|
@ -40,7 +40,19 @@ export const useCreateTodo = () => {
|
||||
|
||||
const batch = firestore().batch();
|
||||
|
||||
if (todoData.repeatType === REPEAT_TYPE.EVERY_WEEK) {
|
||||
if (todoData.repeatType === REPEAT_TYPE.DAILY) {
|
||||
// for the next 52 weeks
|
||||
for (let i = 1; i < 52; i++) {
|
||||
let date = originalTodo.date;
|
||||
const nextWeek = addWeeks(date, i);
|
||||
|
||||
let docRef = firestore().collection("Todos").doc();
|
||||
let newTodo = { ...originalTodo, id: docRef.id, date: nextWeek, connectedTodoId: newDoc.id };
|
||||
newTodo = resolveTodoAlternatingAssignees(todoData, newTodo, i);
|
||||
|
||||
batch.set(docRef, newTodo);
|
||||
}
|
||||
} else if (todoData.repeatType === REPEAT_TYPE.EVERY_WEEK) {
|
||||
|
||||
let date = originalTodo.date;
|
||||
let repeatDays = originalTodo.repeatDays;
|
||||
|
@ -51,6 +51,18 @@ export const useUpdateTodo = () => {
|
||||
const newDoc = firestore().collection('Todos').doc();
|
||||
let originalTodo = {...todoData, id: newDoc.id, familyId: profileData?.familyId, creatorId: currentUser?.uid}
|
||||
batch.set(newDoc, originalTodo);
|
||||
} else if (todoData.repeatType === REPEAT_TYPE.DAILY) {
|
||||
console.log("DAILY");
|
||||
// for the next 52 weeks
|
||||
for (let i = 0; i < 52; i++) {
|
||||
let date = todoData?.date;
|
||||
const nextWeek = addWeeks(date, i);
|
||||
|
||||
let docRef = firestore().collection("Todos").doc();
|
||||
let newTodo = { ...todoData, id: docRef.id, date: nextWeek, connectedTodoId: firstTodo?.connectedTodoId };
|
||||
newTodo = resolveTodoAlternatingAssignees(todoData, newTodo, i);
|
||||
batch.set(docRef, newTodo);
|
||||
}
|
||||
} else if (todoData.repeatType === REPEAT_TYPE.EVERY_WEEK) {
|
||||
|
||||
console.log("EVERY WEEK");
|
||||
|
Reference in New Issue
Block a user