aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/src/App.svelte
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2026-01-13 15:56:20 +0800
committerHsiangNianian <i@jyunko.cn>2026-01-13 15:56:20 +0800
commit66f7825ed9638606665b9e61c6f8132de013da14 (patch)
tree764c30309a1c5a77f3b0d92d5131b1b50ae50402 /ui/src/App.svelte
parent6fbb5f19cab02f3a0f18cdeda3da02e717b69cd6 (diff)
downloadDropOut-66f7825ed9638606665b9e61c6f8132de013da14.tar.gz
DropOut-66f7825ed9638606665b9e61c6f8132de013da14.zip
feat: implement download functionality with progress monitoring and version management
Diffstat (limited to 'ui/src/App.svelte')
-rw-r--r--ui/src/App.svelte27
1 files changed, 22 insertions, 5 deletions
diff --git a/ui/src/App.svelte b/ui/src/App.svelte
index 18ef5e5..0e14cb0 100644
--- a/ui/src/App.svelte
+++ b/ui/src/App.svelte
@@ -1,6 +1,7 @@
<script lang="ts">
import { invoke } from "@tauri-apps/api/core";
import { onMount } from "svelte";
+ import DownloadMonitor from "./lib/DownloadMonitor.svelte";
let status = "Ready";
@@ -48,8 +49,12 @@
async function login() {
if (currentAccount) {
if (confirm("Logout " + currentAccount.username + "?")) {
- currentAccount = null;
- // Note: Backend state persists until restarted or overwritten.
+ try {
+ await invoke("logout");
+ currentAccount = null;
+ } catch(e) {
+ console.error("Logout failed:", e);
+ }
}
return;
}
@@ -64,10 +69,21 @@
}
async function startGame() {
- status = "Launching (Simulated)...";
- console.log("Invoking start_game...");
+ if (!currentAccount) {
+ alert("Please login first!");
+ login();
+ return;
+ }
+
+ if (!selectedVersion) {
+ alert("Please select a version!");
+ return;
+ }
+
+ status = "Preparing to launch " + selectedVersion + "...";
+ console.log("Invoking start_game for version:", selectedVersion);
try {
- const msg = await invoke("start_game");
+ const msg = await invoke("start_game", { versionId: selectedVersion });
console.log("Response:", msg);
status = msg as string;
} catch (e) {
@@ -110,6 +126,7 @@
<!-- Main Content -->
<main class="flex-1 flex flex-col relative min-w-0">
+ <DownloadMonitor />
<!-- Top Bar (Window Controls Placeholder) -->
<div class="h-8 w-full bg-zinc-900/50 absolute top-0 left-0 z-50 drag-region" data-tauri-drag-region>
<!-- Windows/macOS controls would go here or be handled by OS -->