From 146e453ff97006cb372da72f2ad5754d0c2c9137 Mon Sep 17 00:00:00 2001 From: Jose Nunes Date: Mon, 6 Jul 2020 10:23:30 +0100 Subject: [PATCH 01/11] chore: upgrade react-query wdy-22 --- frontend/package-lock.json | 20 +++++--------- frontend/package.json | 4 +-- frontend/src/config/queryConfig.ts | 26 +++++++++++-------- .../day/Board/BoardHeader/BoardHeader.tsx | 3 ++- frontend/src/features/day/api/useDay.ts | 4 +-- .../src/features/day/api/useDeleteTask.ts | 6 ++--- frontend/src/features/day/api/useMoveAll.ts | 4 +-- frontend/src/features/day/api/useMoveTask.ts | 6 ++--- .../src/features/day/api/useScheduleTask.ts | 4 +-- .../src/features/day/api/useUpdateTask.ts | 6 ++--- .../features/daysNav/DaysList/DaysList.tsx | 4 +-- frontend/src/features/daysNav/api/useDays.ts | 1 + 12 files changed, 44 insertions(+), 44 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 39bdee4..d1b8f19 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -3175,11 +3175,6 @@ } } }, - "@scarf/scarf": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.0.6.tgz", - "integrity": "sha512-y4+DuXrAd1W5UIY3zTcsosi/1GyYT8k5jGnZ/wG7UUHVrU+MHlH4Mp87KK2/lvMW4+H7HVcdB+aJhqywgXksjA==" - }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -23036,18 +23031,17 @@ } }, "react-query": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/react-query/-/react-query-1.5.5.tgz", - "integrity": "sha512-6pUh6/qSf3e8HNMJFMIfhqluE3WZ8F/ugZGrNZ9YT5zvftDlXNj5gdY9ZUK0rldkBqxUHqmiNAePcaApHCZMFw==", + "version": "2.4.13", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-2.4.13.tgz", + "integrity": "sha512-PFUmChSy3kph+r0c+oz7HgBiKi98bb1D8FeeBZ1qiuuGXUJYhWCvOST+lOgwtLiBbT1wdoNjObFC35jpHbSvUQ==", "requires": { - "@scarf/scarf": "^1.0.0", - "ts-toolbelt": "^6.4.2" + "ts-toolbelt": "^6.9.4" } }, "react-query-devtools": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/react-query-devtools/-/react-query-devtools-1.2.0.tgz", - "integrity": "sha512-+5QtShHHItxwvmdrsSGVZSQb3C+O7pmaLvgXf6JjtK+ocVmIlpR0aaBlq+Unb30j+w4ZkytT6Njf9/XWk638yQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-query-devtools/-/react-query-devtools-2.2.1.tgz", + "integrity": "sha512-fq8hSakJutrZwhJlnHS/LkDJ2F04Y/oaxP9+QqddUj1QjLYJBMArPVvxQdJop7I8/9rb2bbagI1sb72gCLRktQ==", "requires": { "match-sorter": "^4.1.0" } diff --git a/frontend/package.json b/frontend/package.json index 03d97aa..995ee22 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -45,8 +45,8 @@ "react-detect-offline": "^2.4.0", "react-dom": "^16.13.1", "react-hook-form": "^5.7.2", - "react-query": "1.5.5", - "react-query-devtools": "^1.2.0", + "react-query": "2.4.13", + "react-query-devtools": "^2.2.1", "react-redux": "^7.2.0", "react-router": "^5.2.0", "react-router-dom": "^5.2.0", diff --git a/frontend/src/config/queryConfig.ts b/frontend/src/config/queryConfig.ts index f45125c..9d4b32c 100644 --- a/frontend/src/config/queryConfig.ts +++ b/frontend/src/config/queryConfig.ts @@ -1,18 +1,22 @@ import { AxiosError } from 'axios'; export const queryConfig = { - refetchAllOnWindowFocus: false, - suspense: false, - staleTime: Infinity, - retry: (failureCount: number, error: unknown) => { - if ((error as AxiosError).response) { - switch ((error as AxiosError).response?.status) { - case 404: - return false; - default: + shared: { + suspense: false, + }, + queries: { + refetchOnWindowFocus: false, + staleTime: Infinity, + retry: (failureCount: number, error: unknown) => { + if ((error as AxiosError).response) { + switch ((error as AxiosError).response?.status) { + case 404: + return false; + default: + } } - } - return failureCount <= 3; + return failureCount <= 3; + }, }, }; diff --git a/frontend/src/features/day/Board/BoardHeader/BoardHeader.tsx b/frontend/src/features/day/Board/BoardHeader/BoardHeader.tsx index 456fecb..d0fa33f 100644 --- a/frontend/src/features/day/Board/BoardHeader/BoardHeader.tsx +++ b/frontend/src/features/day/Board/BoardHeader/BoardHeader.tsx @@ -2,6 +2,7 @@ import React, { useCallback } from 'react'; import moment from 'moment'; import { Icon } from '@binarycapsule/ui-capsules'; import { useDispatch } from 'react-redux'; +import { QueryStatus } from 'react-query'; import { BoardTopActions } from '../BoardTopActions/BoardTopActions'; import { BoardHeaderLoading } from './BoardHeader.loading'; import { @@ -17,7 +18,7 @@ import { Brand } from '../../../daysNav/Brand/Brand'; import { daysNavSliceActions } from '../../../daysNav/DaysNavSlice'; interface Props { - status: 'loading' | 'error' | 'success'; + status: QueryStatus; day?: DayDto; } diff --git a/frontend/src/features/day/api/useDay.ts b/frontend/src/features/day/api/useDay.ts index e01cd7f..725489a 100644 --- a/frontend/src/features/day/api/useDay.ts +++ b/frontend/src/features/day/api/useDay.ts @@ -26,13 +26,13 @@ export interface DayDto { sections: SectionDto[]; } -const getDayById = async (_: string, dayId: string) => { +const getDayById = async (_: string, dayId?: string) => { const { data } = await axios.get(`/api/days/${dayId}`); return data; }; export const useDay = (dayId?: string) => { - return useQuery(dayId ? ['day', dayId] : null, getDayById); + return useQuery(['day', dayId], getDayById, { enabled: dayId }); }; export const useSection = (dayId?: string, sectionId?: string): SectionDto | null => { diff --git a/frontend/src/features/day/api/useDeleteTask.ts b/frontend/src/features/day/api/useDeleteTask.ts index b2f6c02..2edd609 100644 --- a/frontend/src/features/day/api/useDeleteTask.ts +++ b/frontend/src/features/day/api/useDeleteTask.ts @@ -89,9 +89,9 @@ export const useDeleteTask = () => { }, onSettled: (result, err, { body: { dayId } }) => { - queryCache.refetchQueries(['day', dayId]); - queryCache.refetchQueries('activeTask'); - queryCache.refetchQueries('schedule'); + queryCache.invalidateQueries(['day', dayId]); + queryCache.invalidateQueries('activeTask'); + queryCache.invalidateQueries('schedule'); }, }); }; diff --git a/frontend/src/features/day/api/useMoveAll.ts b/frontend/src/features/day/api/useMoveAll.ts index 5c30d1c..80e2d57 100644 --- a/frontend/src/features/day/api/useMoveAll.ts +++ b/frontend/src/features/day/api/useMoveAll.ts @@ -83,8 +83,8 @@ export const useMoveAll = () => { }, onSettled: (result, err, { body: { dayId } }) => { - queryCache.refetchQueries(['day', dayId]); - queryCache.refetchQueries('schedule'); + queryCache.invalidateQueries(['day', dayId]); + queryCache.invalidateQueries('schedule'); }, }); }; diff --git a/frontend/src/features/day/api/useMoveTask.ts b/frontend/src/features/day/api/useMoveTask.ts index c2d0698..f12c917 100644 --- a/frontend/src/features/day/api/useMoveTask.ts +++ b/frontend/src/features/day/api/useMoveTask.ts @@ -215,9 +215,9 @@ export const useMoveTask = () => { }, onSettled: (result, err, { body: { dayId } }) => { - queryCache.refetchQueries(['day', dayId]); - queryCache.refetchQueries('activeTask'); - queryCache.refetchQueries('schedule'); + queryCache.invalidateQueries(['day', dayId]); + queryCache.invalidateQueries('activeTask'); + queryCache.invalidateQueries('schedule'); }, }); }; diff --git a/frontend/src/features/day/api/useScheduleTask.ts b/frontend/src/features/day/api/useScheduleTask.ts index b45839c..83e0a40 100644 --- a/frontend/src/features/day/api/useScheduleTask.ts +++ b/frontend/src/features/day/api/useScheduleTask.ts @@ -73,8 +73,8 @@ export const useScheduleTask = () => { }, onSettled: (result, err, { body: { dayId } }) => { - queryCache.refetchQueries(['day', dayId]); - queryCache.refetchQueries('schedule'); + queryCache.invalidateQueries(['day', dayId]); + queryCache.invalidateQueries('schedule'); }, }); }; diff --git a/frontend/src/features/day/api/useUpdateTask.ts b/frontend/src/features/day/api/useUpdateTask.ts index d113d35..9ddcc68 100644 --- a/frontend/src/features/day/api/useUpdateTask.ts +++ b/frontend/src/features/day/api/useUpdateTask.ts @@ -151,9 +151,9 @@ export const useUpdateTask = () => { }, onSettled: (result, err, { body: { dayId } }) => { - queryCache.refetchQueries(['day', dayId]); - queryCache.refetchQueries('activeTask'); - queryCache.refetchQueries('schedule'); + queryCache.invalidateQueries(['day', dayId]); + queryCache.invalidateQueries('activeTask'); + queryCache.invalidateQueries('schedule'); }, }); }; diff --git a/frontend/src/features/daysNav/DaysList/DaysList.tsx b/frontend/src/features/daysNav/DaysList/DaysList.tsx index 9d533e3..7dee551 100644 --- a/frontend/src/features/daysNav/DaysList/DaysList.tsx +++ b/frontend/src/features/daysNav/DaysList/DaysList.tsx @@ -13,7 +13,7 @@ import { LoadMoreDays } from '../DaysNav.styles'; interface Props { days: DayDto[]; canFetchMore?: boolean; - isFetchingMore: boolean; + isFetchingMore: false | 'previous' | 'next'; fetchMore(): void; } @@ -46,7 +46,7 @@ export const DaysList: React.FC = ({ days, canFetchMore, isFetchingMore, onClick={() => fetchMore()} appearance="minimal" size="small" - isLoading={isFetchingMore} + isLoading={!!isFetchingMore} > Load more days diff --git a/frontend/src/features/daysNav/api/useDays.ts b/frontend/src/features/daysNav/api/useDays.ts index 2d72e72..69b4709 100644 --- a/frontend/src/features/daysNav/api/useDays.ts +++ b/frontend/src/features/daysNav/api/useDays.ts @@ -27,6 +27,7 @@ export const useDays = () => { }; export const extractDays = (data: GetDaysDto[]): DayDto[] => { + if (!data) return []; const nestedDays = data.map(({ days }) => days); return nestedDays.flat(); }; From 8818b46f7abcd230027a141c6b11107fe7cd22d4 Mon Sep 17 00:00:00 2001 From: Jose Nunes Date: Mon, 6 Jul 2020 21:43:53 +0100 Subject: [PATCH 02/11] feat: new sidebars easing wdy-22 --- frontend/src/features/day/SideBar/SideBar.styles.ts | 2 +- frontend/src/features/daysNav/DaysNav.styles.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/features/day/SideBar/SideBar.styles.ts b/frontend/src/features/day/SideBar/SideBar.styles.ts index c3f50e2..f490832 100644 --- a/frontend/src/features/day/SideBar/SideBar.styles.ts +++ b/frontend/src/features/day/SideBar/SideBar.styles.ts @@ -11,7 +11,7 @@ export const StyledSidebar = styled.div<{ isOpen?: boolean }>` z-index: 999; right: 0; transform: ${({ isOpen }) => `translateX(${isOpen ? 0 : '448px'})`}; - transition: transform 0.2s ease; + transition: transform 0.2s cubic-bezier(0, 0.52, 0, 1); box-shadow: 0 10px 20px hsla(0, 0%, 0%, 0.15), 0 3px 6px hsla(0, 0%, 0%, 0.1); @media (min-width: ${props => props.theme.breakpoints.mobile}) { diff --git a/frontend/src/features/daysNav/DaysNav.styles.ts b/frontend/src/features/daysNav/DaysNav.styles.ts index db38cad..06fdecf 100644 --- a/frontend/src/features/daysNav/DaysNav.styles.ts +++ b/frontend/src/features/daysNav/DaysNav.styles.ts @@ -15,7 +15,7 @@ export const StyledDaysNav = styled.div<{ isOpen?: boolean }>` left: 0; z-index: 20000; transform: ${({ isOpen }) => `translateX(${isOpen ? 0 : `-${daysNavWidth}`})`}; - transition: transform 0.2s ease; + transition: transform 0.2s cubic-bezier(0, 0.52, 0, 1); box-shadow: 0 10px 20px hsla(0, 0%, 0%, 0.15), 0 3px 6px hsla(0, 0%, 0%, 0.1); @media (min-width: 800px) { From ab36957af80012de257e8a02952e1b790fb8fd66 Mon Sep 17 00:00:00 2001 From: Jose Nunes Date: Mon, 6 Jul 2020 22:21:56 +0100 Subject: [PATCH 03/11] fix: do not invalidate queries (for now) wdy-22 --- frontend/src/features/day/api/useDeleteTask.ts | 10 +++++----- frontend/src/features/day/api/useMoveAll.ts | 8 ++++---- frontend/src/features/day/api/useMoveTask.ts | 10 +++++----- frontend/src/features/day/api/useScheduleTask.ts | 8 ++++---- frontend/src/features/day/api/useUpdateTask.ts | 10 +++++----- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/frontend/src/features/day/api/useDeleteTask.ts b/frontend/src/features/day/api/useDeleteTask.ts index 2edd609..6ac1092 100644 --- a/frontend/src/features/day/api/useDeleteTask.ts +++ b/frontend/src/features/day/api/useDeleteTask.ts @@ -88,10 +88,10 @@ export const useDeleteTask = () => { }); }, - onSettled: (result, err, { body: { dayId } }) => { - queryCache.invalidateQueries(['day', dayId]); - queryCache.invalidateQueries('activeTask'); - queryCache.invalidateQueries('schedule'); - }, + // onSettled: (result, err, { body: { dayId } }) => { + // queryCache.invalidateQueries(['day', dayId]); + // queryCache.invalidateQueries('activeTask'); + // queryCache.invalidateQueries('schedule'); + // }, }); }; diff --git a/frontend/src/features/day/api/useMoveAll.ts b/frontend/src/features/day/api/useMoveAll.ts index 80e2d57..3570aac 100644 --- a/frontend/src/features/day/api/useMoveAll.ts +++ b/frontend/src/features/day/api/useMoveAll.ts @@ -82,9 +82,9 @@ export const useMoveAll = () => { }); }, - onSettled: (result, err, { body: { dayId } }) => { - queryCache.invalidateQueries(['day', dayId]); - queryCache.invalidateQueries('schedule'); - }, + // onSettled: (result, err, { body: { dayId } }) => { + // queryCache.invalidateQueries(['day', dayId]); + // queryCache.invalidateQueries('schedule'); + // }, }); }; diff --git a/frontend/src/features/day/api/useMoveTask.ts b/frontend/src/features/day/api/useMoveTask.ts index f12c917..31db611 100644 --- a/frontend/src/features/day/api/useMoveTask.ts +++ b/frontend/src/features/day/api/useMoveTask.ts @@ -214,10 +214,10 @@ export const useMoveTask = () => { }); }, - onSettled: (result, err, { body: { dayId } }) => { - queryCache.invalidateQueries(['day', dayId]); - queryCache.invalidateQueries('activeTask'); - queryCache.invalidateQueries('schedule'); - }, + // onSettled: (result, err, { body: { dayId } }) => { + // queryCache.invalidateQueries(['day', dayId]); + // queryCache.invalidateQueries('activeTask'); + // queryCache.invalidateQueries('schedule'); + // }, }); }; diff --git a/frontend/src/features/day/api/useScheduleTask.ts b/frontend/src/features/day/api/useScheduleTask.ts index 83e0a40..4e23321 100644 --- a/frontend/src/features/day/api/useScheduleTask.ts +++ b/frontend/src/features/day/api/useScheduleTask.ts @@ -72,9 +72,9 @@ export const useScheduleTask = () => { }); }, - onSettled: (result, err, { body: { dayId } }) => { - queryCache.invalidateQueries(['day', dayId]); - queryCache.invalidateQueries('schedule'); - }, + // onSettled: (result, err, { body: { dayId } }) => { + // queryCache.invalidateQueries(['day', dayId]); + // queryCache.invalidateQueries('schedule'); + // }, }); }; diff --git a/frontend/src/features/day/api/useUpdateTask.ts b/frontend/src/features/day/api/useUpdateTask.ts index 9ddcc68..6901d39 100644 --- a/frontend/src/features/day/api/useUpdateTask.ts +++ b/frontend/src/features/day/api/useUpdateTask.ts @@ -150,10 +150,10 @@ export const useUpdateTask = () => { }); }, - onSettled: (result, err, { body: { dayId } }) => { - queryCache.invalidateQueries(['day', dayId]); - queryCache.invalidateQueries('activeTask'); - queryCache.invalidateQueries('schedule'); - }, + // onSettled: (result, err, { body: { dayId } }) => { + // queryCache.invalidateQueries(['day', dayId]); + // queryCache.invalidateQueries('activeTask'); + // queryCache.invalidateQueries('schedule'); + // }, }); }; From 92ce06f3454afc8b1a25ff4102fa7cfa7dd4ad08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2020 17:27:37 +0000 Subject: [PATCH 04/11] chore(deps): bump lodash from 4.17.15 to 4.17.19 in /backend Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19) Signed-off-by: dependabot[bot] --- backend/package-lock.json | 8 ++++---- backend/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index ca84482..7b3d7f8 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -1,6 +1,6 @@ { "name": "widy-backend", - "version": "0.10.1", + "version": "0.11.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3703,9 +3703,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.assignin": { "version": "4.2.0", diff --git a/backend/package.json b/backend/package.json index 2bf7c24..da8ee35 100644 --- a/backend/package.json +++ b/backend/package.json @@ -36,7 +36,7 @@ "joi-objectid": "^3.0.1", "jsonwebtoken": "^8.5.1", "juice": "^6.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "moment": "^2.27.0", "mongoose": "^5.9.21", "mongoose-mongodb-errors": "0.0.2", From 95549da941dbd3b5ef80863b9e22468508a3219d Mon Sep 17 00:00:00 2001 From: Jose Nunes Date: Thu, 16 Jul 2020 18:48:46 +0100 Subject: [PATCH 05/11] fix: wrong task time when switching the active task WDY-383 --- frontend/src/features/day/api/useUpdateTask.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/features/day/api/useUpdateTask.ts b/frontend/src/features/day/api/useUpdateTask.ts index 6901d39..9ddcc68 100644 --- a/frontend/src/features/day/api/useUpdateTask.ts +++ b/frontend/src/features/day/api/useUpdateTask.ts @@ -150,10 +150,10 @@ export const useUpdateTask = () => { }); }, - // onSettled: (result, err, { body: { dayId } }) => { - // queryCache.invalidateQueries(['day', dayId]); - // queryCache.invalidateQueries('activeTask'); - // queryCache.invalidateQueries('schedule'); - // }, + onSettled: (result, err, { body: { dayId } }) => { + queryCache.invalidateQueries(['day', dayId]); + queryCache.invalidateQueries('activeTask'); + queryCache.invalidateQueries('schedule'); + }, }); }; From fb0eac9555a76b3fc3b82aafb2ed3f9f2b532b3f Mon Sep 17 00:00:00 2001 From: Jose Nunes Date: Sun, 19 Jul 2020 22:24:28 +0100 Subject: [PATCH 06/11] fix: deselect scheduled task WDY-382 --- frontend/src/features/day/TaskMenu/TaskMenu.tsx | 7 ++++++- frontend/src/features/day/Timer/Timer.tsx | 9 ++++++++- frontend/src/features/day/dialogs/ScheduleTaskDialog.tsx | 8 ++++++++ .../day/modals/RegisterTimeModal/RegisterTimeModal.tsx | 7 ++++--- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/frontend/src/features/day/TaskMenu/TaskMenu.tsx b/frontend/src/features/day/TaskMenu/TaskMenu.tsx index e01e503..7c4e32b 100644 --- a/frontend/src/features/day/TaskMenu/TaskMenu.tsx +++ b/frontend/src/features/day/TaskMenu/TaskMenu.tsx @@ -90,7 +90,12 @@ export const TaskMenu: React.FC = ({ dayId, sectionId, task, isPlan }) => )} {showRegisterTimeModal && ( - setShowRegisterTimeModal(false)} /> + setShowRegisterTimeModal(false)} + /> )} ); diff --git a/frontend/src/features/day/Timer/Timer.tsx b/frontend/src/features/day/Timer/Timer.tsx index 6725d83..049b74f 100644 --- a/frontend/src/features/day/Timer/Timer.tsx +++ b/frontend/src/features/day/Timer/Timer.tsx @@ -2,6 +2,7 @@ import React, { useState } from 'react'; import moment from 'moment'; import { useSelector } from 'react-redux'; import { Button } from '@binarycapsule/ui-capsules'; +import { useParams } from 'react-router'; import { TimerButton } from './TimerButton/TimerButton'; import { Time } from './Time/Time'; import { activeTaskTickSelector } from '../activeTask/activeTaskSelectors'; @@ -17,6 +18,7 @@ interface Props { } export const Timer: React.FC = ({ task, section }) => { + const { dayId } = useParams(); const [isRegisterModalOpen, setIsRegisterModalOpen] = useState(false); const { data: activeTaskData } = useActiveTask(); @@ -54,7 +56,12 @@ export const Timer: React.FC = ({ task, section }) => { {isRegisterModalOpen && ( - setIsRegisterModalOpen(false)} /> + setIsRegisterModalOpen(false)} + /> )} ); diff --git a/frontend/src/features/day/dialogs/ScheduleTaskDialog.tsx b/frontend/src/features/day/dialogs/ScheduleTaskDialog.tsx index 46c9880..6130d57 100644 --- a/frontend/src/features/day/dialogs/ScheduleTaskDialog.tsx +++ b/frontend/src/features/day/dialogs/ScheduleTaskDialog.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Dialog, DialogAction } from '@binarycapsule/ui-capsules'; +import { useHistory, useParams } from 'react-router'; import { ScheduleTaskVariables, useScheduleTask } from '../api/useScheduleTask'; interface Props { @@ -15,6 +16,9 @@ export const ScheduleTaskDialog: React.FC = ({ taskId, onRequestClose, }) => { + const { taskId: selectedTaskId } = useParams(); + const history = useHistory(); + const [scheduleTask] = useScheduleTask(); const scheduleTaskAction = () => { @@ -24,6 +28,10 @@ export const ScheduleTaskDialog: React.FC = ({ }; onRequestClose(); + if (selectedTaskId === taskId) { + history.push(`/day/${dayId}`); + } + return scheduleTask(scheduleTaskVariables); }; diff --git a/frontend/src/features/day/modals/RegisterTimeModal/RegisterTimeModal.tsx b/frontend/src/features/day/modals/RegisterTimeModal/RegisterTimeModal.tsx index 0341a1a..9254e4f 100644 --- a/frontend/src/features/day/modals/RegisterTimeModal/RegisterTimeModal.tsx +++ b/frontend/src/features/day/modals/RegisterTimeModal/RegisterTimeModal.tsx @@ -1,5 +1,4 @@ import React, { FocusEvent, useEffect, useState } from 'react'; -import { useParams } from 'react-router'; import { useFormik } from 'formik'; import * as Yup from 'yup'; import { Button, ModalBody, ModalTitle, Select } from '@binarycapsule/ui-capsules'; @@ -21,11 +20,13 @@ const validationSchema = Yup.object().shape({ }); interface Props { + taskId: string; + sectionId: string; + dayId: string; closeModal(): void; } -export const RegisterTimeModal: React.FC = ({ closeModal }) => { - const { taskId, sectionId, dayId } = useParams(); +export const RegisterTimeModal: React.FC = ({ taskId, sectionId, dayId, closeModal }) => { const [suggestion, setSuggestion] = useState(null); const [updateTask] = useUpdateTask(); From f47e33b5ac2ca46083561a151a27f7fb7871a872 Mon Sep 17 00:00:00 2001 From: Jose Nunes Date: Sun, 19 Jul 2020 22:55:34 +0100 Subject: [PATCH 07/11] fix(Plan task): make scope visible WDY-384 --- frontend/src/features/day/Task/Task.syles.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/features/day/Task/Task.syles.ts b/frontend/src/features/day/Task/Task.syles.ts index 106b6b8..19364c2 100644 --- a/frontend/src/features/day/Task/Task.syles.ts +++ b/frontend/src/features/day/Task/Task.syles.ts @@ -87,6 +87,8 @@ export const StyledTask = styled.div` flex-direction: row; border: ${props => props.isPlan || props.isSchedule ? 'none' : `1px solid ${getColors(props).border}`}; + border-bottom: ${({ isPlan, isSchedule, theme }) => + (isPlan || isSchedule) && `1px solid ${theme.neutral100}`}; border-radius: ${({ isPlan, isSchedule }) => (isPlan || isSchedule ? 0 : '4px')}; background-color: ${props => getColors(props).background}; padding: 8px; @@ -96,7 +98,6 @@ export const StyledTask = styled.div` cursor: pointer; ${({ isActive }) => isActive && isActiveMixin}; - ${StyledScopeCode}, ${ActionsContainer} { display: ${({ isPlan, isSchedule, isSelected }) => (isPlan || isSchedule) && !isSelected && 'none'}; From e6ae631000129082f528f784d4bf8ac645c2d108 Mon Sep 17 00:00:00 2001 From: Jose Nunes Date: Mon, 27 Jul 2020 16:54:42 +0100 Subject: [PATCH 08/11] fix: stopping active task when registering time WDY-389 --- .../src/features/day/Timer/TimerButton/TimerButton.tsx | 7 ++++++- frontend/src/features/day/api/useUpdateTask.ts | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/frontend/src/features/day/Timer/TimerButton/TimerButton.tsx b/frontend/src/features/day/Timer/TimerButton/TimerButton.tsx index 324c0e1..c8704df 100644 --- a/frontend/src/features/day/Timer/TimerButton/TimerButton.tsx +++ b/frontend/src/features/day/Timer/TimerButton/TimerButton.tsx @@ -21,7 +21,7 @@ interface Props { export const TimerButton: React.FC = ({ size, task, sectionId }) => { const { dayId } = useParams(); const { status, data: activeTaskData } = useActiveTask(); - const [updateTask] = useUpdateTask(); + const [updateTask, { isLoading }] = useUpdateTask(); const history = useHistory(); const dispatch = useDispatch(); @@ -40,6 +40,11 @@ export const TimerButton: React.FC = ({ size, task, sectionId }) => { colors={isActive ? colors.active : undefined} icon={isActive ? 'stop' : 'play'} onClick={() => { + // Debounce to prevent simultaneous requests + if (isLoading) { + return; + } + const payload = isActive ? { start: null, diff --git a/frontend/src/features/day/api/useUpdateTask.ts b/frontend/src/features/day/api/useUpdateTask.ts index 9ddcc68..6903c7b 100644 --- a/frontend/src/features/day/api/useUpdateTask.ts +++ b/frontend/src/features/day/api/useUpdateTask.ts @@ -98,9 +98,12 @@ export const useUpdateTask = () => { } as ActiveTaskDto); } - // We are stopping a task + // We are editing task time if (payload.time) { - queryCache.setQueryData('activeTask', emptyActiveTask); + // We are stopping the active task + if (previousActiveTask.taskId === taskId) { + queryCache.setQueryData('activeTask', emptyActiveTask); + } } if (payload.title) { From 16639c77d166aecdf5c909a4b6e7341ff5565aca Mon Sep 17 00:00:00 2001 From: Jose Nunes Date: Mon, 27 Jul 2020 16:55:15 +0100 Subject: [PATCH 09/11] feat: improve sidebars contrast WDY-387 --- frontend/src/features/day/SideBar/SideBar.styles.ts | 1 + frontend/src/features/daysNav/DaysNav.styles.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/frontend/src/features/day/SideBar/SideBar.styles.ts b/frontend/src/features/day/SideBar/SideBar.styles.ts index f490832..d6469b9 100644 --- a/frontend/src/features/day/SideBar/SideBar.styles.ts +++ b/frontend/src/features/day/SideBar/SideBar.styles.ts @@ -13,6 +13,7 @@ export const StyledSidebar = styled.div<{ isOpen?: boolean }>` transform: ${({ isOpen }) => `translateX(${isOpen ? 0 : '448px'})`}; transition: transform 0.2s cubic-bezier(0, 0.52, 0, 1); box-shadow: 0 10px 20px hsla(0, 0%, 0%, 0.15), 0 3px 6px hsla(0, 0%, 0%, 0.1); + border-left: 1px solid ${({ theme }) => theme.yellow075}; @media (min-width: ${props => props.theme.breakpoints.mobile}) { width: 448px; diff --git a/frontend/src/features/daysNav/DaysNav.styles.ts b/frontend/src/features/daysNav/DaysNav.styles.ts index 06fdecf..f8b48e2 100644 --- a/frontend/src/features/daysNav/DaysNav.styles.ts +++ b/frontend/src/features/daysNav/DaysNav.styles.ts @@ -17,6 +17,7 @@ export const StyledDaysNav = styled.div<{ isOpen?: boolean }>` transform: ${({ isOpen }) => `translateX(${isOpen ? 0 : `-${daysNavWidth}`})`}; transition: transform 0.2s cubic-bezier(0, 0.52, 0, 1); box-shadow: 0 10px 20px hsla(0, 0%, 0%, 0.15), 0 3px 6px hsla(0, 0%, 0%, 0.1); + border-right: 1px solid ${({ theme }) => theme.neutral075}; @media (min-width: 800px) { transform: translateX(0); From 1b5c8092ac8e5d3e1c6e886952e355509f8c481a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2020 19:13:08 +0000 Subject: [PATCH 10/11] chore(deps): bump bl from 2.2.0 to 2.2.1 in /backend Bumps [bl](https://github.com/rvagg/bl) from 2.2.0 to 2.2.1. - [Release notes](https://github.com/rvagg/bl/releases) - [Commits](https://github.com/rvagg/bl/compare/v2.2.0...v2.2.1) Signed-off-by: dependabot[bot] --- backend/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index 7b3d7f8..ea1aac6 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -866,9 +866,9 @@ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" }, "bl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz", - "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", "requires": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" From 213a0eefcd1947d9bce98481cad587c90de97d6f Mon Sep 17 00:00:00 2001 From: Jose Nunes Date: Sat, 19 Sep 2020 15:10:05 +0100 Subject: [PATCH 11/11] chore: bump version --- backend/package.json | 2 +- frontend/package.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/package.json b/backend/package.json index da8ee35..e14f95f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "widy-backend", - "version": "0.11.0", + "version": "0.12.0", "description": "Widy app backend", "main": "build/index.js", "repository": { diff --git a/frontend/package.json b/frontend/package.json index 995ee22..397d16c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "widy-frontend", - "version": "0.11.0", + "version": "0.12.0", "private": true, "proxy": "http://localhost:5000", "scripts": { diff --git a/package.json b/package.json index 0519fb5..296c268 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "widy", - "version": "0.11.0", + "version": "0.12.0", "description": "Widy - What I did yesterday", "repository": { "type": "git",