From 7c2e5ca9a9ffa2b11acd3c28691a64f36fe9959b Mon Sep 17 00:00:00 2001 From: MDietermann Date: Wed, 12 Aug 2026 17:04:35 +0200 Subject: [PATCH] feat: add workspace and conversation Tauri commands Implement list_workspaces and list_conversations commands to enable frontend access to workspace and conversation data via Tauri IPC. - Add workspace.rs with list_workspaces command (GET /workspaces) - Add conversation.rs with list_conversations command (GET /conversations?workspace_id=) - Register both commands in lib.rs invoke_handler - Update commands/mod.rs to expose new modules --- src-tauri/src/commands/conversation.rs | 18 ++++++++++++++++++ src-tauri/src/commands/mod.rs | 2 ++ src-tauri/src/commands/workspace.rs | 15 +++++++++++++++ src-tauri/src/lib.rs | 6 +++++- 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src-tauri/src/commands/conversation.rs create mode 100644 src-tauri/src/commands/workspace.rs diff --git a/src-tauri/src/commands/conversation.rs b/src-tauri/src/commands/conversation.rs new file mode 100644 index 0000000..3de8e5c --- /dev/null +++ b/src-tauri/src/commands/conversation.rs @@ -0,0 +1,18 @@ +use crate::models::Conversation; +use crate::state::{AppState, BASE_URL}; + +#[tauri::command] +pub async fn list_conversations( + state: tauri::State<'_, AppState>, + workspace_id: String, +) -> Result, String> { + state + .client + .get(format!("{}/conversations?workspace_id={}", BASE_URL, workspace_id)) + .send() + .await + .map_err(|e| e.to_string())? + .json() + .await + .map_err(|e| e.to_string()) +} diff --git a/src-tauri/src/commands/mod.rs b/src-tauri/src/commands/mod.rs index 22d12a3..4856d1a 100644 --- a/src-tauri/src/commands/mod.rs +++ b/src-tauri/src/commands/mod.rs @@ -1 +1,3 @@ +pub mod conversation; pub mod user; +pub mod workspace; diff --git a/src-tauri/src/commands/workspace.rs b/src-tauri/src/commands/workspace.rs new file mode 100644 index 0000000..1d177c9 --- /dev/null +++ b/src-tauri/src/commands/workspace.rs @@ -0,0 +1,15 @@ +use crate::models::Workspace; +use crate::state::{AppState, BASE_URL}; + +#[tauri::command] +pub async fn list_workspaces(state: tauri::State<'_, AppState>) -> Result, String> { + state + .client + .get(format!("{}/workspaces", BASE_URL)) + .send() + .await + .map_err(|e| e.to_string())? + .json() + .await + .map_err(|e| e.to_string()) +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index dc63d34..bbee861 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -8,7 +8,11 @@ use state::AppState; pub fn run() { tauri::Builder::default() .manage(AppState::new()) - .invoke_handler(tauri::generate_handler![commands::user::login]) + .invoke_handler(tauri::generate_handler![ + commands::user::login, + commands::workspace::list_workspaces, + commands::conversation::list_conversations, + ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); }