From 4b715e2eae196a11bc9eba9011651224733313ff Mon Sep 17 00:00:00 2001
From: "alterwain@protonmail.com" <alterwain@protonmail.com>
Date: Thu, 13 Mar 2025 23:49:38 +0300
Subject: [PATCH] Commit x2

---
 src/launcher.rs       | 10 +++-------
 src/main.rs           |  8 +++++---
 src/www/portable.html |  1 +
 3 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/launcher.rs b/src/launcher.rs
index 1e59752..f175a58 100644
--- a/src/launcher.rs
+++ b/src/launcher.rs
@@ -1,7 +1,7 @@
 use core::str;
 use std::sync::Arc;
 use tokio::sync::{mpsc, Mutex};
-use tokio::sync::mpsc::UnboundedReceiver;
+use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender};
 use crate::{config::LauncherConfig, minecraft::versions::VersionConfig, util};
 
 #[derive(Default)]
@@ -37,7 +37,7 @@ impl Launcher {
         self.save_config();
     }
 
-    pub async fn new_vanilla_instance(&mut self, config: VersionConfig) -> UnboundedReceiver<(u8, String)> {
+    pub async fn new_vanilla_instance(&mut self, config: VersionConfig, sender: UnboundedSender<(u8, String)>) {
         let root = self.config.launcher_dir();
         let mut instances = root.clone();
         instances.push("instances");
@@ -47,18 +47,14 @@ impl Launcher {
 
         instances.push("client.jar");
 
-        let (sx, rx) = mpsc::unbounded_channel();
-
         let client_jar_url = config.downloads.client.url;
 
-        util::download_file(&client_jar_url, instances.to_str().unwrap(), config.downloads.client.size, sx);
+        util::download_file(&client_jar_url, instances.to_str().unwrap(), config.downloads.client.size, sender);
 
         /*for i in 0..config.libraries.len() {
             let library = &config.libraries[i];
 
         }*/
-
-        rx
     }
 
     pub fn init_dirs(&self) {
diff --git a/src/main.rs b/src/main.rs
index f34d633..ef16a38 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -76,7 +76,7 @@ async fn main() {
 
         let mut launcher = Launcher::default();
 
-        let mut dl_rec = None;
+        let (sx, mut dl_rec) = mpsc::unbounded_channel();
 
         loop {
             if let Some((ui_action, params, responder)) = receiver.recv().await {
@@ -131,7 +131,7 @@ async fn main() {
                                     Ok(config ) => {
                                         println!("Config: {}", config.id);
                                         responder.respond(Response::new(serde_json::to_vec(&UIMessage { params: vec!["show_loading".to_string()] }).unwrap()));
-                                        dl_rec = Some(launcher.new_vanilla_instance(config).await);
+                                        launcher.new_vanilla_instance(config, sx.clone()).await;
                                     }
                                     Err(e) => {
                                         println!("Error: {}", e);
@@ -141,8 +141,10 @@ async fn main() {
                         }
                     }
                     "check_download_status" => {
-                        if let Some((percent, text)) = dl_rec.unwrap().recv().await {
+                        if let Some((percent, text)) = dl_rec.recv().await {
                             responder.respond(Response::new(serde_json::to_vec(&UIMessage { params: vec!["update_downloads".to_string(), text, percent.to_string()] }).unwrap()));
+                        } else {
+                            responder.respond(Response::new(vec![]));
                         }
                     }
                     _ => {}
diff --git a/src/www/portable.html b/src/www/portable.html
index dbcb12f..240e4a9 100644
--- a/src/www/portable.html
+++ b/src/www/portable.html
@@ -379,6 +379,7 @@
       <script type="text/javascript">
           
           function processParams(r) {
+              console.log("got", r);
             let params = JSON.parse(r).params;
             for( let i = 0; i < params.length; i++ ) {
               if( params[i].startsWith("show_") ) {