* Added Overview page * Revised Getting Started page * Minor revision * Edited readme, minor modifications to docs * Removed sweep.yaml, .devcontainer, .ergomake * Moved security.md to .github, added contributing.md * changes as per code review * updated contributing.md * fixed broken links & added missing links in doc, improved structure * fixed link in wsl setup * fixed server link, added https cloning in yarn-setup * removed package-lock.json * added doc card, admonitions * removed underline from nav buttons * refactoring modules/ui * refactoring modules/ui * Change folder case * Fix theme location * Fix case 2 * Fix storybook --------- Co-authored-by: Nimra Ahmed <nimra1408@gmail.com> Co-authored-by: Nimra Ahmed <50912134+nimraahmed@users.noreply.github.com>
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { DateTime } from 'luxon';
|
|
import { useRecoilState } from 'recoil';
|
|
|
|
import { currentUserState } from '@/auth/states/currentUserState';
|
|
import { turnFilterIntoWhereClause } from '@/ui/data/view-bar/utils/turnFilterIntoWhereClause';
|
|
import {
|
|
ActivityType,
|
|
useGetActivitiesQuery,
|
|
ViewFilterOperand,
|
|
} from '~/generated/graphql';
|
|
import { parseDate } from '~/utils/date-utils';
|
|
|
|
export const useCurrentUserTaskCount = () => {
|
|
const [currentUser] = useRecoilState(currentUserState);
|
|
|
|
const { data } = useGetActivitiesQuery({
|
|
variables: {
|
|
where: {
|
|
type: { equals: ActivityType.Task },
|
|
completedAt: { equals: null },
|
|
...(currentUser
|
|
? turnFilterIntoWhereClause({
|
|
key: 'assigneeId',
|
|
type: 'entity',
|
|
value: currentUser.id,
|
|
operand: ViewFilterOperand.Is,
|
|
displayValue: currentUser.displayName,
|
|
displayAvatarUrl: currentUser.avatarUrl ?? undefined,
|
|
})
|
|
: {}),
|
|
},
|
|
},
|
|
});
|
|
|
|
const currentUserDueTaskCount = data?.findManyActivities.filter((task) => {
|
|
if (!task.dueAt) {
|
|
return false;
|
|
}
|
|
const dueDate = parseDate(task.dueAt).toJSDate();
|
|
const today = DateTime.now().endOf('day').toJSDate();
|
|
return dueDate <= today;
|
|
}).length;
|
|
|
|
return {
|
|
currentUserDueTaskCount,
|
|
};
|
|
};
|