From 5cffcfe457d1b15d201647a5775268378c6018c6 Mon Sep 17 00:00:00 2001 From: HsiangNianian Date: Wed, 21 Jan 2026 10:47:56 +0800 Subject: feat: Add TypeScript support to data structures using ts-rs for type generation --- src-tauri/src/core/auth.rs | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) (limited to 'src-tauri/src/core/auth.rs') 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, } -#[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, @@ -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, -- cgit v1.2.3-70-g09d2