Add tasks page (#1015)

* Refactor top bar component

* Add task page with tabs

* Add tasks

* Add logic for task status

* Fix isoweek definition

* Enable click on task

* Deduplicate component

* Lint

---------

Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
This commit is contained in:
Emilien Chauvet
2023-07-31 16:14:35 -07:00
committed by GitHub
parent 700b567320
commit 22ca00bb67
22 changed files with 625 additions and 143 deletions

View File

@ -0,0 +1,47 @@
import { activeTabIdScopedState } from '@/ui/tab/states/activeTabIdScopedState';
import { useRecoilScopedState } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedState';
import { ActivityType, useGetActivitiesQuery } from '~/generated/graphql';
import { parseDate } from '~/utils/date-utils';
import { TasksContext } from '../states/TasksContext';
export function useTasks() {
const [activeTabId] = useRecoilScopedState(
activeTabIdScopedState,
TasksContext,
);
const { data, loading } = useGetActivitiesQuery({
variables: {
where: {
type: { equals: ActivityType.Task },
completedAt:
activeTabId === 'done' ? { not: { equals: null } } : { equals: null },
},
},
});
const todayTasks = data?.findManyActivities.filter((task) => {
if (!task.dueAt) {
return false;
}
const dueDate = parseDate(task.dueAt).toJSDate();
const today = new Date();
return dueDate.getDate() === today.getDate();
});
const otherTasks = data?.findManyActivities.filter((task) => {
if (!task.dueAt) {
return false;
}
const dueDate = parseDate(task.dueAt).toJSDate();
const today = new Date();
return dueDate.getDate() !== today.getDate();
});
return {
todayTasks,
otherTasks,
loading,
};
}