From 0345336d90c67d27bca7013d4c394c2cd4e33029 Mon Sep 17 00:00:00 2001 From: Vamsi Krishna <46787868+mathalav55@users.noreply.github.com> Date: Wed, 15 Jan 2025 16:05:56 +0530 Subject: [PATCH] chore: removed guests from assignees filters (#6402) --- .../views/(detail)/[viewId]/header.tsx | 1 + web/core/components/issues/filters.tsx | 1 + .../header/filters/filters-selection.tsx | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx index cffb03473d..c169be3847 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx @@ -246,6 +246,7 @@ export const ProjectViewIssuesHeader: React.FC = observer(() => { layoutDisplayFiltersOptions={ activeLayout ? ISSUE_DISPLAY_FILTERS_BY_LAYOUT.issues[activeLayout] : undefined } + projectId={projectId.toString()} labels={projectLabels} memberIds={projectMemberIds ?? undefined} states={projectStates} diff --git a/web/core/components/issues/filters.tsx b/web/core/components/issues/filters.tsx index 6cb089465d..e09b543485 100644 --- a/web/core/components/issues/filters.tsx +++ b/web/core/components/issues/filters.tsx @@ -120,6 +120,7 @@ const HeaderFilters = observer((props: Props) => { layoutDisplayFiltersOptions={layoutDisplayFiltersOptions} labels={projectLabels} memberIds={projectMemberIds ?? undefined} + projectId={projectId} states={projectStates} cycleViewDisabled={!currentProjectDetails?.cycle_view} moduleViewDisabled={!currentProjectDetails?.module_view} diff --git a/web/core/components/issues/issue-layouts/filters/header/filters/filters-selection.tsx b/web/core/components/issues/issue-layouts/filters/header/filters/filters-selection.tsx index f097574081..37eee9e936 100644 --- a/web/core/components/issues/issue-layouts/filters/header/filters/filters-selection.tsx +++ b/web/core/components/issues/issue-layouts/filters/header/filters/filters-selection.tsx @@ -27,9 +27,11 @@ import { FilterIssueGrouping, } from "@/components/issues"; // hooks +import { useMember } from "@/hooks/store"; import { usePlatformOS } from "@/hooks/use-platform-os"; // plane web components import { FilterIssueTypes, FilterTeamProjects } from "@/plane-web/components/issues"; +import { EUserPermissions } from "@/plane-web/constants"; type Props = { filters: IIssueFilterOptions; @@ -37,6 +39,7 @@ type Props = { handleDisplayFiltersUpdate?: (updatedDisplayFilter: Partial) => void; handleFiltersUpdate: (key: keyof IIssueFilterOptions, value: string | string[]) => void; layoutDisplayFiltersOptions: ILayoutDisplayFiltersOptions | undefined; + projectId?: string; labels?: IIssueLabel[] | undefined; memberIds?: string[] | undefined; states?: IState[] | undefined; @@ -52,6 +55,7 @@ export const FilterSelection: React.FC = observer((props) => { handleDisplayFiltersUpdate, handleFiltersUpdate, layoutDisplayFiltersOptions, + projectId, labels, memberIds, states, @@ -62,9 +66,22 @@ export const FilterSelection: React.FC = observer((props) => { // hooks const { isMobile } = usePlatformOS(); const { moduleId, cycleId } = useParams(); + const { + project: { getProjectMemberDetails }, + } = useMember(); // states const [filtersSearchQuery, setFiltersSearchQuery] = useState(""); + // filter guests from assignees + const assigneeIds = memberIds?.filter((id) => { + if (projectId) { + const memeberDetails = getProjectMemberDetails(id, projectId); + const isGuest = (memeberDetails?.role || EUserPermissions.GUEST) === EUserPermissions.GUEST; + if (isGuest && memeberDetails) return false; + } + return true; + }); + const isFilterEnabled = (filter: keyof IIssueFilterOptions) => layoutDisplayFiltersOptions?.filters.includes(filter); const isDisplayFilterEnabled = (displayFilter: keyof IIssueDisplayFilterOptions) => @@ -140,7 +157,7 @@ export const FilterSelection: React.FC = observer((props) => { handleFiltersUpdate("assignees", val)} - memberIds={memberIds} + memberIds={assigneeIds} searchQuery={filtersSearchQuery} />