Replace rust version of this with frontend logic

This commit is contained in:
2026-02-14 13:03:31 -07:00
parent 70433b76ab
commit 81d47ea71d
5 changed files with 37 additions and 33 deletions

View File

@@ -32,6 +32,12 @@
"allow": [ "allow": [
{ "path": "$APPLOCALDATA/game/**" } { "path": "$APPLOCALDATA/game/**" }
] ]
},
{
"identifier": "opener:allow-open-path",
"allow": [
{ "path": "$APPLOCALDATA/game/**" }
]
} }
] ]
} }

View File

@@ -12,8 +12,6 @@ use std::{
}; };
use sysinfo::System; use sysinfo::System;
use tauri::{AppHandle, Emitter, Manager}; use tauri::{AppHandle, Emitter, Manager};
use tauri_plugin_dialog::{DialogExt, MessageDialogKind};
use tauri_plugin_opener::OpenerExt;
use tauri_plugin_os::platform; use tauri_plugin_os::platform;
use tokio::io::AsyncReadExt; use tokio::io::AsyncReadExt;
use tokio::{io::AsyncWriteExt, time::timeout}; use tokio::{io::AsyncWriteExt, time::timeout};
@@ -324,30 +322,6 @@ fn launch_game(
} }
} }
#[tauri::command]
async fn open_folder(app: AppHandle, name: String) {
let game_path = app
.path()
.app_local_data_dir()
.unwrap()
.join("game")
.join(&name);
if game_path.exists() {
app.opener()
.open_path(game_path.to_string_lossy(), None::<&str>)
.unwrap();
} else {
app.dialog()
.message(format!(
"Game folder \"{}\" not found.",
game_path.display()
))
.kind(MessageDialogKind::Error)
.title("Folder not found")
.show(|_| {});
}
}
#[cfg_attr(mobile, tauri::mobile_entry_point)] #[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() { pub fn run() {
#[allow(unused_variables)] #[allow(unused_variables)]
@@ -369,7 +343,6 @@ pub fn run() {
.invoke_handler(tauri::generate_handler![ .invoke_handler(tauri::generate_handler![
download, download,
launch_game, launch_game,
open_folder,
folder_size folder_size
]) ])
.setup(|app| { .setup(|app| {

View File

@@ -11,6 +11,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { ask, message } from '@tauri-apps/plugin-dialog' import { ask, message } from '@tauri-apps/plugin-dialog'
import { BaseDirectory, exists, remove } from '@tauri-apps/plugin-fs' import { BaseDirectory, exists, remove } from '@tauri-apps/plugin-fs'
import { writeVersionsConfig } from '@/lib/BazookaManager' import { writeVersionsConfig } from '@/lib/BazookaManager'
import { openFolder } from '@/lib/Util'
export default function Installs () { export default function Installs () {
const { const {
@@ -359,9 +360,7 @@ export default function Installs () {
setSelectedVersionList([entry]) setSelectedVersionList([entry])
downloadVersions([entry]) downloadVersions([entry])
} else { } else {
invoke('open_folder', { openFolder(entry)
name: entry
})
} }
}} }}
hidden={ hidden={

View File

@@ -45,6 +45,7 @@ import {
requestPermission requestPermission
} from '@tauri-apps/plugin-notification' } from '@tauri-apps/plugin-notification'
import { BaseDirectory, exists, remove } from '@tauri-apps/plugin-fs' import { BaseDirectory, exists, remove } from '@tauri-apps/plugin-fs'
import { openFolder } from '@/lib/Util'
const roboto = Roboto({ const roboto = Roboto({
subsets: ['latin'] subsets: ['latin']
@@ -930,9 +931,7 @@ export default function RootLayout ({
<button <button
className='button btntheme2' className='button btntheme2'
onClick={async () => onClick={async () =>
invoke('open_folder', { openFolder(managingVersion)
name: managingVersion
})
} }
title="Click to browse the game's files." title="Click to browse the game's files."
> >

27
src/lib/Util.ts Normal file
View File

@@ -0,0 +1,27 @@
import { message } from '@tauri-apps/plugin-dialog'
import { BaseDirectory, exists, stat } from '@tauri-apps/plugin-fs'
import { openPath } from '@tauri-apps/plugin-opener'
import { join, appLocalDataDir } from '@tauri-apps/api/path'
export const openFolder = async (name: string) => {
const relativePath = await join('game', name)
const basePath = await appLocalDataDir()
const absolutePath = await join(basePath, relativePath)
const folderExists = await exists(relativePath, {
baseDir: BaseDirectory.AppLocalData
})
const folderStat = await stat(relativePath, {
baseDir: BaseDirectory.AppLocalData
})
if (!folderExists || folderStat.isFile) {
await message(`Game folder "${absolutePath}" not found.`, {
title: 'Folder not found',
kind: 'error'
})
return
}
await openPath(absolutePath)
}