"use client"; import { useSession } from "next-auth/react"; import { useRouter } from "next/navigation"; import type { Dispatch, SetStateAction } from "react"; import { useState } from "react"; import LicenseRequired from "~/ee/common/components/LicenseRequired"; import type { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { FilterResults } from "~/filters/components/FilterResults"; import { TeamsFilter } from "~/filters/components/TeamsFilter"; import { getTeamsFiltersFromQuery } from "@calcom/features/filters/lib/getTeamsFiltersFromQuery"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { useRouterQuery } from "@calcom/lib/hooks/useRouterQuery"; import { trpc } from "@calcom/trpc/react"; import classNames from "@calcom/ui/classNames"; import { Avatar } from "@calcom/ui/components/avatar"; import { AnimatedPopover } from "@calcom/ui/components/popover"; import Shell, { ShellMain } from "@calcom/web/modules/shell/Shell"; import EmptyScreen from "@calcom/web/modules/ee/workflows/components/EmptyScreen"; import SkeletonLoader from "@calcom/web/modules/ee/workflows/components/SkeletonLoaderList"; import { WorkflowCreationDialog, useWorkflowCreation, } from "@calcom/web/modules/ee/workflows/components/WorkflowCreationDialog"; import WorkflowList from "@calcom/web/modules/ee/workflows/components/WorkflowListPage"; import { CreateButtonWithTeamsList } from "~/ee/teams/components/createButton/CreateButtonWithTeamsList"; type PageProps = { filteredList?: Awaited>; }; function WorkflowsPage({ filteredList }: PageProps) { const { t } = useLocale(); const session = useSession(); // eslint-disable-next-line @typescript-eslint/no-unused-vars -- router is kept for future use const router = useRouter(); const routerQuery = useRouterQuery(); const filters = getTeamsFiltersFromQuery(routerQuery); const { showDialog, setShowDialog, pendingTeamId, openDialog } = useWorkflowCreation(); const { data, isPending: _isPending } = trpc.viewer.workflows.filteredList.useQuery( { filters, }, { enabled: !filteredList, } ); const filteredWorkflows = filteredList ?? data; const isPending = filteredList ? false : _isPending; return ( ) : null }> <> {filteredWorkflows?.totalCount ? (
) : null} } noResultsScreen={} SkeletonLoader={SkeletonLoader}>
); } // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Filter component is kept for future use const Filter = (props: { profiles: { readOnly?: boolean | undefined; slug: string | null; name: string | null; teamId: number | null | undefined; image?: string | undefined | null; }[]; checked: { userId: number | null; teamIds: number[]; }; setChecked: Dispatch< SetStateAction<{ userId: number | null; teamIds: number[]; }> >; }) => { const session = useSession(); const userId = session.data?.user.id || 0; const user = session.data?.user.name || ""; const userName = session.data?.user.username; const userAvatar = `${WEBAPP_URL}/${userName}/avatar.png`; const teams = props.profiles.filter((profile) => !!profile.teamId); const { checked, setChecked } = props; const [noFilter, setNoFilter] = useState(true); return (
{ if (e.target.checked) { setChecked({ userId: userId, teamIds: checked.teamIds }); if (checked.teamIds.length === teams.length) { setNoFilter(true); } } else if (!e.target.checked) { setChecked({ userId: null, teamIds: checked.teamIds }); setNoFilter(false); } }} />
{teams.map((profile) => (
{ if (e.target.checked) { const updatedChecked = checked; updatedChecked.teamIds.push(profile.teamId || 0); setChecked({ userId: checked.userId, teamIds: [...updatedChecked.teamIds] }); if (checked.userId && updatedChecked.teamIds.length === teams.length) { setNoFilter(true); } else { setNoFilter(false); } } else if (!e.target.checked) { const index = checked.teamIds.indexOf(profile.teamId || 0); if (index !== -1) { const updatedChecked = checked; updatedChecked.teamIds.splice(index, 1); setChecked({ userId: checked.userId, teamIds: [...updatedChecked.teamIds] }); if (checked.userId && updatedChecked.teamIds.length === teams.length) { setNoFilter(true); } else { setNoFilter(false); } } } }} className="text-emphasis focus:ring-emphasis dark:text-muted border-default inline-flex h-4 w-4 place-self-center justify-self-end rounded transition " />
))}
); }; export default WorkflowsPage;