chore: refactorings for more code reorganizing
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
use super::*;
|
||||
use crate::model;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub(super) enum ModelDownload {
|
||||
@@ -29,6 +30,50 @@ pub(super) struct ActiveDownload {
|
||||
}
|
||||
|
||||
impl App {
|
||||
pub(super) fn update_model_manager_message(
|
||||
&mut self,
|
||||
message: Message,
|
||||
) -> Result<Message, Task<Message>> {
|
||||
match message {
|
||||
Message::OpenModelManager => return Err(self.open_model_manager()),
|
||||
Message::ModelManagerOpened(id) => {
|
||||
if self.model_manager_window == Some(id) {
|
||||
return Err(window::gain_focus(id));
|
||||
}
|
||||
}
|
||||
Message::DownloadArtifact(artifact) => {
|
||||
self.start_model_operation(artifact, ModelOperation::Download)
|
||||
}
|
||||
Message::ValidateArtifact(artifact) => {
|
||||
self.start_model_operation(artifact, ModelOperation::Validate)
|
||||
}
|
||||
Message::DeleteArtifact(artifact) => self.pending_model_delete = Some(artifact),
|
||||
Message::ConfirmDeleteArtifact => {
|
||||
if let Some(artifact) = self.pending_model_delete.take() {
|
||||
match model::delete_managed_artifact(artifact, &models_path()) {
|
||||
Ok(()) => {
|
||||
self.model_download = ModelDownload::Idle;
|
||||
self.error = None;
|
||||
}
|
||||
Err(error) => {
|
||||
self.error = Some(format!("Could not delete {artifact}: {error}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Message::CancelDeleteArtifact => self.pending_model_delete = None,
|
||||
Message::StopModelDownload => {
|
||||
if let ModelDownload::Active(download) = &mut self.model_download {
|
||||
download.stopping = true;
|
||||
download.cancel.store(true, Ordering::Relaxed);
|
||||
}
|
||||
}
|
||||
Message::DownloadProgressTick => self.update_download_progress(),
|
||||
message => return Ok(message),
|
||||
}
|
||||
Err(Task::none())
|
||||
}
|
||||
|
||||
pub(super) fn open_model_manager(&mut self) -> Task<Message> {
|
||||
if let Some(id) = self.model_manager_window {
|
||||
return window::gain_focus(id);
|
||||
|
||||
Reference in New Issue
Block a user