Clone in a terminal:
Commit 61eced2
Johan Mattsson - 2026-11-03T01:09:48+00:00
61eced2739365b7c896071ff5886e7197e3c457fjohan.mattsson.m@gmail.com

Load default project on startup

Changed files (6)

Diff

diff --git a/Cargo.lock b/Cargo.lockindex f7c09b8..b51da86 100644--- a/Cargo.lock+++ b/Cargo.lock@@ -546,6 +546,23 @@ dependencies = [ ]  [[package]]+name = "resting-chair"+version = "0.1.0"+dependencies = [+ "gloo",+ "inventory",+ "js-sys",+ "kaja-web",+ "serde",+ "serde-wasm-bindgen 0.6.5",+ "serde_json",+ "tauri-wasm",+ "wasm-bindgen",+ "wasm-bindgen-futures",+ "web-sys",+]++[[package]] name = "rustversion" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -673,23 +690,6 @@ dependencies = [ ]  [[package]]-name = "tauri-kaja-frontend"-version = "0.1.0"-dependencies = [- "gloo",- "inventory",- "js-sys",- "kaja-web",- "serde",- "serde-wasm-bindgen 0.6.5",- "serde_json",- "tauri-wasm",- "wasm-bindgen",- "wasm-bindgen-futures",- "web-sys",-]--[[package]] name = "tauri-wasm" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"diff --git a/Cargo.toml b/Cargo.tomlindex c437f13..b9af39e 100644--- a/Cargo.toml+++ b/Cargo.toml@@ -1,6 +1,8 @@ [package]-name = "tauri-kaja-frontend"+name = "resting-chair" version = "0.1.0"+description = "REST calls"+license = "MIT" edition = "2024"  [lib]diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.tomlindex 0b5fc98..9727b09 100644--- a/src-tauri/Cargo.toml+++ b/src-tauri/Cargo.toml@@ -3,6 +3,7 @@ name = "resting-chair" version = "1.0.0" description = "REST calls" authors = ["Johan Mattsson"]+license = "MIT" edition = "2024"  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.htmldiff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rsindex f0d7a5a..d350bf8 100644--- a/src-tauri/src/lib.rs+++ b/src-tauri/src/lib.rs@@ -260,27 +260,49 @@ fn check_headers_gitignore(path: String) -> Result<bool, String> {     headers_file_is_ignored(&path) } -#[tauri::command]-fn add_project(app: AppHandle, path: String) -> Result<ProjectSummary, String> {-    let canonical_path = fs::canonicalize(path.trim())-        .map_err(|error| format!("Could not access the project folder: {error}"))?;-    if !canonical_path.is_dir() {-        return Err("Choose an existing folder for the project.".to_owned());-    }-+fn register_project(app: &AppHandle, canonical_path: PathBuf) -> Result<ProjectSummary, String> {     let project = Project {         path: canonical_path.to_string_lossy().into_owned(),     };-    let mut projects = load_projects(&app)?;+    let mut projects = load_projects(app)?;     if !projects.iter().any(|saved| saved.path == project.path) {         projects.push(project.clone());-        write_projects(&app, &projects)?;+        write_projects(app, &projects)?;     }      Ok(project_summary(&project)) }  #[tauri::command]+fn load_startup_project(app: AppHandle) -> Result<Option<ProjectSummary>, String> {+    let current_directory = std::env::current_dir()+        .map_err(|error| format!("Could not determine the current folder: {error}"))?;++    if !current_directory.join(REQUESTS_FILE_NAME).is_file() {+        return Ok(None);+    }++    let canonical_path = fs::canonicalize(&current_directory)+        .map_err(|error| format!("Could not access the current folder: {error}"))?;+    if !canonical_path.is_dir() {+        return Ok(None);+    }++    register_project(&app, canonical_path).map(Some)+}++#[tauri::command]+fn add_project(app: AppHandle, path: String) -> Result<ProjectSummary, String> {+    let canonical_path = fs::canonicalize(path.trim())+        .map_err(|error| format!("Could not access the project folder: {error}"))?;+    if !canonical_path.is_dir() {+        return Err("Choose an existing folder for the project.".to_owned());+    }++    register_project(&app, canonical_path)+}++#[tauri::command] fn load_request_list(project_path: String) -> Result<Vec<RequestData>, String> {     load_requests(&project_path) }@@ -479,6 +501,7 @@ pub fn run() {         .plugin(tauri_plugin_dialog::init())         .invoke_handler(tauri::generate_handler![             load_project_list,+            load_startup_project,             pick_project_folder,             check_headers_gitignore,             add_project,diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.jsonindex de383bc..aa63487 100644--- a/src-tauri/tauri.conf.json+++ b/src-tauri/tauri.conf.json@@ -26,6 +26,9 @@     "active": true,     "publisher": "Johan Mattsson",     "homepage": "https://kajacode.com",+    "copyright": "Copyright © 2026 Johan Mattsson",+    "license": "MIT",+    "licenseFile": "../LICENSE",     "category": "DeveloperTool",     "shortDescription": "REST calls",     "longDescription": "A desktop application for creating and sending REST requests.",diff --git a/src/lib.rs b/src/lib.rsindex d3d75be..12fad51 100644--- a/src/lib.rs+++ b/src/lib.rs@@ -85,6 +85,7 @@ struct RestCallSetup { impl Component for AppComponent {     fn connected(&self) {         self.render();+        load_startup_project();     }      fn attribute_changed(&self, name: &str, _old_value: &str, _new_value: &str) {@@ -557,6 +558,27 @@ fn show_request_detail(request: &StoredRequest) {     } } +#[callback(loadStartupProject)]+fn load_startup_project() {+    spawn_local(async {+        match tauri_wasm::invoke("load_startup_project").await {+            Ok(value) => match serde_wasm_bindgen::from_value::<Option<ProjectSummary>>(value) {+                Ok(Some(project)) => {+                    select_project(&project);+                    show_request_picker();+                }+                Ok(None) => {}+                Err(error) => web_sys::console::error_1(+                    &format!("Could not read the startup project: {error}").into(),+                ),+            },+            Err(error) => web_sys::console::error_1(+                &format!("Could not load the startup project: {error}").into(),+            ),+        }+    });+}+ #[callback(loadProjects)] fn load_projects() {     spawn_local(async {

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112