From b953418881a31e96325da0a0087d464eba5832e6 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Tue, 8 Nov 2022 13:49:01 +0100 Subject: [PATCH] react to changes --- apps/remix-ide/src/app/files/dgitProvider.js | 17 +++------- .../workspace/src/lib/actions/payload.ts | 7 ++++ .../workspace/src/lib/actions/workspace.ts | 32 ++++++++++++++----- .../workspace/src/lib/reducers/workspace.ts | 15 +++++++++ .../workspace/src/lib/remix-ui-workspace.tsx | 2 +- 5 files changed, 52 insertions(+), 21 deletions(-) diff --git a/apps/remix-ide/src/app/files/dgitProvider.js b/apps/remix-ide/src/app/files/dgitProvider.js index a2ca32fdb5..58af2f7ea3 100644 --- a/apps/remix-ide/src/app/files/dgitProvider.js +++ b/apps/remix-ide/src/app/files/dgitProvider.js @@ -78,6 +78,7 @@ class DGitProvider extends Plugin { ...await this.getGitConfig(), defaultBranch: (input && input.branch) || 'main' }) + this.emit('init') } async status (cmd) { @@ -88,28 +89,19 @@ class DGitProvider extends Plugin { return status } - async add (cmd, refresh = true) { + async add (cmd) { await git.add({ ...await this.getGitConfig(), ...cmd }) - if (refresh) { - setTimeout(async () => { - await this.call('fileManager', 'refresh') - }, 1000) - } + this.emit('add') } - async rm (cmd, refresh = true) { + async rm (cmd) { await git.remove({ ...await this.getGitConfig(), ...cmd }) - if (refresh) { - setTimeout(async () => { - await this.call('fileManager', 'refresh') - }, 1000) - } } async checkout (cmd, refresh = true) { @@ -194,6 +186,7 @@ class DGitProvider extends Plugin { ...await this.getGitConfig(), ...cmd }) + this.emit('commit') return sha } catch (e) { throw new Error(e) diff --git a/libs/remix-ui/workspace/src/lib/actions/payload.ts b/libs/remix-ui/workspace/src/lib/actions/payload.ts index eeea274dc2..d53c66b21a 100644 --- a/libs/remix-ui/workspace/src/lib/actions/payload.ts +++ b/libs/remix-ui/workspace/src/lib/actions/payload.ts @@ -278,3 +278,10 @@ export const setCurrentWorkspaceCurrentBranch = (currentBranch?: string) => { payload: currentBranch } } + +export const setCurrentWorkspaceIsRepo = (isRepo: boolean) => { + return { + type: 'SET_CURRENT_WORKSPACE_IS_REPO', + payload: isRepo + } +} diff --git a/libs/remix-ui/workspace/src/lib/actions/workspace.ts b/libs/remix-ui/workspace/src/lib/actions/workspace.ts index 18ba6e7f56..d56bda9981 100644 --- a/libs/remix-ui/workspace/src/lib/actions/workspace.ts +++ b/libs/remix-ui/workspace/src/lib/actions/workspace.ts @@ -1,7 +1,7 @@ import React from 'react' import { bufferToHex, keccakFromString } from 'ethereumjs-util' import axios, { AxiosResponse } from 'axios' -import { addInputFieldSuccess, cloneRepositoryFailed, cloneRepositoryRequest, cloneRepositorySuccess, createWorkspaceError, createWorkspaceRequest, createWorkspaceSuccess, displayNotification, displayPopUp, fetchWorkspaceDirectoryError, fetchWorkspaceDirectoryRequest, fetchWorkspaceDirectorySuccess, hideNotification, setCurrentWorkspace, setCurrentWorkspaceBranches, setCurrentWorkspaceCurrentBranch, setDeleteWorkspace, setMode, setReadOnlyMode, setRenameWorkspace } from './payload' +import { addInputFieldSuccess, cloneRepositoryFailed, cloneRepositoryRequest, cloneRepositorySuccess, createWorkspaceError, createWorkspaceRequest, createWorkspaceSuccess, displayNotification, displayPopUp, fetchWorkspaceDirectoryError, fetchWorkspaceDirectoryRequest, fetchWorkspaceDirectorySuccess, hideNotification, setCurrentWorkspace, setCurrentWorkspaceBranches, setCurrentWorkspaceCurrentBranch, setDeleteWorkspace, setMode, setReadOnlyMode, setRenameWorkspace, setCurrentWorkspaceIsRepo } from './payload' import { addSlash, checkSlash, checkSpecialChars } from '@remix-ui/helper' import { JSONStandardInput, WorkspaceTemplate } from '../types' @@ -27,11 +27,19 @@ export const setPlugin = (filePanelPlugin, reducerDispatch) => { plugin = filePanelPlugin dispatch = reducerDispatch plugin.on('dGitProvider', 'checkout', async () => { - const currentBranch = await plugin.call('dGitProvider', 'currentbranch') - dispatch(setCurrentWorkspaceCurrentBranch(currentBranch)) + await checkGit() + }) + plugin.on('dGitProvider', 'init', async () => { + await checkGit() + }) + plugin.on('dGitProvider', 'add', async () => { + await checkGit() + }) + plugin.on('dGitProvider', 'commit', async () => { + await checkGit() }) plugin.on('dGitProvider', 'branch', async () => { - await refreshBranches() + await checkGit() }) } @@ -100,10 +108,10 @@ export const createWorkspace = async (workspaceName: string, workspaceTemplateNa worktreeStatus ? plugin.call('dGitProvider', 'add', { filepath: removeSlash(filepath), - }, false) + }) : plugin.call('dGitProvider', 'rm', { filepath: removeSlash(filepath), - }, false) + }) ) ).then(async () => { await plugin.call('dGitProvider', 'commit', { @@ -461,6 +469,16 @@ export const cloneRepository = async (url: string) => { } } + +export const checkGit = async () => { + const isGitRepo = await plugin.fileManager.isGitRepo() + dispatch(setCurrentWorkspaceIsRepo(isGitRepo)) + await refreshBranches() + const currentBranch = await plugin.call('dGitProvider', 'currentbranch') + dispatch(setCurrentWorkspaceCurrentBranch(currentBranch)) +} + + export const getRepositoryTitle = async (url: string) => { const urlArray = url.split('/') let name = urlArray.length > 0 ? urlArray[urlArray.length - 1] : '' @@ -486,7 +504,6 @@ export const getGitRepoBranches = async (workspacePath: string) => { dir: addSlash(workspacePath) } const branches: { remote: any; name: string; }[] = await plugin.call('dGitProvider', 'branches', { ...gitConfig }) - return branches } @@ -496,7 +513,6 @@ export const getGitRepoCurrentBranch = async (workspaceName: string) => { dir: addSlash(workspaceName) } const currentBranch: string = await plugin.call('dGitProvider', 'currentbranch', { ...gitConfig }) - return currentBranch } diff --git a/libs/remix-ui/workspace/src/lib/reducers/workspace.ts b/libs/remix-ui/workspace/src/lib/reducers/workspace.ts index b90058d744..81da051e2b 100644 --- a/libs/remix-ui/workspace/src/lib/reducers/workspace.ts +++ b/libs/remix-ui/workspace/src/lib/reducers/workspace.ts @@ -703,6 +703,21 @@ export const browserReducer = (state = browserInitialState, action: Action) => { } } + case 'SET_CURRENT_WORKSPACE_IS_REPO': { + const payload: boolean = action.payload + + return { + ...state, + browser: { + ...state.browser, + workspaces: state.browser.workspaces.map((workspace) => { + if (workspace.name === state.browser.currentWorkspace) workspace.isGitRepo = payload + return workspace + }) + } + } + } + default: throw new Error() } 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 3ebd0476c5..81ee7d809e 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -697,7 +697,7 @@ export function Workspace () { { selectedWorkspace && -
+
GIT