@@ -16,6 +16,7 @@ import {
1616 Folder as FolderIcon ,
1717 Library ,
1818 Loader ,
19+ Send ,
1920 Square ,
2021 SquareArrowUpRight ,
2122 Workflow as WorkflowIcon ,
@@ -40,6 +41,7 @@ import {
4041 type PreviewMode ,
4142 resolveFileCategory ,
4243} from '@/app/workspace/[workspaceId]/files/components/file-viewer'
44+ import { ShareModal } from '@/app/workspace/[workspaceId]/files/components/share-modal'
4345import type { BrowserPanelOverlayController } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/components/browser-session/browser-panel-occlusion'
4446import { BrowserSession } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/components/browser-session/browser-session'
4547import { GenericResourceContent } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/components/generic-resource-content'
@@ -396,6 +398,7 @@ export function ResourceActions({
396398 case 'file' :
397399 return (
398400 < EmbeddedFileActions
401+ key = { `${ workspaceId } :${ resource . id } ` }
399402 workspaceId = { workspaceId }
400403 fileId = { resource . id }
401404 filePath = { resource . path }
@@ -652,6 +655,8 @@ function EmbeddedFileActions({
652655 downloadSourceRef,
653656} : EmbeddedFileActionsProps ) {
654657 const router = useRouter ( )
658+ const { canEdit } = useUserPermissionsContext ( )
659+ const [ isShareOpen , setIsShareOpen ] = useState ( false )
655660 const { data : files = [ ] , isLoading : listLoading } = useWorkspaceFiles ( workspaceId )
656661 const listedFile = files . find (
657662 ( file ) =>
@@ -707,6 +712,35 @@ function EmbeddedFileActions({
707712 < p > Download</ p >
708713 </ Tooltip . Content >
709714 </ Tooltip . Root >
715+ { file && ! isUpload && canEdit && (
716+ < >
717+ < Tooltip . Root >
718+ < Tooltip . Trigger asChild >
719+ < TabStripAction
720+ variant = 'subtle'
721+ onClick = { ( ) => setIsShareOpen ( true ) }
722+ aria-label = 'Share file'
723+ >
724+ < Send className = { RESOURCE_TAB_ICON_CLASS } />
725+ </ TabStripAction >
726+ </ Tooltip . Trigger >
727+ < Tooltip . Content side = 'bottom' >
728+ < p > Share</ p >
729+ </ Tooltip . Content >
730+ </ Tooltip . Root >
731+ { isShareOpen && (
732+ < ShareModal
733+ key = { file . id }
734+ open
735+ onOpenChange = { setIsShareOpen }
736+ workspaceId = { workspaceId }
737+ fileId = { file . id }
738+ fileName = { file . name }
739+ initialShare = { file . share ?? null }
740+ />
741+ ) }
742+ </ >
743+ ) }
710744 </ >
711745 )
712746}
0 commit comments