From cbf99fad18af972c2cb15d72980114f308341104 Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Sat, 15 Feb 2025 00:04:59 -0500 Subject: [PATCH 1/8] Fix https://github.com/donetick/donetick/issues/128 --- src/views/components/AddTaskModal.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/views/components/AddTaskModal.jsx b/src/views/components/AddTaskModal.jsx index 7f856fe..30bbba9 100644 --- a/src/views/components/AddTaskModal.jsx +++ b/src/views/components/AddTaskModal.jsx @@ -436,6 +436,7 @@ const TaskInput = ({ autoFocus, onChoreUpdate }) => { priority: priority || 0, status: 0, frequencyType: 'once', + notificationMetadata: {}, } if (frequency) { From a98f9c698b838d2b13af05f53c6e6ef8410f9392 Mon Sep 17 00:00:00 2001 From: Ulrik Kristensen Date: Mon, 3 Mar 2025 13:20:08 +0100 Subject: [PATCH 2/8] fixes randomState to have 8 chars instead of 6 --- src/views/Authorization/LoginView.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/Authorization/LoginView.jsx b/src/views/Authorization/LoginView.jsx index 476f468..bd93055 100644 --- a/src/views/Authorization/LoginView.jsx +++ b/src/views/Authorization/LoginView.jsx @@ -115,7 +115,7 @@ const LoginView = () => { Navigate('/forgot-password') } const generateRandomState = () => { - const randomState = Math.random().toString(36).substring(7) + const randomState = Math.random().toString(32).substring(5) localStorage.setItem('authState', randomState) return randomState From 9dc8fe77bcf3888e54978c1310fbc602118cacba Mon Sep 17 00:00:00 2001 From: Mohamad Tarbin Date: Wed, 5 Mar 2025 19:49:00 -0500 Subject: [PATCH 3/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e24c032..b235431 100644 --- a/README.md +++ b/README.md @@ -49,4 +49,4 @@ While maintaining Donetick's commitment to open source, this hosted option will ## License -This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details. I might consider changing it later to something else +This project is licensed under the AGPLv3 License. See the [LICENSE](LICENSE) file for more details. I might consider changing it later to something else From 9d8aec1aa648e3a071a279a1b89f855cc428fc93 Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Wed, 5 Mar 2025 21:06:22 -0500 Subject: [PATCH 4/8] Fix localStorage retrieval for selectedChoreFilter in MyChores component --- src/views/Chores/MyChores.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/Chores/MyChores.jsx b/src/views/Chores/MyChores.jsx index 94c2fd7..780d476 100644 --- a/src/views/Chores/MyChores.jsx +++ b/src/views/Chores/MyChores.jsx @@ -74,7 +74,7 @@ const MyChores = () => { JSON.parse(localStorage.getItem('openChoreSections')) || {}, ) const [selectedChoreFilter, setSelectedChoreFilter] = useState( - JSON.parse(localStorage.getItem('selectedChoreFilter')) || 'anyone', + localStorage.getItem('selectedChoreFilter') || 'anyone', ) const [searchTerm, setSearchTerm] = useState('') const [performers, setPerformers] = useState([]) From de08c6c5b161a37f5f37ff83f3684586cccf6fa9 Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Wed, 5 Mar 2025 21:40:47 -0500 Subject: [PATCH 5/8] Enhance ChoresGrouper to include chore filters and update localStorage handling for selectedChoreFilter --- src/views/Chores/MyChores.jsx | 38 +++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/src/views/Chores/MyChores.jsx b/src/views/Chores/MyChores.jsx index 780d476..7373b25 100644 --- a/src/views/Chores/MyChores.jsx +++ b/src/views/Chores/MyChores.jsx @@ -139,7 +139,11 @@ const MyChores = () => { const sortedChores = choresData.res.sort(ChoreSorter) setChores(sortedChores) setFilteredChores(sortedChores) - const sections = ChoresGrouper(selectedChoreSection, sortedChores) + const sections = ChoresGrouper( + selectedChoreSection, + sortedChores, + ChoreFilters(userProfile)[selectedChoreFilter], + ) setChoreSections(sections) if (localStorage.getItem('openChoreSections') === null) { setSelectedChoreSectionWithCache(selectedChoreSection) @@ -178,7 +182,7 @@ const MyChores = () => { } const setSelectedChoreFilterWithCache = value => { setSelectedChoreFilter(value) - localStorage.setItem('selectedChoreFilter', JSON.stringify(value)) + localStorage.setItem('selectedChoreFilter', value) } const updateChores = newChore => { @@ -186,7 +190,13 @@ const MyChores = () => { newChores.push(newChore) setChores(newChores) setFilteredChores(newChores) - setChoreSections(ChoresGrouper(selectedChoreSection, newChores)) + setChoreSections( + ChoresGrouper( + selectedChoreSection, + newChores, + ChoreFilters(userProfile)[selectedChoreFilter], + ), + ) setSearchFilter('All') } const handleMenuOutsideClick = event => { @@ -262,7 +272,13 @@ const MyChores = () => { } setChores(newChores) setFilteredChores(newFilteredChores) - setChoreSections(ChoresGrouper(selectedChoreSection, newChores)) + setChoreSections( + ChoresGrouper( + selectedChoreSection, + newChores, + ChoreFilters(userProfile)[selectedChoreFilter], + ), + ) switch (event) { case 'completed': @@ -293,7 +309,13 @@ const MyChores = () => { ) setChores(newChores) setFilteredChores(newFilteredChores) - setChoreSections(ChoresGrouper(selectedChoreSection, newChores)) + setChoreSections( + ChoresGrouper( + selectedChoreSection, + newChores, + ChoreFilters(userProfile)[selectedChoreFilter], + ), + ) } const searchOptions = { @@ -449,7 +471,11 @@ const MyChores = () => { ) }} onItemSelect={selected => { - const section = ChoresGrouper(selected.value, chores) + const section = ChoresGrouper( + selected.value, + chores, + ChoreFilters(userProfile)[selectedChoreFilter], + ) setChoreSections(section) setSelectedChoreSectionWithCache(selected.value) setOpenChoreSectionsWithCache( From 08de84a889d06c608f888ef9cda6775543e9703b Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Wed, 5 Mar 2025 22:04:28 -0500 Subject: [PATCH 6/8] Fix optional chaining for userProfile in chore filters and adjust data destructuring in MyChores component --- src/utils/Chores.jsx | 4 ++-- src/views/Chores/MyChores.jsx | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/utils/Chores.jsx b/src/utils/Chores.jsx index 729a9ac..b85ad4b 100644 --- a/src/utils/Chores.jsx +++ b/src/utils/Chores.jsx @@ -179,9 +179,9 @@ export const notInCompletionWindow = chore => { export const ChoreFilters = userProfile => ({ anyone: () => true, assigned_to_me: chore => { - return chore.assignedTo && chore.assignedTo === userProfile.id + return chore.assignedTo && chore.assignedTo === userProfile?.id }, assigned_to_others: chore => { - return chore.assignedTo && chore.assignedTo !== userProfile.id + return chore.assignedTo && chore.assignedTo !== userProfile?.id }, }) diff --git a/src/views/Chores/MyChores.jsx b/src/views/Chores/MyChores.jsx index 7373b25..ae4497e 100644 --- a/src/views/Chores/MyChores.jsx +++ b/src/views/Chores/MyChores.jsx @@ -98,13 +98,12 @@ const MyChores = () => { throw new Error(userProfileResponse.statusText) } Promise.all([ + userProfileResponse.json(), choresResponse.json(), usersResponse.json(), - userProfileResponse.json(), ]).then(data => { - const [choresData, usersData, userProfileData] = data + const [userProfileData, choresData, usersData] = data setUserProfile(userProfileData.res) - choresData.res.sort(ChoreSorter) setChores(choresData.res) setFilteredChores(choresData.res) setPerformers(usersData.res) From e56893fd64fbbad6fffbe0d1a736b3c02e90a956 Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Mon, 17 Mar 2025 01:02:52 -0400 Subject: [PATCH 7/8] Add frequency and notification metadata to task input; update NavBar styles for improved layout --- src/views/components/AddTaskModal.jsx | 2 ++ src/views/components/NavBar.jsx | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/views/components/AddTaskModal.jsx b/src/views/components/AddTaskModal.jsx index 99cfa68..9621094 100644 --- a/src/views/components/AddTaskModal.jsx +++ b/src/views/components/AddTaskModal.jsx @@ -436,6 +436,8 @@ const TaskInput = ({ autoFocus, onChoreUpdate }) => { priority: priority || 0, status: 0, frequencyType: 'once', + frequencyMetadata: {}, + notificationMetadata: {}, } if (frequency) { diff --git a/src/views/components/NavBar.jsx b/src/views/components/NavBar.jsx index 86f8e9c..40fa01d 100644 --- a/src/views/components/NavBar.jsx +++ b/src/views/components/NavBar.jsx @@ -105,12 +105,12 @@ const NavBar = () => { } return ( -