diff --git a/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.tsx b/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.tsx index 76c365c3b4..d897986f10 100644 --- a/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.tsx +++ b/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.tsx @@ -176,13 +176,6 @@ export const RemixUiHomeTab = (props: RemixUiHomeTabProps) => { plugin.verticalIcons.select('pluginManager') } - const restoreBackupZip = async () => { - await plugin.appManager.activatePlugin(['restorebackupzip']) - await plugin.call('mainPanel', 'showContent', 'restorebackupzip') - plugin.verticalIcons.select('restorebackupzip') - _paq.push(['trackEvent', 'pluginManager', 'userActivate', 'restorebackupzip']) - } - const showFullMessage = (title: string, loadItem: string, examples: Array) => { setState(prevState => { return { ...prevState, showModalDialog: true, modalInfo: { title: title, loadItem: loadItem, examples: examples } } @@ -295,10 +288,6 @@ export const RemixUiHomeTab = (props: RemixUiHomeTabProps) => {

-

- - -

diff --git a/libs/remix-ui/workspace/src/lib/actions/index.ts b/libs/remix-ui/workspace/src/lib/actions/index.ts index ed1b47ce39..001c66b558 100644 --- a/libs/remix-ui/workspace/src/lib/actions/index.ts +++ b/libs/remix-ui/workspace/src/lib/actions/index.ts @@ -297,6 +297,12 @@ export const handleDownloadFiles = async () => { } } +export const restoreBackupZip = async () => { + await plugin.appManager.activatePlugin(['restorebackupzip']) + plugin.verticalIcons.select('restorebackupzip') + _paq.push(['trackEvent', 'pluginManager', 'userActivate', 'restorebackupzip']) +} + const packageGistFiles = async (directory) => { const workspaceProvider = plugin.fileProviders.workspace const isFile = await workspaceProvider.isFile(directory) diff --git a/libs/remix-ui/workspace/src/lib/contexts/index.ts b/libs/remix-ui/workspace/src/lib/contexts/index.ts index cb0d3a758b..b5daf01cc9 100644 --- a/libs/remix-ui/workspace/src/lib/contexts/index.ts +++ b/libs/remix-ui/workspace/src/lib/contexts/index.ts @@ -28,5 +28,6 @@ export const FileSystemContext = createContext<{ dispatchEmitContextMenuEvent: (cmd: customAction) => Promise, dispatchHandleClickFile: (path: string, type: 'file' | 'folder' | 'gist') => Promise dispatchHandleExpandPath: (paths: string[]) => Promise, - dispatchHandleDownloadFiles: () => Promise + dispatchHandleDownloadFiles: () => Promise, + dispatchHandleRestoreBackup: () => Promise }>(null) diff --git a/libs/remix-ui/workspace/src/lib/providers/FileSystemProvider.tsx b/libs/remix-ui/workspace/src/lib/providers/FileSystemProvider.tsx index 3803e34c14..cb4d4ce864 100644 --- a/libs/remix-ui/workspace/src/lib/providers/FileSystemProvider.tsx +++ b/libs/remix-ui/workspace/src/lib/providers/FileSystemProvider.tsx @@ -5,7 +5,7 @@ import { Toaster } from '@remix-ui/toaster' // eslint-disable-line // eslint-disable-next-line @typescript-eslint/no-unused-vars import { FileSystemContext } from '../contexts' import { browserReducer, browserInitialState } from '../reducers/workspace' -import { initWorkspace, fetchDirectory, removeInputField, deleteWorkspace, clearPopUp, publishToGist, createNewFile, setFocusElement, createNewFolder, deletePath, renamePath, copyFile, copyFolder, runScript, emitContextMenuEvent, handleClickFile, handleExpandPath, addInputField, createWorkspace, fetchWorkspaceDirectory, renameWorkspace, switchToWorkspace, uploadFile, handleDownloadFiles } from '../actions' +import { initWorkspace, fetchDirectory, removeInputField, deleteWorkspace, clearPopUp, publishToGist, createNewFile, setFocusElement, createNewFolder, deletePath, renamePath, copyFile, copyFolder, runScript, emitContextMenuEvent, handleClickFile, handleExpandPath, addInputField, createWorkspace, fetchWorkspaceDirectory, renameWorkspace, switchToWorkspace, uploadFile, handleDownloadFiles, restoreBackupZip } from '../actions' import { Modal, WorkspaceProps } from '../types' // eslint-disable-next-line @typescript-eslint/no-unused-vars import { Workspace } from '../remix-ui-workspace' @@ -119,6 +119,10 @@ export const FileSystemProvider = (props: WorkspaceProps) => { await handleDownloadFiles() } + const dispatchHandleRestoreBackup = async () => { + await restoreBackupZip() + } + useEffect(() => { dispatchInitWorkspace() }, []) @@ -219,7 +223,8 @@ export const FileSystemProvider = (props: WorkspaceProps) => { dispatchEmitContextMenuEvent, dispatchHandleClickFile, dispatchHandleExpandPath, - dispatchHandleDownloadFiles + dispatchHandleDownloadFiles, + dispatchHandleRestoreBackup } return ( diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index 11eec79c16..ceb4c08b07 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -58,6 +58,14 @@ export function Workspace () { } } + const restoreBackup = async () => { + try { + await global.dispatchHandleRestoreBackup() + } catch (e) { + console.error(e) + } + } + const onFinishRenameWorkspace = async () => { if (workspaceRenameInput.current === undefined) return // @ts-ignore: Object is possibly 'null'. @@ -178,6 +186,16 @@ export function Workspace () { className='far fa-download remixui_menuicon' title='Download Workspaces'> + { + e.stopPropagation() + restoreBackup() + }} + className='far fa-upload remixui_menuicon' + title='Restore Workspaces Backup'> +