diff --git a/package.json b/package.json index a860790..8949cfa 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "private": false, "description": "An app to manage your JS projects", "main": "packages/main/dist/index.cjs", - "version": "0.1.2", + "version": "0.2.0", "author": "Ahmad Kholid ", "scripts": { "clean": "rimraf -y dist", diff --git a/packages/main/src/index.js b/packages/main/src/index.js index c2e4b42..df47edf 100644 --- a/packages/main/src/index.js +++ b/packages/main/src/index.js @@ -1,5 +1,6 @@ import { app, BrowserWindow, shell, dialog } from 'electron'; import { join } from 'path'; +import { autoUpdater } from 'electron-updater'; import { URL } from 'url'; import { ipcMain } from 'electron-better-ipc'; import { userStore } from './lib/electron-store'; @@ -61,6 +62,8 @@ const createWindow = async () => { if (env.MODE === 'development') { mainWindow?.webContents.openDevTools(); } + + autoUpdater.checkForUpdatesAndNotify(); }); mainWindow.webContents.once('did-finish-load', () => { @@ -108,6 +111,10 @@ ipcMain.answerRenderer('app:info', () => ({ version: app.getVersion(), })); +ipcMain.answerRenderer('updater:check', () => { + autoUpdater.checkForUpdatesAndNotify(); +}); + ipcMain.answerRenderer('get:workspaces', getWorkspaces); ipcMain.answerRenderer('get:repository', helper.getRepository); ipcMain.answerRenderer('get:package-manager', helper.getPackageManager); diff --git a/packages/renderer/src/components/app/bottom/BottomAbout.vue b/packages/renderer/src/components/app/bottom/BottomAbout.vue index 9f28ffd..d2373b8 100644 --- a/packages/renderer/src/components/app/bottom/BottomAbout.vue +++ b/packages/renderer/src/components/app/bottom/BottomAbout.vue @@ -59,19 +59,24 @@ function checkUpdate() { fetch(`https://api.github.com/repos/kholid060/projectile/releases/latest`) .then((response) => response.json()) - .then((result) => { + .then(async (result) => { if (!result.tag_name) throw new Error(); const isLatest = result.tag_name === `v${props.version}`; + const { ipcRenderer } = window.electron; - window.electron.ipcRenderer.callMain('dialog:message', { + await ipcRenderer.callMain('dialog:message', { type: 'info', title: isLatest ? 'Check for update' : 'Found Updates', message: isLatest ? "You're using the latest version of the app" - : `Found updates, Projectile ${result.tag_name}`, + : `Found update for Projectile ${result.tag_name}`, }); + if (!isLatest) { + await ipcRenderer.callMain('updater:check'); + } + loading.value = false; }) .catch((error) => { diff --git a/packages/renderer/src/components/app/bottom/BottomPackagesQueue.vue b/packages/renderer/src/components/app/bottom/BottomPackagesQueue.vue index e1ed2e3..0979fda 100644 --- a/packages/renderer/src/components/app/bottom/BottomPackagesQueue.vue +++ b/packages/renderer/src/components/app/bottom/BottomPackagesQueue.vue @@ -41,14 +41,13 @@ -
+

Logs

{{ logs }}
+ style="font-family: 'Jetbrains mono', monospace" + >{{ logs }}
@@ -164,7 +163,9 @@ export default { logs.value = ''; ipcRenderer.callMain('terminal:log').then((data) => { - const terminalId = Object.keys(data).find((item) => item.startsWith('package')); + const terminalId = Object.keys(data).find((item) => + item.startsWith('package') + ); if (!terminalId) return; diff --git a/packages/renderer/src/components/app/bottom/BottomTerminal.vue b/packages/renderer/src/components/app/bottom/BottomTerminal.vue index d8726d6..8b0ba6c 100644 --- a/packages/renderer/src/components/app/bottom/BottomTerminal.vue +++ b/packages/renderer/src/components/app/bottom/BottomTerminal.vue @@ -29,7 +29,7 @@ export default { const ptyDataListener = ipcRenderer.answerMain( 'terminal-pty-data', ({ data, name }) => { - if (!terminal || name !== props.activeTerminal || !isDone.value) return; + if (!terminal || name !== props.activeTerminal || !isDone.value || !data) return; terminal.write(data); } @@ -43,8 +43,8 @@ export default { ipcRenderer .callMain('terminal:log', props.activeTerminal) .then((data) => { - terminal.reset(); - terminal.write(data.log); + terminal?.reset(); + terminal?.write(data?.log ?? ''); isDone.value = true; }); } diff --git a/packages/renderer/src/components/app/sidebar/ProjectSidebar.vue b/packages/renderer/src/components/app/sidebar/ProjectSidebar.vue index ba2ca62..9aaa326 100644 --- a/packages/renderer/src/components/app/sidebar/ProjectSidebar.vue +++ b/packages/renderer/src/components/app/sidebar/ProjectSidebar.vue @@ -26,7 +26,7 @@ - + Home @@ -35,6 +35,7 @@ :key="item.id" :active="item.id === $route.name" :to="`/project/${$route.params.id}/${item.path}`" + :title="item.title" tag="router-link" > @@ -43,8 +44,9 @@ + diff --git a/packages/renderer/src/components/home/view/ViewGrid.vue b/packages/renderer/src/components/home/view/ViewGrid.vue index 0076a62..51fdc37 100644 --- a/packages/renderer/src/components/home/view/ViewGrid.vue +++ b/packages/renderer/src/components/home/view/ViewGrid.vue @@ -4,7 +4,9 @@ {{ project.name }} diff --git a/packages/renderer/src/components/home/view/ViewList.vue b/packages/renderer/src/components/home/view/ViewList.vue index df8d349..e192ed7 100644 --- a/packages/renderer/src/components/home/view/ViewList.vue +++ b/packages/renderer/src/components/home/view/ViewList.vue @@ -3,7 +3,9 @@
-

+

{{ item.package.name }} ({{ item.package.version }})