OneLauncher-Cracked/packages/oneclient_core/src/notification/data.rs
LynithDev d0c97b4177 feat(ui): Merge Microsoft Auth types into 1 popup
fix(ui): Microsoft Auth notification is no longer persistent on cancel
2026-07-12 19:17:38 +02:00

147 lines
2.4 KiB
Rust

use std::path::PathBuf;
use tokio::sync::oneshot;
use uuid::Uuid;
#[derive(Debug, Clone)]
pub enum GroupedProgressEvent {
Start {
session_id: Uuid,
title: String,
},
AddChild {
session_id: Uuid,
child_id: Uuid,
label: String,
total: u64,
},
UpdateChild {
session_id: Uuid,
child_id: Uuid,
current: u64,
total: u64,
},
SetChildPhase {
session_id: Uuid,
child_id: Uuid,
phase: TaskPhase,
},
FinishChild {
session_id: Uuid,
child_id: Uuid,
},
End {
session_id: Uuid,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum TaskPhase {
#[default]
Downloading,
Verifying,
Extracting,
Installing,
}
impl TaskPhase {
pub fn label(self) -> &'static str {
match self {
Self::Downloading => "Downloading",
Self::Verifying => "Verifying",
Self::Extracting => "Extracting",
Self::Installing => "Installing",
}
}
}
#[derive(Debug)]
pub enum Notification {
Message {
title: String,
body: String,
level: NotificationLevel,
},
Progress {
id: Uuid,
label: String,
current: u64,
total: u64,
},
GroupedProgress(GroupedProgressEvent),
GameStage {
cluster_id: i64,
stage: LaunchStage,
},
GameLog {
cluster_id: i64,
line: String,
},
GameFailed {
cluster_id: i64,
message: String,
},
Prompt {
title: String,
question: String,
kind: PromptKind,
reply_tx: oneshot::Sender<UserChoice>,
},
InvalidateClusters,
InvalidateJava,
SyncComplete,
/// Live status of Microsoft Auth
/// `None` clears the status
MicrosoftLoginStatus(Option<MicrosoftLoginStatus>),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct MicrosoftLoginStatus {
pub label: String,
pub current: u64,
pub total: u64,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum LaunchStage {
Checking,
Downloading,
Launching,
Running,
Exited,
}
impl LaunchStage {
pub fn is_busy(self) -> bool {
matches!(self, Self::Checking | Self::Downloading | Self::Launching)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PromptKind {
JavaInstall { major: u32 },
Update,
}
#[derive(Debug)]
pub enum UserChoice {
Accept,
Cancel,
Folder(PathBuf),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum NotificationLevel {
Info,
Error,
}