From 2d5d0d5ab3fa3a5cadcad2104bed60bd99361cca Mon Sep 17 00:00:00 2001 From: Aden Lindsay <140392385+AdenMGB@users.noreply.github.com> Date: Sun, 5 Jan 2025 17:26:33 +1030 Subject: [PATCH] feat(settings): add debug page * Create debug.rs * Update settings.vue to add tab for debug * Update main.scss to add light theme * Update interface.vue to add light mode * Create debug.vue * Update debug.vue too add open log button * Update lib.rs * Update debug.rs * Update debug.rs * Update lib.rs * Update lib.rs * Update debug.rs * Update debug.vue * fix(debug): refactor and cleanup * revert(theme): revert light theming --------- Co-authored-by: DecDuck --- desktop/pages/settings.vue | 7 ++ desktop/pages/settings/debug.vue | 161 +++++++++++++++++++++++++++ desktop/pages/settings/interface.vue | 6 +- desktop/src-tauri/src/debug.rs | 23 ++++ desktop/src-tauri/src/lib.rs | 14 ++- 5 files changed, 206 insertions(+), 5 deletions(-) create mode 100644 desktop/pages/settings/debug.vue create mode 100644 desktop/src-tauri/src/debug.rs diff --git a/desktop/pages/settings.vue b/desktop/pages/settings.vue index 1363f893..5f60e364 100644 --- a/desktop/pages/settings.vue +++ b/desktop/pages/settings.vue @@ -39,6 +39,7 @@ import { CubeIcon, HomeIcon, RectangleGroupIcon, + BugAntIcon, } from "@heroicons/vue/16/solid"; import type { Component } from "vue"; import type { NavigationItem } from "~/types"; @@ -63,6 +64,12 @@ const navigation: Array = [ prefix: "/settings/downloads", icon: ArrowDownTrayIcon, }, + { + label: "Debug Info", + route: "/settings/debug", + prefix: "/settings/debug", + icon: BugAntIcon, + }, ]; const currentPlatform = platform(); diff --git a/desktop/pages/settings/debug.vue b/desktop/pages/settings/debug.vue new file mode 100644 index 00000000..3ef3e064 --- /dev/null +++ b/desktop/pages/settings/debug.vue @@ -0,0 +1,161 @@ + + + diff --git a/desktop/pages/settings/interface.vue b/desktop/pages/settings/interface.vue index 27e0f695..3df236ba 100644 --- a/desktop/pages/settings/interface.vue +++ b/desktop/pages/settings/interface.vue @@ -1,3 +1,7 @@ \ No newline at end of file + + + diff --git a/desktop/src-tauri/src/debug.rs b/desktop/src-tauri/src/debug.rs new file mode 100644 index 00000000..de42dd66 --- /dev/null +++ b/desktop/src-tauri/src/debug.rs @@ -0,0 +1,23 @@ +use crate::{DATA_ROOT_DIR, DB}; +use serde::Serialize; + +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +pub struct SystemData { + client_id: String, + base_url: String, + data_dir: String, +} + +#[tauri::command] +pub fn fetch_system_data() -> Result { + let db_handle = DB.borrow_data().map_err(|e| e.to_string())?; + let system_data = SystemData { + client_id: db_handle.auth.as_ref().unwrap().client_id.clone(), + base_url: db_handle.base_url.clone(), + data_dir: DATA_ROOT_DIR.lock().unwrap().to_string_lossy().to_string(), + }; + drop(db_handle); + + Ok(system_data) +} diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs index 2d411748..b7abcfe0 100644 --- a/desktop/src-tauri/src/lib.rs +++ b/desktop/src-tauri/src/lib.rs @@ -3,21 +3,27 @@ mod db; mod downloads; mod library; +mod autostart; mod cleanup; +mod debug; mod process; mod remote; mod state; #[cfg(test)] mod tests; -mod autostart; +use crate::autostart::{get_autostart_enabled, toggle_autostart}; use crate::db::DatabaseImpls; -use auth::{auth_initiate, generate_authorization_header, manual_recieve_handshake, recieve_handshake, retry_connect, sign_out}; +use auth::{ + auth_initiate, generate_authorization_header, manual_recieve_handshake, recieve_handshake, + retry_connect, sign_out, +}; use cleanup::{cleanup_and_exit, quit}; use db::{ add_download_dir, delete_download_dir, fetch_download_dir_stats, DatabaseInterface, GameStatus, DATA_ROOT_DIR, }; +use debug::fetch_system_data; use downloads::download_commands::*; use downloads::download_manager::DownloadManager; use downloads::download_manager_builder::DownloadManagerBuilder; @@ -47,7 +53,6 @@ use tauri::menu::{Menu, MenuItem, PredefinedMenuItem}; use tauri::tray::TrayIconBuilder; use tauri::{AppHandle, Manager, RunEvent, WindowEvent}; use tauri_plugin_deep_link::DeepLinkExt; -use crate::autostart::{get_autostart_enabled, toggle_autostart}; #[derive(Clone, Copy, Serialize)] pub enum AppStatus { @@ -217,6 +222,7 @@ pub fn run() { // Core utils fetch_state, quit, + fetch_system_data, // Auth auth_initiate, retry_connect, @@ -250,7 +256,7 @@ pub fn run() { .plugin(tauri_plugin_dialog::init()) .plugin(tauri_plugin_autostart::init( tauri_plugin_autostart::MacosLauncher::LaunchAgent, - Some(vec!["--minimize"]) + Some(vec!["--minimize"]), )) .setup(|app| { let handle = app.handle().clone();