diff --git a/web/core/components/issues/issue-layouts/calendar/base-calendar-root.tsx b/web/core/components/issues/issue-layouts/calendar/base-calendar-root.tsx index 1f6384a6fb..0fbcfbfe70 100644 --- a/web/core/components/issues/issue-layouts/calendar/base-calendar-root.tsx +++ b/web/core/components/issues/issue-layouts/calendar/base-calendar-root.tsx @@ -24,6 +24,8 @@ export type CalendarStoreType = | EIssuesStoreType.MODULE | EIssuesStoreType.CYCLE | EIssuesStoreType.PROJECT_VIEW + | EIssuesStoreType.TEAM + | EIssuesStoreType.TEAM_VIEW | EIssuesStoreType.EPIC; interface IBaseCalendarRoot { @@ -32,13 +34,14 @@ interface IBaseCalendarRoot { isCompletedCycle?: boolean; viewId?: string | undefined; isEpic?: boolean; + canEditPropertiesBasedOnProject?: (projectId: string) => boolean; } export const BaseCalendarRoot = observer((props: IBaseCalendarRoot) => { - const { QuickActions, addIssuesToView, isCompletedCycle = false, viewId, isEpic = false } = props; + const { QuickActions, addIssuesToView, isCompletedCycle = false, viewId, isEpic = false, canEditPropertiesBasedOnProject } = props; // router - const { workspaceSlug, projectId } = useParams(); + const { workspaceSlug } = useParams(); // hooks const storeType = useIssueStoreType() as CalendarStoreType; @@ -63,6 +66,8 @@ export const BaseCalendarRoot = observer((props: IBaseCalendarRoot) => { EUserPermissionsLevel.PROJECT ); + const { enableInlineEditing } = issues?.viewFlags || {}; + const displayFilters = issuesFilter.issueFilters?.displayFilters; const groupedIssueIds = (issues.groupedIssueIds ?? {}) as TGroupedIssues; @@ -71,9 +76,7 @@ export const BaseCalendarRoot = observer((props: IBaseCalendarRoot) => { const { startDate, endDate } = issueCalendarView.getStartAndEndDate(layout) ?? {}; useEffect(() => { - startDate && - endDate && - layout && + if (startDate && endDate && layout) { fetchIssues( "init-loader", { @@ -85,21 +88,23 @@ export const BaseCalendarRoot = observer((props: IBaseCalendarRoot) => { }, viewId ); + } }, [fetchIssues, storeType, startDate, endDate, layout, viewId]); const handleDragAndDrop = async ( issueId: string | undefined, + issueProjectId: string | undefined, sourceDate: string | undefined, destinationDate: string | undefined ) => { - if (!issueId || !destinationDate || !sourceDate) return; + if (!issueId || !destinationDate || !sourceDate || !issueProjectId) return; await handleDragDrop( issueId, sourceDate, destinationDate, workspaceSlug?.toString(), - projectId?.toString(), + issueProjectId, updateIssue ).catch((err) => { setToast({ @@ -127,6 +132,16 @@ export const BaseCalendarRoot = observer((props: IBaseCalendarRoot) => { [issues?.getGroupIssueCount] ); + const canEditProperties = useCallback( + (projectId: string | undefined) => { + const isEditingAllowedBasedOnProject = + canEditPropertiesBasedOnProject && projectId ? canEditPropertiesBasedOnProject(projectId) : isEditingAllowed; + + return enableInlineEditing && isEditingAllowedBasedOnProject; + }, + [canEditPropertiesBasedOnProject, enableInlineEditing, isEditingAllowed] + ); + return ( <>