33import React , { useCallback , useEffect , FC , useMemo } from "react" ;
44import { observer } from "mobx-react" ;
55import { useParams } from "next/navigation" ;
6+ import useSWR from "swr" ;
67// ui
78import { EUserPermissions , EUserPermissionsLevel } from "@plane/constants" ;
89import { TOAST_TYPE , setToast } from "@plane/ui" ;
@@ -11,7 +12,14 @@ import { CommandModal, ShortcutsModal } from "@/components/command-palette";
1112// helpers
1213import { copyTextToClipboard } from "@/helpers/string.helper" ;
1314// hooks
14- import { useEventTracker , useUser , useAppTheme , useCommandPalette , useUserPermissions } from "@/hooks/store" ;
15+ import {
16+ useEventTracker ,
17+ useUser ,
18+ useAppTheme ,
19+ useCommandPalette ,
20+ useUserPermissions ,
21+ useIssueDetail ,
22+ } from "@/hooks/store" ;
1523import { usePlatformOS } from "@/hooks/use-platform-os" ;
1624// plane web components
1725import {
@@ -30,8 +38,9 @@ import {
3038
3139export const CommandPalette : FC = observer ( ( ) => {
3240 // router params
33- const { workspaceSlug, projectId, workItem } = useParams ( ) ;
41+ const { workspaceSlug, projectId : paramsProjectId , workItem } = useParams ( ) ;
3442 // store hooks
43+ const { fetchIssueWithIdentifier } = useIssueDetail ( ) ;
3544 const { toggleSidebar } = useAppTheme ( ) ;
3645 const { setTrackElement } = useEventTracker ( ) ;
3746 const { platform } = usePlatformOS ( ) ;
@@ -40,15 +49,35 @@ export const CommandPalette: FC = observer(() => {
4049 const { allowPermissions } = useUserPermissions ( ) ;
4150
4251 // derived values
52+ const projectIdentifier = workItem ?. toString ( ) . split ( "-" ) [ 0 ] ;
53+ const sequence_id = workItem ?. toString ( ) . split ( "-" ) [ 1 ] ;
54+
55+ const { data : issueDetails } = useSWR (
56+ workspaceSlug && workItem ? `ISSUE_DETAIL_${ workspaceSlug } _${ projectIdentifier } _${ sequence_id } ` : null ,
57+ workspaceSlug && workItem
58+ ? ( ) => fetchIssueWithIdentifier ( workspaceSlug . toString ( ) , projectIdentifier , sequence_id )
59+ : null
60+ ) ;
61+
62+ const issueId = issueDetails ?. id ;
63+ const projectId = paramsProjectId ?. toString ( ) ?? issueDetails ?. project_id ;
64+
4365 const canPerformWorkspaceMemberActions = allowPermissions (
4466 [ EUserPermissions . ADMIN , EUserPermissions . MEMBER ] ,
4567 EUserPermissionsLevel . WORKSPACE
4668 ) ;
4769 const canPerformProjectMemberActions = allowPermissions (
4870 [ EUserPermissions . ADMIN , EUserPermissions . MEMBER ] ,
49- EUserPermissionsLevel . PROJECT
71+ EUserPermissionsLevel . PROJECT ,
72+ workspaceSlug ?. toString ( ) ,
73+ projectId
74+ ) ;
75+ const canPerformProjectAdminActions = allowPermissions (
76+ [ EUserPermissions . ADMIN ] ,
77+ EUserPermissionsLevel . PROJECT ,
78+ workspaceSlug ?. toString ( ) ,
79+ projectId
5080 ) ;
51- const canPerformProjectAdminActions = allowPermissions ( [ EUserPermissions . ADMIN ] , EUserPermissionsLevel . PROJECT ) ;
5281
5382 const copyIssueUrlToClipboard = useCallback ( ( ) => {
5483 if ( ! workItem ) return ;
@@ -236,7 +265,7 @@ export const CommandPalette: FC = observer(() => {
236265 { workspaceSlug && projectId && (
237266 < ProjectLevelModals workspaceSlug = { workspaceSlug . toString ( ) } projectId = { projectId . toString ( ) } />
238267 ) }
239- < IssueLevelModals />
268+ < IssueLevelModals projectId = { projectId } issueId = { issueId } />
240269 < CommandModal />
241270 </ >
242271 ) ;
0 commit comments