diff --git a/libs/remix-ui/workspace/src/lib/actions/index.ts b/libs/remix-ui/workspace/src/lib/actions/index.ts index 12f178348c..e7fa5d95d3 100644 --- a/libs/remix-ui/workspace/src/lib/actions/index.ts +++ b/libs/remix-ui/workspace/src/lib/actions/index.ts @@ -267,6 +267,10 @@ export const runScriptWithMocha = async (path: string) => { }) } +export const runAfterCompilation = async (path: string) => { + plugin.call('config', 'setAppParameter', 'live-script', path) +} + export const emitContextMenuEvent = async (cmd: customAction) => { await plugin.call(cmd.id, cmd.name, cmd) } diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer-context-menu.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer-context-menu.tsx index b9bad4b170..178ea89b1e 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer-context-menu.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer-context-menu.tsx @@ -12,7 +12,7 @@ declare global { const _paq = window._paq = window._paq || [] //eslint-disable-line export const FileExplorerContextMenu = (props: FileExplorerContextMenuProps) => { - const { actions, createNewFile, createNewFolder, deletePath, renamePath, hideContextMenu, pushChangesToGist, publishFileToGist, publishFolderToGist, copy, paste, runScript, runScriptWithMocha, emit, pageX, pageY, path, type, focus, ...otherProps } = props + const { actions, createNewFile, createNewFolder, deletePath, renamePath, hideContextMenu, pushChangesToGist, publishFileToGist, publishFolderToGist, copy, paste, runScript, runScriptWithMocha, runAfterCompilation, emit, pageX, pageY, path, type, focus, ...otherProps } = props const contextMenuRef = useRef(null) useEffect(() => { contextMenuRef.current.focus() @@ -102,6 +102,10 @@ export const FileExplorerContextMenu = (props: FileExplorerContextMenuProps) => _paq.push(['trackEvent', 'fileExplorer', 'runScriptWithMocha']) runScriptWithMocha(path) break + case 'Run after compilation': + _paq.push(['trackEvent', 'fileExplorer', 'runAfterCompilation']) + runAfterCompilation(path) + break case 'Copy': copy(path, type) break diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx index d5c0fa8f75..2ae2a7bbe8 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx @@ -229,6 +229,14 @@ export const FileExplorer = (props: FileExplorerProps) => { } } + const runAfterCompilation = async (path: string) => { + try { + props.dispatchRunAfterCompilation(path) + } catch (error) { + props.toast('Run script with Mocha failed') + } + } + const emitContextMenuEvent = (cmd: customAction) => { try { props.dispatchEmitContextMenuEvent(cmd) @@ -463,6 +471,7 @@ export const FileExplorer = (props: FileExplorerProps) => { renamePath={editModeOn} runScript={runScript} runScriptWithMocha={runScriptWithMocha} + runAfterCompilation={runAfterCompilation} copy={handleCopyClick} paste={handlePasteClick} emit={emitContextMenuEvent} diff --git a/libs/remix-ui/workspace/src/lib/contexts/index.ts b/libs/remix-ui/workspace/src/lib/contexts/index.ts index 20c9b46633..0f906fa22d 100644 --- a/libs/remix-ui/workspace/src/lib/contexts/index.ts +++ b/libs/remix-ui/workspace/src/lib/contexts/index.ts @@ -26,6 +26,7 @@ export const FileSystemContext = createContext<{ dispatchCopyFolder: (src: string, dest: string) => Promise, dispatchRunScript: (path: string) => Promise, dispatchRunScriptWithMocha: (path: string) => Promise, + dispatchRunAfterCompilation: (path: string) => Promise, dispatchEmitContextMenuEvent: (cmd: customAction) => Promise, dispatchHandleClickFile: (path: string, type: 'file' | 'folder' | 'gist') => Promise dispatchHandleExpandPath: (paths: string[]) => Promise diff --git a/libs/remix-ui/workspace/src/lib/providers/FileSystemProvider.tsx b/libs/remix-ui/workspace/src/lib/providers/FileSystemProvider.tsx index 330270cf5e..349569497d 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, runScriptWithMocha, emitContextMenuEvent, handleClickFile, handleExpandPath, addInputField, createWorkspace, fetchWorkspaceDirectory, renameWorkspace, switchToWorkspace, uploadFile } from '../actions' +import { initWorkspace, fetchDirectory, removeInputField, deleteWorkspace, clearPopUp, publishToGist, createNewFile, setFocusElement, createNewFolder, deletePath, renamePath, copyFile, copyFolder, runScript, runScriptWithMocha, runAfterCompilation, emitContextMenuEvent, handleClickFile, handleExpandPath, addInputField, createWorkspace, fetchWorkspaceDirectory, renameWorkspace, switchToWorkspace, uploadFile } from '../actions' import { Modal, WorkspaceProps } from '../types' // eslint-disable-next-line @typescript-eslint/no-unused-vars import { Workspace } from '../remix-ui-workspace' @@ -107,6 +107,10 @@ export const FileSystemProvider = (props: WorkspaceProps) => { await runScriptWithMocha(path) } + const dispatchRunAfterCompilation = async (path: string) => { + await runAfterCompilation(path) + } + const dispatchEmitContextMenuEvent = async (cmd: customAction) => { await emitContextMenuEvent(cmd) } @@ -217,6 +221,7 @@ export const FileSystemProvider = (props: WorkspaceProps) => { dispatchCopyFolder, dispatchRunScript, dispatchRunScriptWithMocha, + dispatchRunAfterCompilation, dispatchEmitContextMenuEvent, dispatchHandleClickFile, dispatchHandleExpandPath 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 a5a84e1e1f..4fc082ff8a 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -199,6 +199,7 @@ export function Workspace () { dispatchPublishToGist={global.dispatchPublishToGist} dispatchRunScript={global.dispatchRunScript} dispatchRunScriptWithMocha={global.dispatchRunScriptWithMocha} + dispatchRunAfterCompilation={global.dispatchRunAfterCompilation} dispatchEmitContextMenuEvent={global.dispatchEmitContextMenuEvent} dispatchHandleClickFile={global.dispatchHandleClickFile} dispatchSetFocusElement={global.dispatchSetFocusElement} @@ -235,6 +236,7 @@ export function Workspace () { dispatchPublishToGist={global.dispatchPublishToGist} dispatchRunScript={global.dispatchRunScript} dispatchRunScriptWithMocha={global.dispatchRunScriptWithMocha} + dispatchRunAfterCompilation={global.dispatchRunAfterCompilation} dispatchEmitContextMenuEvent={global.dispatchEmitContextMenuEvent} dispatchHandleClickFile={global.dispatchHandleClickFile} dispatchSetFocusElement={global.dispatchSetFocusElement} diff --git a/libs/remix-ui/workspace/src/lib/types/index.ts b/libs/remix-ui/workspace/src/lib/types/index.ts index 0db43d51dc..8576ee9898 100644 --- a/libs/remix-ui/workspace/src/lib/types/index.ts +++ b/libs/remix-ui/workspace/src/lib/types/index.ts @@ -88,6 +88,7 @@ export interface FileExplorerProps { dispatchCopyFolder: (src: string, dest: string) => Promise, dispatchRunScript: (path: string) => Promise, dispatchRunScriptWithMocha: (path: string) => Promise, + dispatchRunAfterCompilation: (path: string) => Promise, dispatchPublishToGist: (path?: string, type?: string) => Promise, dispatchEmitContextMenuEvent: (cmd: customAction) => Promise, dispatchHandleClickFile: (path: string, type: 'file' | 'folder' | 'gist') => Promise, @@ -119,6 +120,7 @@ export interface FileExplorerContextMenuProps { publishFileToGist?: (path?: string, type?: string) => void, runScript?: (path: string) => void, runScriptWithMocha?: (path: string) => void, + runAfterCompilation?: (path: string) => void, emit?: (cmd: customAction) => void, pageX: number, pageY: number, diff --git a/libs/remix-ui/workspace/src/lib/utils/index.ts b/libs/remix-ui/workspace/src/lib/utils/index.ts index f2558c1b2c..00c7bdd4ed 100644 --- a/libs/remix-ui/workspace/src/lib/utils/index.ts +++ b/libs/remix-ui/workspace/src/lib/utils/index.ts @@ -36,6 +36,12 @@ export const contextMenuActions: MenuItems = [{ extension: ['.js'], multiselect: false, label: '' +}, { + id: 'runAfterCompilation', + name: 'Run after compilation', + extension: ['.js'], + multiselect: false, + label: '' }, { id: 'pushChangesToGist', name: 'Push changes to gist',