From 5ac3ff7edbd0d2980c252e4800f2e020fbceacf6 Mon Sep 17 00:00:00 2001 From: FTCHD Date: Sat, 1 Feb 2025 20:03:46 +0200 Subject: [PATCH] close sidecar on app quit --- lib/menu.ts | 2 ++ main.ts | 11 +++++++++-- src-tauri/tauri.conf.json | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/menu.ts b/lib/menu.ts index 391cdd2..47739bb 100644 --- a/lib/menu.ts +++ b/lib/menu.ts @@ -1,4 +1,5 @@ import { Menu, MenuItem, PredefinedMenuItem, Submenu } from '@tauri-apps/api/menu' +import { getCurrentWindow } from '@tauri-apps/api/window' import { ask, message, open } from '@tauri-apps/plugin-dialog' import { isPermissionGranted, requestPermission } from '@tauri-apps/plugin-notification' import { sendNotification } from '@tauri-apps/plugin-notification' @@ -334,6 +335,7 @@ export async function buildMenu() { id: 'quit', text: 'Quit', action: async () => { + await getCurrentWindow().emit('close-app') await exit(0) }, }) diff --git a/main.ts b/main.ts index 21d0fb8..1a96dd7 100644 --- a/main.ts +++ b/main.ts @@ -3,6 +3,7 @@ import { ask, message } from '@tauri-apps/plugin-dialog' import { debug, error, info, trace, warn } from '@tauri-apps/plugin-log' import { platform } from '@tauri-apps/plugin-os' import { exit } from '@tauri-apps/plugin-process' +import type { Command } from '@tauri-apps/plugin-shell' import { validateLicense } from './lib/license' import { listRemotes } from './lib/rclone/api' import { initRclone } from './lib/rclone/init' @@ -113,7 +114,7 @@ async function startRclone() { const rcloneCommandFn = rclone.system || rclone.internal - const command = await rcloneCommandFn([ + const command = (await rcloneCommandFn([ 'rcd', ...(platform() === 'macos' ? ['--rc-no-auth'] // webkit doesn't allow for credentials in the url @@ -122,7 +123,7 @@ async function startRclone() { // defaults // '-rc-addr', // ':5572', - ]) + ])) as Command // command.stdout.on('data', (line) => { // console.log('stdout ' + line) @@ -150,6 +151,12 @@ async function startRclone() { console.log('running rclone') const childProcess = await command.spawn() + getCurrentWindow().listen('close-app', async (e) => { + console.log('(main) window close-app requested') + + await childProcess.kill() + }) + await new Promise((resolve) => setTimeout(resolve, 200)) useStore.setState({ rcloneLoaded: true }) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 5bf60ad..602987a 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -61,7 +61,7 @@ "icons/favicon/frame_17_delay-0.1s.png" ], "category": "Utility", - "copyright": "FarFetched", + "copyright": "Copyright © 2025 Rclone UI.", "macOS": { "dmg": { "appPosition": {