diff --git a/package.json b/package.json index 8c9ea08..40f9efd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dynatrace-desktop-application", - "version": "1.0.5", + "version": "1.0.6", "description": "dynatrace desktop application's site addon to support local files and folders", "main": "dist/index.js", "scripts": { diff --git a/src/webapp/src/App.js b/src/webapp/src/App.js index 9862b65..7404e92 100644 --- a/src/webapp/src/App.js +++ b/src/webapp/src/App.js @@ -5,6 +5,7 @@ import './Fonts.css' import { Header } from './components/Header' import Footer from './components/Footer' import { EmptyState } from './components/EmptyState' +import {ReposAddHandler} from "./components/ReposAddHandler"; export const App = () => { @@ -28,6 +29,7 @@ export const App = () => {
+
) diff --git a/src/webapp/src/components/ReposAddHandler.js b/src/webapp/src/components/ReposAddHandler.js new file mode 100644 index 0000000..999c538 --- /dev/null +++ b/src/webapp/src/components/ReposAddHandler.js @@ -0,0 +1,53 @@ +import { useEffect } from 'react' +import { ipcRenderer } from 'electron' +import path from 'path' +import { app, dialog, getCurrentWindow } from '@electron/remote' + + + + + +export const ReposAddHandler = () => { + + + useEffect(() => { + ipcRenderer.on('pop-choose-repository', () => { + onPopDialogRequested() + }) + ipcRenderer.sendTo(window.indexWorkerId, 'repos-request') + }, []) + + const onPopDialogRequested = async () => { + const win = getCurrentWindow() + let reHide = false + if (!win.isVisible()) { + win.show() + reHide = true + } + await onAddClicked() + if (!reHide) return + if (window.process.platform.match('darwin')) { + app.dock.hide() + } + win.hide() + } + + + const onAddClicked = async () => { + const win = getCurrentWindow() + const { filePaths } = await dialog.showOpenDialog(win, { + properties: ['openDirectory', 'multiSelections'], + }) + + if (!filePaths) return // user closed dialog without choosing + + for (let i = 0; i < filePaths.length; i++) { + const folder = filePaths[i] + const repoName = path.basename(folder) + const newRepo = { repoName, fullpath: folder } + ipcRenderer.sendTo(window.indexWorkerId, 'add-repo', newRepo) + } + } + + return null; +}