diff --git a/web/core/components/issues/issue-detail/issue-activity/root.tsx b/web/core/components/issues/issue-detail/issue-activity/root.tsx index da2fff694b1..dbf44413b0c 100644 --- a/web/core/components/issues/issue-detail/issue-activity/root.tsx +++ b/web/core/components/issues/issue-detail/issue-activity/root.tsx @@ -11,7 +11,7 @@ import { TOAST_TYPE, setToast } from "@plane/ui"; import { IssueCommentCreate } from "@/components/issues"; import { IssueActivityCommentRoot } from "@/components/issues/issue-detail"; // hooks -import { useIssueDetail, useProject, useUserPermissions } from "@/hooks/store"; +import { useIssueDetail, useProject, useUser, useUserPermissions } from "@/hooks/store"; // plane web components import { ActivityFilterRoot, IssueActivityWorklogCreateButton } from "@/plane-web/components/issues/worklog"; // plane web constants @@ -38,15 +38,25 @@ export type TActivityOperations = { export const IssueActivity: FC = observer((props) => { const { workspaceSlug, projectId, issueId, disabled = false, isIntakeIssue = false } = props; + // state + const [selectedFilters, setSelectedFilters] = useState(defaultActivityFilters); // hooks - const { createComment, updateComment, removeComment } = useIssueDetail(); + const { + issue: { getIssueById }, + createComment, + updateComment, + removeComment, + } = useIssueDetail(); const { projectPermissionsByWorkspaceSlugAndProjectId } = useUserPermissions(); const { getProjectById } = useProject(); + const { data: currentUser } = useUser(); //derived values - const isGuest = (projectPermissionsByWorkspaceSlugAndProjectId(workspaceSlug, projectId) ?? EUserPermissions.GUEST) === EUserPermissions.GUEST; - const isWorklogButtonEnabled = !isIntakeIssue && !isGuest; - // state - const [selectedFilters, setSelectedFilters] = useState(defaultActivityFilters); + const issue = issueId ? getIssueById(issueId) : undefined; + const currentUserProjectRole = projectPermissionsByWorkspaceSlugAndProjectId(workspaceSlug, projectId); + const isAdmin = (currentUserProjectRole ?? EUserPermissions.GUEST) === EUserPermissions.ADMIN; + const isGuest = (currentUserProjectRole ?? EUserPermissions.GUEST) === EUserPermissions.GUEST; + const isAssigned = issue?.assignee_ids && currentUser?.id ? issue?.assignee_ids.includes(currentUser?.id) : false; + const isWorklogButtonEnabled = !isIntakeIssue && !isGuest && (isAdmin || isAssigned); // toggle filter const toggleFilter = (filter: TActivityFilters) => { setSelectedFilters((prevFilters) => {