diff --git a/src/qqq/pages/records/view/RecordView.tsx b/src/qqq/pages/records/view/RecordView.tsx index 34367c5..a41b3ab 100644 --- a/src/qqq/pages/records/view/RecordView.tsx +++ b/src/qqq/pages/records/view/RecordView.tsx @@ -130,7 +130,7 @@ function RecordView({table, launchProcess}: Props): JSX.Element const openActionsMenu = (event: any) => setActionsMenu(event.currentTarget); const closeActionsMenu = () => setActionsMenu(null); - const {accentColor, setPageHeader, tableMetaData, setTableMetaData, tableProcesses, setTableProcesses, dotMenuOpen, keyboardHelpOpen, helpHelpActive, recordAnalytics} = useContext(QContext); + const {accentColor, setPageHeader, tableMetaData, setTableMetaData, tableProcesses, setTableProcesses, dotMenuOpen, keyboardHelpOpen, helpHelpActive, recordAnalytics, userId: currentUserId} = useContext(QContext); if (localStorage.getItem(tableVariantLocalStorageKey)) { @@ -796,13 +796,37 @@ function RecordView({table, launchProcess}: Props): JSX.Element *******************************************************************************/ const renderShareButton = () => { - if (tableMetaData && (tableMetaData.name == "savedReport" || tableMetaData.name == "savedView")) // todo - not just based on name + if (tableMetaData && tableMetaData.shareableTableMetaData) { - const shareDisabled = false; // todo - only share if you're the owner? or do that in the modal? - return ( - openShareModal()} fullWidth startIcon={share} disabled={shareDisabled}> - Share - + let shareDisabled = true; + let disabledTooltipText = ""; + if(tableMetaData.shareableTableMetaData.thisTableOwnerIdFieldName && record) + { + const ownerId = record.values.get(tableMetaData.shareableTableMetaData.thisTableOwnerIdFieldName); + if(ownerId != currentUserId) + { + disabledTooltipText = `Only the owner of a ${tableMetaData.label} may share it.` + shareDisabled = true; + } + else + { + disabledTooltipText = ""; + shareDisabled = false; + } + } + else + { + shareDisabled = false; + } + + return ( + + + openShareModal()} fullWidth startIcon={group_add} disabled={shareDisabled}> + Share + + + ); }