diff --git a/packages/client/src/components/FilesPanels/index.js b/packages/client/src/components/FilesPanels/index.js index c35055a425..62d577452b 100644 --- a/packages/client/src/components/FilesPanels/index.js +++ b/packages/client/src/components/FilesPanels/index.js @@ -29,6 +29,7 @@ import { DeleteLinkDialog, RoomSharingDialog, MoveToPublicRoom, + BackupToPublicRoom, SettingsPluginDialog, PluginDialog, DeletePluginDialog, @@ -82,6 +83,7 @@ const Panels = (props) => { embeddingPanelIsVisible, roomSharingPanelVisible, moveToPublicRoomVisible, + backupToPublicRoomVisible, settingsPluginDialogVisible, pluginDialogVisible, leaveRoomDialogVisible, @@ -190,6 +192,9 @@ const Panels = (props) => { moveToPublicRoomVisible && ( ), + backupToPublicRoomVisible && ( + + ), leaveRoomDialogVisible && , changeRoomOwnerIsVisible && ( @@ -244,6 +249,7 @@ export default inject( embeddingPanelIsVisible, roomSharingPanelVisible, moveToPublicRoomVisible, + backupToPublicRoomVisible, leaveRoomDialogVisible, changeRoomOwnerIsVisible, } = dialogsStore; @@ -300,6 +306,7 @@ export default inject( embeddingPanelIsVisible, roomSharingPanelVisible, moveToPublicRoomVisible, + backupToPublicRoomVisible, settingsPluginDialogVisible, pluginDialogVisible, leaveRoomDialogVisible, diff --git a/packages/client/src/components/FilesSelector/index.tsx b/packages/client/src/components/FilesSelector/index.tsx index 1f84796d09..b5248e85e3 100644 --- a/packages/client/src/components/FilesSelector/index.tsx +++ b/packages/client/src/components/FilesSelector/index.tsx @@ -96,12 +96,14 @@ const FilesSelector = ({ socketHelper, socketSubscribers, setMoveToPublicRoomVisible, + setBackupToPublicRoomVisible, setInfoPanelIsMobileHidden, currentDeviceType, embedded, withHeader, getIcon, + isRoomBackup, }: FilesSelectorProps) => { const { t } = useTranslation(["Files", "Common", "Translations"]); @@ -437,6 +439,16 @@ const FilesSelector = ({ toastr.error(t("Common:ErrorEmptyList")); } } else { + if (isRoomBackup && isPublic) { + setBackupToPublicRoomVisible(true, { + selectedItemId, + breadCrumbs, + onSelectFolder, + onClose, + }); + + return; + } //setIsRequestRunning(true); //onSetNewFolderPath && onSetNewFolderPath(breadCrumbs); onSelectFolder && onSelectFolder(selectedItemId, breadCrumbs); @@ -631,6 +643,7 @@ export default inject( isFolderActions, setIsFolderActions, setMoveToPublicRoomVisible, + setBackupToPublicRoomVisible, } = dialogsStore; const { setIsMobileHidden: setInfoPanelIsMobileHidden } = @@ -716,6 +729,7 @@ export default inject( socketHelper, socketSubscribers: socketSubscribesId, setMoveToPublicRoomVisible, + setBackupToPublicRoomVisible, currentDeviceType, getIcon, }; diff --git a/packages/client/src/components/FilesSelectorInput/index.js b/packages/client/src/components/FilesSelectorInput/index.js index 30a17d533a..fd5d4b762f 100644 --- a/packages/client/src/components/FilesSelectorInput/index.js +++ b/packages/client/src/components/FilesSelectorInput/index.js @@ -29,6 +29,7 @@ const FilesSelectorInput = (props) => { descriptionText, className, isSelect, + isRoomBackup, } = props; const isFilesSelection = !!filterParam; @@ -87,6 +88,7 @@ const FilesSelectorInput = (props) => { /> { + const { visible, setIsVisible, backupToPublicRoomData } = props; + const { t, ready } = useTranslation(["Files", "Common"]); + + useEffect(() => { + document.addEventListener("keyup", onKeyUp, false); + + return () => { + document.removeEventListener("keyup", onKeyUp, false); + }; + }, []); + + const onKeyUp = (e) => { + if (e.keyCode === 27) onClose(); + if (e.keyCode === 13 || e.which === 13) onMoveTo(); + }; + + const onClose = () => { + setIsVisible(false); + }; + + const onBackupTo = () => { + const { + selectedItemId, + breadCrumbs, + onSelectFolder, + onClose: onCloseAction, + } = backupToPublicRoomData; + + onSelectFolder && onSelectFolder(selectedItemId, breadCrumbs); + + onClose(); + onCloseAction(); + }; + + return ( + + {t("Common:SaveToPublicRoom")} + +
+ {t("Files:MoveToPublicRoom")} +
+
+ +