diff --git a/react/Viewer/Panel/ActionMenuWrapper.jsx b/react/Viewer/Panel/ActionMenuWrapper.jsx index a69b5c7368..3869e2ad5b 100644 --- a/react/Viewer/Panel/ActionMenuWrapper.jsx +++ b/react/Viewer/Panel/ActionMenuWrapper.jsx @@ -5,7 +5,7 @@ import { useAppLinkWithStoreFallback, useClient } from 'cozy-client' import useBreakpoints from '../../providers/Breakpoints' import { useI18n } from '../../providers/I18n' -import useViewerSnackbar from '../providers/ViewerSnackbarProvider' +import { useAlert } from '../../providers/Alert' import { buildEditAttributePath, isEditableAttribute, @@ -22,7 +22,7 @@ const ActionMenuWrapper = forwardRef(({ onClose, file, optionFile }, ref) => { const editPathByModelProps = useActionMenuContext() const { isMobile } = useBreakpoints() const { t } = useI18n() - const { showViewerSnackbar } = useViewerSnackbar() + const { showAlert } = useAlert() const client = useClient() const currentModel = getCurrentModel(name) @@ -42,12 +42,19 @@ const ActionMenuWrapper = forwardRef(({ onClose, file, optionFile }, ref) => { const handleCopy = async () => { try { await navigator.clipboard.writeText(value) - showViewerSnackbar( - 'success', - t(`Viewer.snackbar.copiedToClipboard.success`) - ) + showAlert({ + message: t(`Viewer.snackbar.copiedToClipboard.success`), + severity: 'success', + variant: 'filled', + icon: false + }) } catch (error) { - showViewerSnackbar('error', t(`Viewer.snackbar.copiedToClipboard.error`)) + showAlert({ + message: t(`Viewer.snackbar.copiedToClipboard.error`), + severity: 'error', + variant: 'filled', + icon: false + }) } onClose() } diff --git a/react/Viewer/ViewerContainer.jsx b/react/Viewer/ViewerContainer.jsx index e26761ffaa..a9dd146166 100644 --- a/react/Viewer/ViewerContainer.jsx +++ b/react/Viewer/ViewerContainer.jsx @@ -12,8 +12,7 @@ import { isValidForPanel } from './helpers' import Viewer from './Viewer' import ViewerInformationsWrapper from './ViewerInformationsWrapper' import EncryptedProvider from './providers/EncryptedProvider' -import { ViewerSnackbarProvider } from './providers/ViewerSnackbarProvider' -import ViewerSnackbar from './snackbar/ViewerSnackbar' +import AlertProvider from '../providers/Alert' import { ActionMenuProvider } from './providers/ActionMenuProvider' import styles from './styles.styl' @@ -49,7 +48,7 @@ const ViewerContainer = props => { } return ( - +
{ {children}
-
-
+ ) } diff --git a/react/Viewer/ViewersByFile/PdfMobileViewer.jsx b/react/Viewer/ViewersByFile/PdfMobileViewer.jsx index 4ad5d93927..0329f6f0ae 100644 --- a/react/Viewer/ViewersByFile/PdfMobileViewer.jsx +++ b/react/Viewer/ViewersByFile/PdfMobileViewer.jsx @@ -39,6 +39,7 @@ export const PdfMobileViewer = ({ file, url, t, gestures }) => { showAlert({ message: t('Viewer.error.generic'), severity: 'error', + variant: 'filled', icon: false }) } diff --git a/react/Viewer/providers/ViewerSnackbarProvider.jsx b/react/Viewer/providers/ViewerSnackbarProvider.jsx deleted file mode 100644 index 9fe91f2689..0000000000 --- a/react/Viewer/providers/ViewerSnackbarProvider.jsx +++ /dev/null @@ -1,64 +0,0 @@ -import React, { createContext, useContext, useState } from 'react' - -/** - * @typedef {('primary'|'secondary'|'success'|'error'|'warning'|'info')} enumSeverity - */ -/** - * @typedef {object} useViewerSnackbarReturn - * @property {boolean} isViewerSnackbarOpen - * @property {string} viewerSnackbarMessage - * @property {enumSeverity} viewerSnackbarSeverity - * @property {(severity: enumSeverity, message: string) => void} showViewerSnackbar - * @property {(message: string) => void} hideViewerSnackbar - */ - -const ViewerSnackbarContext = createContext() - -const ViewerSnackbarProvider = ({ children }) => { - const [isViewerSnackbarOpen, setIsViewerSnackbarOpen] = useState(false) - const [viewerSnackbarMessage, setViewerSnackbarMessage] = useState('') - const [viewerSnackbarSeverity, setViewerSnackbarSeverity] = useState( - 'primary' - ) - - const showViewerSnackbar = (severity, message) => { - setIsViewerSnackbarOpen(true) - setViewerSnackbarMessage(message) - setViewerSnackbarSeverity(severity) - } - const hideViewerSnackbar = () => { - setIsViewerSnackbarOpen(false) - } - - const result = { - isViewerSnackbarOpen, - viewerSnackbarMessage, - viewerSnackbarSeverity, - showViewerSnackbar, - hideViewerSnackbar - } - - return ( - - {children} - - ) -} - -/** - * @returns {useViewerSnackbarReturn} - */ -const useViewerSnackbar = () => { - const viewerSnackbar = useContext(ViewerSnackbarContext) - if (!viewerSnackbar) { - throw new Error( - 'ViewerSnackbarContext must be used within a ViewerSnackbarProvider' - ) - } - - return viewerSnackbar -} - -export default useViewerSnackbar - -export { ViewerSnackbarProvider } diff --git a/react/Viewer/snackbar/ViewerSnackbar.jsx b/react/Viewer/snackbar/ViewerSnackbar.jsx deleted file mode 100644 index a850e4f918..0000000000 --- a/react/Viewer/snackbar/ViewerSnackbar.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react' - -import Snackbar from '../../Snackbar' -import Alert from '../../Alert' -import useViewerSnackbar from '../providers/ViewerSnackbarProvider' - -const ViewerSnackbar = () => { - const { - isViewerSnackbarOpen, - viewerSnackbarMessage, - viewerSnackbarSeverity, - hideViewerSnackbar - } = useViewerSnackbar() - - return ( - - - {viewerSnackbarMessage} - - - ) -} - -export default ViewerSnackbar