aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src/core/auth.rs
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2026-01-21 10:47:56 +0800
committerHsiangNianian <i@jyunko.cn>2026-01-21 10:47:56 +0800
commit5cffcfe457d1b15d201647a5775268378c6018c6 (patch)
tree562160c25373acc968c7c7abafaf018cd1a21261 /src-tauri/src/core/auth.rs
parentb27f30bfbdd05a53caaf6fe63fd9354b3689623c (diff)
downloadDropOut-5cffcfe457d1b15d201647a5775268378c6018c6.tar.gz
DropOut-5cffcfe457d1b15d201647a5775268378c6018c6.zip
feat: Add TypeScript support to data structures using ts-rs for type generation
Diffstat (limited to 'src-tauri/src/core/auth.rs')
-rw-r--r--src-tauri/src/core/auth.rs42
1 files changed, 34 insertions, 8 deletions
diff --git a/src-tauri/src/core/auth.rs b/src-tauri/src/core/auth.rs
index d5e6c17..62f8c69 100644
--- a/src-tauri/src/core/auth.rs
+++ b/src-tauri/src/core/auth.rs
@@ -1,5 +1,6 @@
use serde::{Deserialize, Serialize};
use std::sync::Mutex;
+use ts_rs::TS;
use uuid::Uuid;
// Helper to create a client with a custom User-Agent
@@ -11,8 +12,13 @@ fn get_client() -> reqwest::Client {
.unwrap_or_else(|_| reqwest::Client::new())
}
-#[derive(Debug, Clone, Serialize, Deserialize)]
+#[derive(Debug, Clone, Serialize, Deserialize, TS)]
#[serde(tag = "type")]
+#[ts(
+ export,
+ tag = "type",
+ export_to = "../packages/ui/src/types/generated/Account.ts"
+)]
pub enum Account {
Offline(OfflineAccount),
Microsoft(MicrosoftAccount),
@@ -41,13 +47,21 @@ impl Account {
}
}
-#[derive(Debug, Clone, Serialize, Deserialize)]
+#[derive(Debug, Clone, Serialize, Deserialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/OfflineAccount.ts"
+)]
pub struct OfflineAccount {
pub username: String,
pub uuid: String,
}
-#[derive(Debug, Clone, Serialize, Deserialize)]
+#[derive(Debug, Clone, Serialize, Deserialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/MicrosoftAccount.ts"
+)]
pub struct MicrosoftAccount {
pub username: String,
pub uuid: String,
@@ -73,11 +87,15 @@ pub fn generate_offline_uuid(username: &str) -> String {
Uuid::new_v3(&namespace, username.as_bytes()).to_string()
}
-// const CLIENT_ID: &str = "fe165602-5410-4441-92f7-326e10a7cb82";
-const CLIENT_ID: &str = "c36a9fb6-4f2a-41ff-90bd-ae7cc92031eb"; // ATLauncher's Client ID
+const CLIENT_ID: &str = "fe165602-5410-4441-92f7-326e10a7cb82";
+// const CLIENT_ID: &str = "c36a9fb6-4f2a-41ff-90bd-ae7cc92031eb"; // ATLauncher's Client ID
const SCOPE: &str = "XboxLive.SignIn XboxLive.offline_access";
-#[derive(Debug, Serialize, Deserialize)]
+#[derive(Debug, Serialize, Deserialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/DeviceCodeResponse.ts"
+)]
pub struct DeviceCodeResponse {
pub user_code: String,
pub device_code: String,
@@ -87,7 +105,11 @@ pub struct DeviceCodeResponse {
pub message: Option<String>,
}
-#[derive(Debug, Serialize, Deserialize)]
+#[derive(Debug, Serialize, Deserialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/TokenResponse.ts"
+)]
pub struct TokenResponse {
pub access_token: String,
pub refresh_token: Option<String>,
@@ -209,7 +231,11 @@ pub struct MinecraftAuthResponse {
pub expires_in: u64,
}
-#[derive(Debug, Serialize, Deserialize)]
+#[derive(Debug, Serialize, Deserialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/MinecraftProfile.ts"
+)]
pub struct MinecraftProfile {
pub id: String,
pub name: String,