run builtin

pull/5370/head
Your Name 7 months ago
parent df712fbf40
commit e5dec03b88
  1. 20
      apps/remix-ide/src/app/files/dgitProvider.ts
  2. 2
      apps/remixdesktop/package.json
  3. 2
      apps/remixdesktop/run_ci_test.sh
  4. 6
      apps/remixdesktop/run_git_ui_isogit_tests.sh
  5. 15
      apps/remixdesktop/src/plugins/isoGitPlugin.ts
  6. 2
      apps/remixdesktop/test/tests/app/git-ui.test.ts
  7. 2
      apps/remixdesktop/test/tests/app/git-ui_2.test.ts
  8. 2
      apps/remixdesktop/test/tests/app/git-ui_3.test.ts
  9. 1
      apps/remixdesktop/test/tests/app/git.test.ts
  10. 18
      libs/remix-git/src/isogit.ts
  11. 3
      libs/remix-ui/git/src/components/gitui.tsx
  12. 10
      libs/remix-ui/git/src/components/panels/version.tsx
  13. 8
      libs/remix-ui/git/src/lib/listeners.ts
  14. 1
      libs/remix-ui/git/src/state/actions.ts
  15. 7
      libs/remix-ui/git/src/state/gitpayload.ts
  16. 412
      libs/remix-ui/git/src/state/gitreducer.tsx
  17. 4
      libs/remix-ui/git/src/types/index.ts

@ -339,21 +339,13 @@ class DGitProvider extends Plugin<any, CustomRemixApi> {
async clone(input: cloneInputType) { async clone(input: cloneInputType) {
if ((Registry.getInstance().get('platform').api.isDesktop())) { if ((Registry.getInstance().get('platform').api.isDesktop())) {
const folder = await this.call('fs', 'selectFolder', null, 'Select or create a folder to clone the repository in', 'Select as Repository Destination')
if (!folder) return false
const cmd = {
url: input.url,
singleBranch: input.singleBranch,
ref: input.branch,
depth: input.depth || 10,
dir: folder,
input
}
this.call('terminal', 'logHtml', `Cloning ${input.url}... please wait...`)
try { try {
const result = await this.call('isogit', 'clone', cmd) const folder = await this.call('fs', 'selectFolder', null, 'Select or create a folder to clone the repository in', 'Select as Repository Destination')
this.call('fs', 'openWindow', folder) if (!folder) return false
return result input.dir = folder
input.depth = input.depth || 10
const result = await this.call('isogit', 'clone', input)
this.call('fs' as any, 'openWindow', folder)
} catch (e) { } catch (e) {
this.call('notification', 'alert', { this.call('notification', 'alert', {
id: 'dgitAlert', id: 'dgitAlert',

@ -29,7 +29,7 @@
"installRipGrepMacOXarm64": "rm -rf node_modules/@vscode/ripgrep/bin && npm_config_arch=arm64 node node_modules/@vscode/ripgrep/lib/postinstall.js", "installRipGrepMacOXarm64": "rm -rf node_modules/@vscode/ripgrep/bin && npm_config_arch=arm64 node node_modules/@vscode/ripgrep/lib/postinstall.js",
"postinstall": "electron-builder install-app-deps", "postinstall": "electron-builder install-app-deps",
"test": "yarn run build:e2e && nightwatch --config build-e2e/remixdesktop/test/nighwatch.app.js", "test": "yarn run build:e2e && nightwatch --config build-e2e/remixdesktop/test/nighwatch.app.js",
"test:isogit": "yarn run test --useIsoGit --test build-e2e/remixdesktop/test/tests/app/git.test.js", "test:isogit": "yarn run test --useIsoGit",
"test:offline": "yarn run test --useOffline --test build-e2e/remixdesktop/test/tests/app/offline.test.js", "test:offline": "yarn run test --useOffline --test build-e2e/remixdesktop/test/tests/app/offline.test.js",
"build:e2e": "tsc -p tsconfig.e2e.json" "build:e2e": "tsc -p tsconfig.e2e.json"
}, },

@ -8,7 +8,7 @@ for TESTFILE in $TESTFILES; do
done done
if [ "$CIRCLE_NODE_INDEX" -eq 0 ]; then if [ "$CIRCLE_NODE_INDEX" -eq 0 ]; then
yarn test:isogit sh ./run_git_ui_isogit_tests.sh
elif [ "$CIRCLE_NODE_INDEX" -eq 1 ]; then elif [ "$CIRCLE_NODE_INDEX" -eq 1 ]; then
yarn test:offline yarn test:offline
fi fi

@ -0,0 +1,6 @@
#!/bin/bash
for testfile in build-e2e/remixdesktop/test/tests/app/git*.js
do
yarn test:isogit --test $testfile
done

@ -44,7 +44,7 @@ class IsoGitPluginClient extends ElectronBasePluginClient {
this.onload(async () => { this.onload(async () => {
this.on('fs' as any, 'workingDirChanged', async (path: string) => { this.on('fs' as any, 'workingDirChanged', async (path: string) => {
this.workingDir = path this.workingDir = path
this.gitIsInstalled = await gitProxy.version() ? true : false this.gitIsInstalled = await gitProxy.version() && !useIsoGit ? true : false
}) })
this.workingDir = await this.call('fs' as any, 'getWorkingDir') this.workingDir = await this.call('fs' as any, 'getWorkingDir')
this.gitIsInstalled = await gitProxy.version() && !useIsoGit ? true : false this.gitIsInstalled = await gitProxy.version() && !useIsoGit ? true : false
@ -52,7 +52,7 @@ class IsoGitPluginClient extends ElectronBasePluginClient {
} }
async version() { async version() {
return gitProxy.version() return this.gitIsInstalled? gitProxy.version(): 'built-in'
} }
async getGitConfig() { async getGitConfig() {
@ -266,23 +266,16 @@ class IsoGitPluginClient extends ElectronBasePluginClient {
if (this.gitIsInstalled) { if (this.gitIsInstalled) {
try { try {
this.call('terminal' as any, 'log', 'Cloning using git... please wait.')
await gitProxy.clone(cmd) await gitProxy.clone(cmd)
} catch (e) { } catch (e) {
throw e throw e
} }
} else { } else {
try { try {
/*
this.call('terminal' as any, 'log', 'Cloning using builtin git... please wait.') this.call('terminal' as any, 'log', 'Cloning using builtin git... please wait.')
const clone = await git.clone({ const clone = await isoGit.clone(cmd, await this.getGitConfig(), this)
...await this.getGitConfig(),
...cmd,
...parseInput(cmd.input),
dir: cmd.dir || this.workingDir
})
return clone return clone
*/
} catch (e) { } catch (e) {
console.log('CLONE ERROR', e) console.log('CLONE ERROR', e)
throw e throw e

@ -13,6 +13,7 @@ let gitserver: ChildProcess
const tests = { const tests = {
before: function (browser: NightwatchBrowser, done: VoidFunction) { before: function (browser: NightwatchBrowser, done: VoidFunction) {
browser.hideToolTips()
done() done()
}, },
after: function (browser: NightwatchBrowser) { after: function (browser: NightwatchBrowser) {
@ -48,6 +49,7 @@ const tests = {
console.log(result.value) console.log(result.value)
browser.switchWindow(result.value[1]) browser.switchWindow(result.value[1])
.waitForElementVisible('*[data-id="treeViewLitreeViewItem.git"]') .waitForElementVisible('*[data-id="treeViewLitreeViewItem.git"]')
.hideToolTips()
}) })
.waitForElementVisible('*[data-id="treeViewLitreeViewItemREADME.md"]') .waitForElementVisible('*[data-id="treeViewLitreeViewItemREADME.md"]')
}, },

@ -13,6 +13,7 @@ let gitserver: ChildProcess
const tests = { const tests = {
before: function (browser: NightwatchBrowser, done: VoidFunction) { before: function (browser: NightwatchBrowser, done: VoidFunction) {
browser.hideToolTips()
done() done()
}, },
after: function (browser: NightwatchBrowser) { after: function (browser: NightwatchBrowser) {
@ -48,6 +49,7 @@ const tests = {
console.log(result.value) console.log(result.value)
browser.switchWindow(result.value[1]) browser.switchWindow(result.value[1])
.waitForElementVisible('*[data-id="treeViewLitreeViewItem.git"]') .waitForElementVisible('*[data-id="treeViewLitreeViewItem.git"]')
.hideToolTips()
}) })
.waitForElementVisible('*[data-id="treeViewLitreeViewItemREADME.md"]') .waitForElementVisible('*[data-id="treeViewLitreeViewItemREADME.md"]')
}, },

@ -13,6 +13,7 @@ let gitserver: ChildProcess
const tests = { const tests = {
before: function (browser: NightwatchBrowser, done: VoidFunction) { before: function (browser: NightwatchBrowser, done: VoidFunction) {
browser.hideToolTips()
done() done()
}, },
after: function (browser: NightwatchBrowser) { after: function (browser: NightwatchBrowser) {
@ -48,6 +49,7 @@ const tests = {
console.log(result.value) console.log(result.value)
browser.switchWindow(result.value[1]) browser.switchWindow(result.value[1])
.waitForElementVisible('*[data-id="treeViewLitreeViewItem.git"]') .waitForElementVisible('*[data-id="treeViewLitreeViewItem.git"]')
.hideToolTips()
}) })
.waitForElementVisible('*[data-id="treeViewLitreeViewItemREADME.md"]') .waitForElementVisible('*[data-id="treeViewLitreeViewItemREADME.md"]')
}, },

@ -23,6 +23,7 @@ module.exports = {
browser.switchWindow(result.value[1]) browser.switchWindow(result.value[1])
.waitForElementVisible('*[data-id="treeViewLitreeViewItem.git"]') .waitForElementVisible('*[data-id="treeViewLitreeViewItem.git"]')
}) })
.pause()
.end() .end()
} }
} }

@ -1,4 +1,4 @@
import { GitHubUser, author, branch, commitChange, compareBranchesInput, currentBranchInput, fetchInputType, isoGitFSConfig, isoGitProxyConfig, pullInputType, pushInputType, remote, userEmails } from "@remix-api" import { GitHubUser, author, branch, cloneInputType, commitChange, compareBranchesInput, currentBranchInput, fetchInputType, isoGitFSConfig, isoGitProxyConfig, pullInputType, pushInputType, remote, userEmails } from "@remix-api"
import git from 'isomorphic-git' import git from 'isomorphic-git'
import { import {
Plugin Plugin
@ -120,6 +120,19 @@ const fetch = async (input: fetchInputType, fsConfig: isoGitFSConfig, plugin: Pl
return await git.fetch({ ...fsConfig, ...cmd, ...proxy }) return await git.fetch({ ...fsConfig, ...cmd, ...proxy })
} }
const clone = async (input: cloneInputType, fsConfig: isoGitFSConfig, plugin: Plugin | ElectronBasePluginClient) => {
const proxy = await isoGit.addIsomorphicGitProxyConfig(input, plugin)
const cmd = {
url: input.url,
singleBranch: input.singleBranch,
ref: input.branch,
depth: input.depth || 10,
dir: input.dir,
input
}
await git.clone({ ...fsConfig, ...cmd, ...proxy })
}
const getAuthor = async (input, plugin: any) => { const getAuthor = async (input, plugin: any) => {
const author: author = { const author: author = {
name: '', name: '',
@ -325,5 +338,6 @@ export const isoGit = {
push, push,
pull, pull,
fetch, fetch,
getGitHubUser getGitHubUser,
clone
} }

@ -35,6 +35,7 @@ import { CustomRemixApi } from "@remix-api";
import { Plugin } from "@remixproject/engine"; import { Plugin } from "@remixproject/engine";
import { Disabled } from './disabled' import { Disabled } from './disabled'
import { platformContext } from '@remix-ui/app' import { platformContext } from '@remix-ui/app'
import { Version } from './panels/version'
export const gitPluginContext = React.createContext<gitState>(defaultGitState) export const gitPluginContext = React.createContext<gitState>(defaultGitState)
export const loaderContext = React.createContext<loaderState>(defaultLoaderState) export const loaderContext = React.createContext<loaderState>(defaultLoaderState)
@ -179,6 +180,7 @@ export const GitUI = (props: IGitUi) => {
{setup && !needsInit ? <Setup></Setup> : null} {setup && !needsInit ? <Setup></Setup> : null}
{needsInit ? <Init></Init> : null} {needsInit ? <Init></Init> : null}
{!setup && !needsInit ? {!setup && !needsInit ?
<>
<Accordion activeKey={activePanel} defaultActiveKey="0"> <Accordion activeKey={activePanel} defaultActiveKey="0">
<SourceControlNavigation eventKey="0" activePanel={activePanel} callback={setActivePanel} /> <SourceControlNavigation eventKey="0" activePanel={activePanel} callback={setActivePanel} />
@ -239,6 +241,7 @@ export const GitUI = (props: IGitUi) => {
</Accordion.Collapse> </Accordion.Collapse>
</Accordion> </Accordion>
<Version/></>
: null} : null}
</pluginActionsContext.Provider> </pluginActionsContext.Provider>
</gitActionsContext.Provider> </gitActionsContext.Provider>

@ -0,0 +1,10 @@
import React, { useEffect, useState } from 'react'
import { gitPluginContext } from '../gitui'
export const Version = () => {
const context = React.useContext(gitPluginContext)
return (
<div>
<p>{context.version.includes('version') ? context.version : `Git version: ${context.version}` }</p>
</div>
)
}

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import { setCanUseApp, setLoading, setRepoName, setGItHubToken, setLog, setGitHubUser, setUserEmails, setDesktopWorkingDir } from "../state/gitpayload"; import { setCanUseApp, setLoading, setRepoName, setGItHubToken, setLog, setGitHubUser, setUserEmails, setDesktopWorkingDir, setVersion } from "../state/gitpayload";
import { gitActionDispatch } from "../types"; import { gitActionDispatch } from "../types";
import { Plugin } from "@remixproject/engine"; import { Plugin } from "@remixproject/engine";
import { getBranches, getFileStatusMatrix, loadGitHubUserFromToken, getRemotes, gitlog, setPlugin } from "./gitactions"; import { getBranches, getFileStatusMatrix, loadGitHubUserFromToken, getRemotes, gitlog, setPlugin } from "./gitactions";
@ -71,6 +71,9 @@ export const setCallBacks = (viewPlugin: Plugin, gitDispatcher: React.Dispatch<g
console.log('workingDirChanged', path) console.log('workingDirChanged', path)
gitDispatcher(setDesktopWorkingDir(path)) gitDispatcher(setDesktopWorkingDir(path))
gitDispatch(setCanUseApp(path ? true : false)) gitDispatch(setCanUseApp(path ? true : false))
const version = await plugin.call('dgitApi', 'version')
console.log(version)
gitDispatch(setVersion(version))
loadFileQueue.enqueue(async () => { loadFileQueue.enqueue(async () => {
loadFiles() loadFiles()
}) })
@ -91,6 +94,9 @@ export const setCallBacks = (viewPlugin: Plugin, gitDispatcher: React.Dispatch<g
if (platform == appPlatformTypes.desktop) { if (platform == appPlatformTypes.desktop) {
const workingDir = await plugin.call('fs', 'getWorkingDir') const workingDir = await plugin.call('fs', 'getWorkingDir')
gitDispatch(setCanUseApp(workingDir? true : false)) gitDispatch(setCanUseApp(workingDir? true : false))
const version = await plugin.call('dgitApi', 'version')
console.log(version)
gitDispatch(setVersion(version))
} else { } else {
gitDispatch(setCanUseApp(x && !x.isLocalhost && x.name)) gitDispatch(setCanUseApp(x && !x.isLocalhost && x.name))
} }

@ -43,6 +43,7 @@ export interface ActionPayloadTypes {
CLEAR_LOG: void CLEAR_LOG: void
SET_USER_EMAILS: userEmails SET_USER_EMAILS: userEmails
DESKTOP_SET_WORKING_DIR: string DESKTOP_SET_WORKING_DIR: string
SET_VERSION: string
} }
export interface Action<T extends keyof ActionPayloadTypes> { export interface Action<T extends keyof ActionPayloadTypes> {

@ -225,3 +225,10 @@ export const setDesktopWorkingDir = (dir: string) => {
payload: dir payload: dir
} }
} }
export const setVersion = (version: string) => {
return {
type: 'SET_VERSION',
payload: version
}
}

@ -6,208 +6,216 @@ import { Actions } from "./actions"
export const gitReducer = (state: gitState = defaultGitState, action: Actions): gitState => { export const gitReducer = (state: gitState = defaultGitState, action: Actions): gitState => {
switch (action.type) { switch (action.type) {
case 'FILE_STATUS': case 'FILE_STATUS':
return { return {
...state, ...state,
fileStatusResult: action.payload, fileStatusResult: action.payload,
staged: getFilesByStatus("staged", action.payload), staged: getFilesByStatus("staged", action.payload),
modified: getFilesByStatus("modified", action.payload), modified: getFilesByStatus("modified", action.payload),
untracked: getFilesByStatus("untracked", action.payload), untracked: getFilesByStatus("untracked", action.payload),
deleted: getFilesByStatus("deleted", action.payload), deleted: getFilesByStatus("deleted", action.payload),
allchangesnotstaged: allChangedButNotStagedFiles(action.payload) allchangesnotstaged: allChangedButNotStagedFiles(action.payload)
} }
case 'FILE_STATUS_MERGE': case 'FILE_STATUS_MERGE':
action.payload.map((fileStatusResult: fileStatusResult) => { action.payload.map((fileStatusResult: fileStatusResult) => {
const file = state.fileStatusResult.find(stateFile => { const file = state.fileStatusResult.find(stateFile => {
return stateFile.filename === fileStatusResult.filename return stateFile.filename === fileStatusResult.filename
})
if (file) {
file.status = fileStatusResult.status
file.statusNames = fileStatusResult.statusNames
}
}) })
if (file) {
file.status = fileStatusResult.status return {
file.statusNames = fileStatusResult.statusNames ...state,
} staged: getFilesByStatus("staged", state.fileStatusResult),
}) modified: getFilesByStatus("modified", state.fileStatusResult),
untracked: getFilesByStatus("untracked", state.fileStatusResult),
return { deleted: getFilesByStatus("deleted", state.fileStatusResult),
...state, allchangesnotstaged: allChangedButNotStagedFiles(state.fileStatusResult)
staged: getFilesByStatus("staged", state.fileStatusResult), }
modified: getFilesByStatus("modified", state.fileStatusResult),
untracked: getFilesByStatus("untracked", state.fileStatusResult), case 'SET_COMMITS':
deleted: getFilesByStatus("deleted", state.fileStatusResult), return {
allchangesnotstaged: allChangedButNotStagedFiles(state.fileStatusResult) ...state,
} commits: action.payload,
localCommitCount: action.payload.length
case 'SET_COMMITS': }
return {
...state, case 'SET_BRANCHES':
commits: action.payload, return {
localCommitCount: action.payload.length ...state,
} branches: action.payload
}
case 'SET_BRANCHES':
return { case 'SET_CURRENT_BRANCH':
...state, return {
branches: action.payload ...state,
} currentBranch: action.payload
}
case 'SET_CURRENT_BRANCH':
return { case 'SET_CURRENT_HEAD':
...state, return {
currentBranch: action.payload ...state,
} currentHead: action.payload
}
case 'SET_CURRENT_HEAD':
return { case 'SET_CAN_USE_APP':
...state, return {
currentHead: action.payload ...state,
} canUseApp: action.payload
}
case 'SET_CAN_USE_APP': case 'SET_REPO_NAME':
return { return {
...state, ...state,
canUseApp: action.payload reponame: action.payload
} }
case 'SET_REPO_NAME': case 'SET_LOADING':
return { return {
...state, ...state,
reponame: action.payload loading: action.payload
} }
case 'SET_LOADING':
return { case 'SET_REPOS':
...state, return {
loading: action.payload ...state,
} repositories: action.payload
}
case 'SET_REPOS':
return { case 'SET_REMOTE_BRANCHES':
...state, return {
repositories: action.payload ...state,
} remoteBranches: action.payload
}
case 'SET_REMOTE_BRANCHES':
return { case 'SET_CAN_COMMIT':
...state, return {
remoteBranches: action.payload ...state,
} canCommit: action.payload
}
case 'SET_CAN_COMMIT':
return { case 'SET_REMOTES':
...state, return {
canCommit: action.payload ...state,
} remotes: action.payload
}
case 'SET_REMOTES':
return { case 'SET_UPSTREAM':
...state, return {
remotes: action.payload ...state,
} upstream: action.payload
}
case 'SET_UPSTREAM':
return { case 'SET_COMMIT_CHANGES':
...state,
upstream: action.payload action.payload.forEach((change: commitChange) => {
} state.commitChanges.find((c) => c.hashModified === change.hashModified && c.hashOriginal === change.hashOriginal && c.path === change.path) ? null : state.commitChanges.push(change)
})
case 'SET_COMMIT_CHANGES':
return {
action.payload.forEach((change: commitChange) => { ...state,
state.commitChanges.find((c) => c.hashModified === change.hashModified && c.hashOriginal === change.hashOriginal && c.path === change.path) ? null : state.commitChanges.push(change) commitChanges: [...state.commitChanges]
}) }
return { case 'RESET_REMOTE_BRANCH_COMMITS':
...state, if (state.remoteBranchCommits[action.payload.branch.name]) {
commitChanges: [...state.commitChanges] delete state.remoteBranchCommits[action.payload.branch.name]
} }
return {
case 'RESET_REMOTE_BRANCH_COMMITS': ...state,
if (state.remoteBranchCommits[action.payload.branch.name]) { remoteBranchCommits: { ...state.remoteBranchCommits }
delete state.remoteBranchCommits[action.payload.branch.name] }
}
return { case 'SET_REMOTE_BRANCH_COMMITS':
...state, if (state.remoteBranchCommits[action.payload.branch.name]) {
remoteBranchCommits: { ...state.remoteBranchCommits } state.remoteBranchCommits[action.payload.branch.name].push(...action.payload.commits)
} } else {
state.remoteBranchCommits[action.payload.branch.name] = action.payload.commits
case 'SET_REMOTE_BRANCH_COMMITS': }
if (state.remoteBranchCommits[action.payload.branch.name]) { return {
state.remoteBranchCommits[action.payload.branch.name].push(...action.payload.commits) ...state,
} else { remoteBranchCommits: { ...state.remoteBranchCommits }
state.remoteBranchCommits[action.payload.branch.name] = action.payload.commits }
}
return { case 'SET_LOCAL_BRANCH_COMMITS':
...state,
remoteBranchCommits: { ...state.remoteBranchCommits } state.localBranchCommits[action.payload.branch.name] = action.payload.commits
} return {
...state,
case 'SET_LOCAL_BRANCH_COMMITS': localBranchCommits: { ...state.localBranchCommits }
}
state.localBranchCommits[action.payload.branch.name] = action.payload.commits
return { case 'SET_BRANCH_DIFFERENCES':
...state,
localBranchCommits: { ...state.localBranchCommits } state.branchDifferences[`${action.payload.remote.name}/${action.payload.branch.name}`] = action.payload.branchDifference
}
return {
case 'SET_BRANCH_DIFFERENCES': ...state,
branchDifferences: { ...state.branchDifferences }
state.branchDifferences[`${action.payload.remote.name}/${action.payload.branch.name}`] = action.payload.branchDifference }
return { case 'SET_GITHUB_USER':
...state, return {
branchDifferences: { ...state.branchDifferences } ...state,
} gitHubUser: action.payload
}
case 'SET_GITHUB_USER':
return { case 'SET_GITHUB_ACCESS_TOKEN':
...state, return {
gitHubUser: action.payload ...state,
} gitHubAccessToken: action.payload
}
case 'SET_GITHUB_ACCESS_TOKEN':
return { case 'SET_SCOPES':
...state, return {
gitHubAccessToken: action.payload ...state,
} gitHubScopes: action.payload
}
case 'SET_SCOPES':
return { case 'SET_USER_EMAILS':
...state, return {
gitHubScopes: action.payload ...state,
} userEmails: action.payload
}
case 'SET_USER_EMAILS':
return { case 'SET_DEFAULT_REMOTE':
...state, return {
userEmails: action.payload ...state,
} defaultRemote: action.payload
}
case 'SET_DEFAULT_REMOTE':
return { case 'SET_LOG':
...state, if (state.log.length > 0 && state.log[[...state.log].length - 1].message === action.payload.message) {
defaultRemote: action.payload return {
} ...state,
log: [...state.log]
case 'SET_LOG': }
if (state.log.length > 0 && state.log[[...state.log].length - 1].message === action.payload.message) { }
return { return {
...state, ...state,
log: [...state.log] log: [...state.log, action.payload]
} }
}
return { case 'CLEAR_LOG':
...state, return {
log: [...state.log, action.payload] ...state,
} log: []
}
case 'CLEAR_LOG':
return { case 'DESKTOP_SET_WORKING_DIR':
...state, return {
log: [] ...state,
} desktopWorkingDir: action.payload
}
case 'DESKTOP_SET_WORKING_DIR':
return {
...state, case 'SET_VERSION':
desktopWorkingDir: action.payload return {
} ...state,
version: action.payload
}
} }
} }

@ -37,6 +37,7 @@ export type gitState = {
gitHubAccessToken: string gitHubAccessToken: string
log: gitLog[] log: gitLog[]
desktopWorkingDir?: string desktopWorkingDir?: string
version: string
} }
export type gitLog = { export type gitLog = {
type: 'error' | 'warning' | 'info' | 'success', type: 'error' | 'warning' | 'info' | 'success',
@ -87,7 +88,8 @@ export const defaultGitState: gitState = {
gitHubScopes: [], gitHubScopes: [],
gitHubAccessToken: "", gitHubAccessToken: "",
log: [], log: [],
desktopWorkingDir: null desktopWorkingDir: null,
version: ""
} }
export const defaultLoaderState: loaderState = { export const defaultLoaderState: loaderState = {

Loading…
Cancel
Save