Claude: Progress report for extraction fixed
This commit is contained in:
parent
98def5fa73
commit
70c0492d7a
@ -112,6 +112,14 @@ impl<> eframe::App for SinfarInstallerApp<> {
|
|||||||
self.download_error = Some(error.clone());
|
self.download_error = Some(error.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if self.state == InstallerState::Installing {
|
||||||
|
// Sync extraction progress from shared state
|
||||||
|
if let Ok(state) = self.download_state.lock() {
|
||||||
|
self.extraction_progress = state.progress;
|
||||||
|
if let Some(error) = &state.error {
|
||||||
|
self.install_error = Some(error.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
egui::CentralPanel::default().show(ctx, |ui| {
|
egui::CentralPanel::default().show(ctx, |ui| {
|
||||||
@ -280,12 +288,20 @@ impl SinfarInstallerApp<> {
|
|||||||
let runtime = self.runtime.clone();
|
let runtime = self.runtime.clone();
|
||||||
let game_type = self.game_type.clone().expect("Game type should be set");
|
let game_type = self.game_type.clone().expect("Game type should be set");
|
||||||
|
|
||||||
|
// Reset the download state for installation progress
|
||||||
|
if let Ok(mut state) = self.download_state.lock() {
|
||||||
|
state.progress = 0.0;
|
||||||
|
state.completed = false;
|
||||||
|
state.error = None;
|
||||||
|
state.cancelled = false;
|
||||||
|
}
|
||||||
|
|
||||||
// Create extraction manager with progress callback
|
// Create extraction manager with progress callback
|
||||||
let extractor = crate::installer::extractor::ExtractionManager::new(move |progress: f32, _filename: &str| {
|
let extractor = crate::installer::extractor::ExtractionManager::new(move |progress: f32, _filename: &str| {
|
||||||
if let Ok(mut app_state) = progress_state.lock() {
|
if let Ok(mut app_state) = progress_state.lock() {
|
||||||
app_state.progress = progress;
|
app_state.progress = progress;
|
||||||
}
|
|
||||||
eframe_ctx.request_repaint();
|
eframe_ctx.request_repaint();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get downloaded files before spawning the async task
|
// Get downloaded files before spawning the async task
|
||||||
@ -296,6 +312,7 @@ impl SinfarInstallerApp<> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if let Some(files) = downloaded_files {
|
if let Some(files) = downloaded_files {
|
||||||
|
let download_state = download_state.clone(); // Clone again for the async block
|
||||||
runtime.spawn(async move {
|
runtime.spawn(async move {
|
||||||
// Try to install the files
|
// Try to install the files
|
||||||
if let Err(e) = extractor.install_all_files(
|
if let Err(e) = extractor.install_all_files(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user