Commit 61eced2
Load default project on startup
Changed files (6)
modifiedCargo.lockmodifiedCargo.tomlmodifiedsrc-tauri/Cargo.tomlmodifiedsrc-tauri/src/lib.rsmodifiedsrc-tauri/tauri.conf.jsonmodifiedsrc/lib.rs
Diff
@@ -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"@@ -1,6 +1,8 @@ [package]-name = "tauri-kaja-frontend"+name = "resting-chair" version = "0.1.0"+description = "REST calls"+license = "MIT" edition = "2024" [lib]@@ -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.html@@ -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(¤t_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,@@ -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.",@@ -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 {