🐛 修复启动应用

This commit is contained in:
柚子
2025-03-07 02:17:03 +08:00
parent 135873a3e7
commit eaec740be2
4 changed files with 29 additions and 7 deletions

View File

@@ -11,12 +11,23 @@ pub async fn check_is_installed(pkgname: String) -> Result<bool, String> {
}
#[tauri::command]
pub async fn launch_app(pkgname: String) -> Result<(), String> {
pub async fn check_launch_app(pkgname: String) -> Result<bool, String> {
let output = Command::new("/opt/durapps/spark-store/bin/store-helper/ss-launcher")
.arg("check")
.arg(&pkgname)
.output()
.map_err(|e| format!("启动应用失败: {}", e))?;
Ok(output.status.success())
}
#[tauri::command]
pub async fn launch_launch_app(pkgname: String) -> Result<(), String> {
Command::new("/opt/durapps/spark-store/bin/store-helper/ss-launcher")
.arg("launch")
.arg(&pkgname)
.spawn()
.map_err(|e| format!("启动应用失败: {}", e))?;
Ok(())
}

View File

@@ -31,7 +31,8 @@ pub fn run() {
handlers::download::resume_download,
handlers::download::cancel_download,
handlers::deb::check_is_installed,
handlers::deb::launch_app,
handlers::deb::check_launch_app,
handlers::deb::launch_launch_app,
utils::get_user_agent,
])
.on_window_event(|window, event| match event {

View File

@@ -16,7 +16,7 @@ import { useCollectionStore } from '@/features/collection/store';
import { useDownloadsStore } from '@/features/downloads/store';
import { Progress } from '@/components/ui/progress';
import { X } from 'lucide-solid';
import { checkIsInstalled, launchApp } from '@/lib/api/deb';
import { checkIsInstalled, checkLaunchApp, launchApp } from '@/lib/api/deb';
const AppDetail: Component = () => {
const params = useParams();
@@ -124,10 +124,16 @@ const AppDetail: Component = () => {
);
if (downloadTask?.status === 'installed' || isInstalled()) {
const [appCanLaunch, setAppCanLaunch] = createSignal(false);
checkLaunchApp(params.pkgname).then(canLaunch => {
setAppCanLaunch(canLaunch);
});
return (
<Button
size="lg"
class='w-full'
disabled={!appCanLaunch()}
onClick={() => {
launchApp(params.pkgname)
showToast({ description: '正在启动应用...' });

View File

@@ -4,6 +4,10 @@ export async function checkIsInstalled(pkgname: string): Promise<boolean> {
return await invoke('check_is_installed', { pkgname });
}
export async function launchApp(pkgname: string) {
await invoke('launch_app', { pkgname });
export async function checkLaunchApp(pkgname: string): Promise<boolean> {
return await invoke('check_launch_app', { pkgname });
}
export async function launchLaunchApp(pkgname: string) {
await invoke('launch_launch_app', { pkgname });
}