From 668e725dc532674580aeb305b48b996463835858 Mon Sep 17 00:00:00 2001 From: AlexisG <merkkur39@gmail.com> Date: Thu, 30 Jan 2025 15:16:39 +0100 Subject: [PATCH 1/4] fix: The edit button must be displayed for OO shares with write access --- src/modules/views/OnlyOffice/Toolbar/index.jsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/modules/views/OnlyOffice/Toolbar/index.jsx b/src/modules/views/OnlyOffice/Toolbar/index.jsx index d86f71a819..c696a17832 100644 --- a/src/modules/views/OnlyOffice/Toolbar/index.jsx +++ b/src/modules/views/OnlyOffice/Toolbar/index.jsx @@ -22,12 +22,14 @@ import HomeIcon from 'modules/views/OnlyOffice/Toolbar/HomeIcon' import HomeLinker from 'modules/views/OnlyOffice/Toolbar/HomeLinker' import Separator from 'modules/views/OnlyOffice/Toolbar/Separator' import Sharing from 'modules/views/OnlyOffice/Toolbar/Sharing' +import { isOfficeEditingEnabled } from 'modules/views/OnlyOffice/helpers' import { useFileWithPath } from 'modules/views/hooks' const Toolbar = ({ sharingInfos }) => { - const { isMobile } = useBreakpoints() + const { isMobile, isDesktop } = useBreakpoints() + const { isEditorReady, isReadOnly, isTrashed, fileId, isPublic } = + useOnlyOfficeContext() const { t } = useI18n() - const { fileId, isPublic, isEditorReady } = useOnlyOfficeContext() const { addSharingLink, syncSharingLink, @@ -65,6 +67,12 @@ const Toolbar = ({ sharingInfos }) => { isSharingShortcutCreated } ) + const showEditButton = + !isMobile && + isEditorReady && + !isReadOnly && + !isTrashed && + isOfficeEditingEnabled(isDesktop) return ( <> @@ -94,6 +102,7 @@ const Toolbar = ({ sharingInfos }) => { isSharingShortcutCreated={isSharingShortcutCreated} /> )} + {showEditButton && <EditButton />} {isPublic && ( <PublicToolbarMoreMenu files={[fileWithPath]} actions={actions} /> From d75d05b31752bc7b6efd79b14a6980a64ae3a691 Mon Sep 17 00:00:00 2001 From: AlexisG <merkkur39@gmail.com> Date: Thu, 30 Jan 2025 15:17:52 +0100 Subject: [PATCH 2/4] feat(OO): Use `isEditorModeView` instead `editorMode` --- src/modules/views/OnlyOffice/Toolbar/EditButton.jsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/modules/views/OnlyOffice/Toolbar/EditButton.jsx b/src/modules/views/OnlyOffice/Toolbar/EditButton.jsx index 7f1a38e422..5f4f8bbc4c 100644 --- a/src/modules/views/OnlyOffice/Toolbar/EditButton.jsx +++ b/src/modules/views/OnlyOffice/Toolbar/EditButton.jsx @@ -8,7 +8,6 @@ import LightbulbIcon from 'cozy-ui/transpiled/react/Icons/Lightbulb' import RenameIcon from 'cozy-ui/transpiled/react/Icons/Rename' import Tooltip from 'cozy-ui/transpiled/react/Tooltip' import Typography from 'cozy-ui/transpiled/react/Typography' -import useBreakpoints from 'cozy-ui/transpiled/react/providers/Breakpoints' import { useI18n } from 'cozy-ui/transpiled/react/providers/I18n' import { makeStyles } from 'cozy-ui/transpiled/react/styles' @@ -109,8 +108,7 @@ const EditButton = ({ openTooltip }) => { } const EditButtonWrapper = () => { - const { isMobile } = useBreakpoints() - const { editorMode } = useOnlyOfficeContext() + const { isEditorModeView } = useOnlyOfficeContext() const { data: settings, ...appSettingsQueryResult } = useQuery( getAppSettingQuery.definition, @@ -119,11 +117,7 @@ const EditButtonWrapper = () => { const hideOOEditTooltip = settings?.[0]?.hideOOEditTooltip const openTooltip = isQueryLoading(appSettingsQueryResult) ? false - : !hideOOEditTooltip && editorMode === 'view' && canWriteOfficeDocument() - - if (isMobile) { - return null - } + : !hideOOEditTooltip && isEditorModeView && canWriteOfficeDocument() return <EditButton openTooltip={openTooltip} /> } From f3d0511d04bee6998d778f19aacb9be68f45d953 Mon Sep 17 00:00:00 2001 From: AlexisG <merkkur39@gmail.com> Date: Thu, 30 Jan 2025 16:32:52 +0100 Subject: [PATCH 3/4] fix(OO): Hide `OpenSharingLinkButton` to Cozy to Cozy sharing And `SharingBannerPlugin` --- src/modules/views/OnlyOffice/Title.jsx | 12 +++++++++--- src/modules/views/OnlyOffice/Toolbar/index.jsx | 12 ++++++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/modules/views/OnlyOffice/Title.jsx b/src/modules/views/OnlyOffice/Title.jsx index 7ddd4869c9..f4d225f08c 100644 --- a/src/modules/views/OnlyOffice/Title.jsx +++ b/src/modules/views/OnlyOffice/Title.jsx @@ -1,4 +1,5 @@ import React from 'react' +import { useSearchParams } from 'react-router-dom' import { SharingBannerPlugin, OpenSharingLinkFabButton } from 'cozy-sharing' import { useSharingInfos } from 'cozy-sharing' @@ -20,6 +21,7 @@ const useStyles = makeStyles(theme => ({ })) const Title = () => { + const [searchParams] = useSearchParams(window.location.search) const { isMobile } = useBreakpoints() const { fileId, isPublic, isEditorModeView, isTrashed } = useOnlyOfficeContext() @@ -30,15 +32,19 @@ const Title = () => { // Check if the sharing shortcut has already been created (but not synced) const isShareAlreadyAdded = !loading && isSharingShortcutCreated // Check if you are sharing Cozy to Cozy (Link sharing is on the `/public` route) - const isPreview = window.location.pathname === '/preview' + const isCozyToCozySharing = window.location.pathname === '/preview' + // Check if you are sharing Cozy to Cozy synced (Also on the `/public` route) + const isCozyToCozySharingSynced = searchParams.has('username') // Show the sharing banner plugin only on shared links view and cozy to cozy sharing view(not added) const isSharingBannerPluginDisplayed = - isPublic && (!isShareAlreadyAdded || !isPreview) + isPublic && + (!isShareAlreadyAdded || !isCozyToCozySharing) && + !isCozyToCozySharingSynced const showDialogToolbar = isEditorModeView || !isMobile const isAddToMyCozyFabDisplayed = - isMobile && isPreview && !isShareAlreadyAdded + isMobile && isCozyToCozySharing && !isShareAlreadyAdded return ( <div style={{ zIndex: 'var(--zIndex-nav)' }}> diff --git a/src/modules/views/OnlyOffice/Toolbar/index.jsx b/src/modules/views/OnlyOffice/Toolbar/index.jsx index c696a17832..9c4ce172eb 100644 --- a/src/modules/views/OnlyOffice/Toolbar/index.jsx +++ b/src/modules/views/OnlyOffice/Toolbar/index.jsx @@ -1,4 +1,5 @@ import React from 'react' +import { useSearchParams } from 'react-router-dom' import { addToCozySharingLink, @@ -27,6 +28,7 @@ import { useFileWithPath } from 'modules/views/hooks' const Toolbar = ({ sharingInfos }) => { const { isMobile, isDesktop } = useBreakpoints() + const [searchParams] = useSearchParams(window.location.search) const { isEditorReady, isReadOnly, isTrashed, fileId, isPublic } = useOnlyOfficeContext() const { t } = useI18n() @@ -50,6 +52,8 @@ const Toolbar = ({ sharingInfos }) => { const isShareNotAdded = !loading && !isSharingShortcutCreated // Check if you are sharing Cozy to Cozy (Link sharing is on the `/public` route) const isCozyToCozySharing = window.location.pathname === '/preview' + // Check if you are sharing Cozy to Cozy synced (Also on the `/public` route) + const isCozyToCozySharingSynced = searchParams.has('username') // addSharingLink exists only in cozy to cozy sharing const link = isCozyToCozySharing ? addSharingLink : createCozyLink @@ -74,6 +78,9 @@ const Toolbar = ({ sharingInfos }) => { !isTrashed && isOfficeEditingEnabled(isDesktop) + const showSharingLinkButton = + isPublic && !isMobile && isShareNotAdded && !isCozyToCozySharingSynced + return ( <> <FilesRealTimeQueries /> @@ -96,15 +103,16 @@ const Toolbar = ({ sharingInfos }) => { )} <FileName fileWithPath={fileWithPath} isPublic={isPublic} /> </div> - {isPublic && !isMobile && isShareNotAdded && ( + {showSharingLinkButton && ( <OpenSharingLinkButton link={link} isSharingShortcutCreated={isSharingShortcutCreated} + variant={showEditButton ? 'secondary' : 'primary'} /> )} {showEditButton && <EditButton />} - {isPublic && ( + {isPublic && !isCozyToCozySharingSynced && ( <PublicToolbarMoreMenu files={[fileWithPath]} actions={actions} /> )} From f0eda8a1553ac165e189380cce1b15f3fd41c05b Mon Sep 17 00:00:00 2001 From: AlexisG <merkkur39@gmail.com> Date: Thu, 30 Jan 2025 16:35:11 +0100 Subject: [PATCH 4/4] fix(OO): Hide tooltip on Edit button Being in the public view, queries are not allowed, so the tooltip cannot save its hidden state when the user chooses it. --- src/modules/views/OnlyOffice/Toolbar/EditButton.jsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/modules/views/OnlyOffice/Toolbar/EditButton.jsx b/src/modules/views/OnlyOffice/Toolbar/EditButton.jsx index 5f4f8bbc4c..909d633ae5 100644 --- a/src/modules/views/OnlyOffice/Toolbar/EditButton.jsx +++ b/src/modules/views/OnlyOffice/Toolbar/EditButton.jsx @@ -107,7 +107,7 @@ const EditButton = ({ openTooltip }) => { ) } -const EditButtonWrapper = () => { +const EditButtonWithQuery = () => { const { isEditorModeView } = useOnlyOfficeContext() const { data: settings, ...appSettingsQueryResult } = useQuery( @@ -122,4 +122,14 @@ const EditButtonWrapper = () => { return <EditButton openTooltip={openTooltip} /> } +const EditButtonWrapper = () => { + const { isPublic } = useOnlyOfficeContext() + + if (isPublic) { + return <EditButtonWithQuery /> + } + + return <EditButton openTooltip={false} /> +} + export default EditButtonWrapper