Skip to content

Commit

Permalink
feat(OnlyOffice): Disable mobile editing
Browse files Browse the repository at this point in the history
This feature is behind the flag
  • Loading branch information
cballevre committed Mar 22, 2023
1 parent 415e17a commit aa265ce
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 13 deletions.
6 changes: 3 additions & 3 deletions src/drive/web/modules/drive/AddMenu/AddMenu.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import CreateShortcut from 'drive/web/modules/drive/Toolbar/components/CreateSho
import UploadItem from 'drive/web/modules/drive/Toolbar/components/UploadItem'
import StartScanner from 'drive/web/modules/drive/Toolbar/components/StartScanner'
import CreateOnlyOfficeItem from 'drive/web/modules/drive/Toolbar/components/CreateOnlyOfficeItem'
import { isOfficeEnabled } from 'drive/web/modules/views/OnlyOffice/helpers'
import { isOfficeEditingEnabled } from 'drive/web/modules/views/OnlyOffice/helpers'
import flag from 'cozy-flags'

export const ActionMenuContent = ({
Expand All @@ -25,7 +25,7 @@ export const ActionMenuContent = ({
isEncryptedFolder
}) => {
const { t } = useI18n()
const { isMobile } = useBreakpoints()
const { isMobile, isDesktop } = useBreakpoints()

return (
<>
Expand All @@ -42,7 +42,7 @@ export const ActionMenuContent = ({
<AddEncryptedFolderItem />
)}
{!isPublic && !isEncryptedFolder && <CreateNoteItem />}
{canUpload && isOfficeEnabled() && !isEncryptedFolder && (
{canUpload && isOfficeEditingEnabled(isDesktop) && !isEncryptedFolder && (
<>
<CreateOnlyOfficeItem fileClass="text" />
<CreateOnlyOfficeItem fileClass="spreadsheet" />
Expand Down
29 changes: 23 additions & 6 deletions src/drive/web/modules/views/OnlyOffice/Editor.spec.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ import useBreakpoints from 'cozy-ui/transpiled/react/hooks/useBreakpoints'
import AppLike from 'test/components/AppLike'
import { officeDocParam } from 'test/data'

import { isOfficeEnabled } from 'drive/web/modules/views/OnlyOffice/helpers'
import {
isOfficeEnabled,
isOfficeEditingEnabled
} from 'drive/web/modules/views/OnlyOffice/helpers'
import { OnlyOfficeContext } from 'drive/web/modules/views/OnlyOffice'
import Editor from 'drive/web/modules/views/OnlyOffice/Editor'

Expand All @@ -20,7 +23,8 @@ jest.mock('cozy-client/dist/hooks/useFetchJSON', () => ({

jest.mock('drive/web/modules/views/OnlyOffice/helpers', () => ({
...jest.requireActual('drive/web/modules/views/OnlyOffice/helpers'),
isOfficeEnabled: jest.fn()
isOfficeEnabled: jest.fn(),
isOfficeEditingEnabled: jest.fn()
}))

jest.mock('cozy-ui/transpiled/react/hooks/useBreakpoints', () => ({
Expand Down Expand Up @@ -217,7 +221,20 @@ describe('Editor', () => {
data: officeDocParam
})
useQuery.mockReturnValue(officeDocParam)
isOfficeEnabled.mockReturnValue(true)
isOfficeEditingEnabled.mockReturnValue(true)

setup({ isMobile: true })

expect(screen.queryByLabelText('Edit')).toBeTruthy()
})

it('should show the readOnlyFab', () => {
useFetchJSON.mockReturnValue({
fetchStatus: 'loaded',
data: officeDocParam
})
useQuery.mockReturnValue(officeDocParam)
isOfficeEditingEnabled.mockReturnValue(true)

setup({ isMobile: true })

Expand All @@ -232,7 +249,7 @@ describe('Editor', () => {
data: officeDocParam
})
useQuery.mockReturnValue(officeDocParam)
isOfficeEnabled.mockReturnValue(true)
isOfficeEditingEnabled.mockReturnValue(true)

setup({ isMobile: false })

Expand All @@ -245,7 +262,7 @@ describe('Editor', () => {
data: officeDocParam
})
useQuery.mockReturnValue(officeDocParam)
isOfficeEnabled.mockReturnValue(true)
isOfficeEditingEnabled.mockReturnValue(true)

setup({ isMobile: false, isEditorModeView: false })

Expand All @@ -258,7 +275,7 @@ describe('Editor', () => {
data: officeDocParam
})
useQuery.mockReturnValue(officeDocParam)
isOfficeEnabled.mockReturnValue(true)
isOfficeEditingEnabled.mockReturnValue(true)

setup({
isMobile: true,
Expand Down
8 changes: 6 additions & 2 deletions src/drive/web/modules/views/OnlyOffice/View.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import Spinner from 'cozy-ui/transpiled/react/Spinner'
import Error from 'drive/web/modules/views/OnlyOffice/Error'
import { OnlyOfficeContext } from 'drive/web/modules/views/OnlyOffice'
import ReadOnlyFab from 'drive/web/modules/views/OnlyOffice/ReadOnlyFab'
import { isOfficeEditingEnabled } from 'drive/web/modules/views/OnlyOffice/helpers'
import { FRAME_EDITOR_NAME } from 'drive/web/modules/views/OnlyOffice/config'

const forceIframeHeight = value => {
Expand All @@ -19,7 +20,7 @@ const View = ({ id, apiUrl, docEditorConfig }) => {

const { isEditorReady, isReadOnly, isEditorModeView } =
useContext(OnlyOfficeContext)
const { isMobile } = useBreakpoints()
const { isMobile, isDesktop } = useBreakpoints()

const initEditor = useCallback(() => {
new window.DocsAPI.DocEditor('onlyOfficeEditor', docEditorConfig)
Expand Down Expand Up @@ -53,7 +54,10 @@ const View = ({ id, apiUrl, docEditorConfig }) => {
}, [isEditorReady])

const showReadOnlyFab =
isEditorReady && !isReadOnly && (isMobile || isEditorModeView)
isEditorReady &&
!isReadOnly &&
isOfficeEditingEnabled(isDesktop) &&
(isMobile || isEditorModeView)

if (isError) return <Error />

Expand Down
19 changes: 18 additions & 1 deletion src/drive/web/modules/views/OnlyOffice/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,31 @@ export function redirectToOnlyOfficePaywall(nextState, replace) {
}
}

export function onlyOfficeDefaultMode() {
export function onlyOfficeDefaultMode(isDesktop) {
const office = flag('drive.office')

if (!isDesktop && flag('drive.office.disableMobileEditing')) {
return 'view'
}

if (office && office.write && office.onlyOffice) {
return office.onlyOffice.defaultMode
}
return 'view'
}

export const isOfficeEditingEnabled = isDesktop => {
if (!isOfficeEnabled()) {
return false
}

if (!isDesktop && flag('drive.office.disableMobileEditing')) {
return false
}

return true
}

export const makeOnlyOfficeFileRoute = (file, isWithRouter) =>
isWithRouter ? `/onlyoffice/${file.id}` : `/#/onlyoffice/${file.id}`

Expand Down
4 changes: 3 additions & 1 deletion src/drive/web/modules/views/OnlyOffice/index.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React, { createContext, useState, useMemo, useEffect } from 'react'

import Dialog from 'cozy-ui/transpiled/react/Dialog'
import useBreakpoints from 'cozy-ui/transpiled/react/hooks/useBreakpoints'

import { useRouter } from 'drive/lib/RouterContext'
import Editor from 'drive/web/modules/views/OnlyOffice/Editor'
Expand All @@ -19,10 +20,11 @@ const OnlyOfficeProvider = ({
children
}) => {
const { router } = useRouter()
const { isDesktop } = useBreakpoints()

const [isEditorReady, setIsEditorReady] = useState(false)

const [editorMode, setEditorMode] = useState(onlyOfficeDefaultMode())
const [editorMode, setEditorMode] = useState(onlyOfficeDefaultMode(isDesktop))
const isEditorModeView = useMemo(() => {
return editorMode === 'view'
}, [editorMode])
Expand Down

0 comments on commit aa265ce

Please sign in to comment.