v0.1.0-pre.046

This commit is contained in:
2026-07-25 19:45:35 +02:00
parent 01764a485a
commit 417536e4c4
17 changed files with 1491 additions and 57 deletions

View File

@@ -1,13 +1,36 @@
// file: kb-app-demo-desktop/src/tauri.rs
// version: 1
// version: 3
//! Tauri runtime assembly and private command wrappers.
use tauri::Manager; // rust-rules: trait-import
/// Runs the desktop demo application.
#[cfg_attr(mobile, tauri::mobile_entry_point)]
#[allow(clippy::question_mark_used)]
pub fn run() -> kb_core::Result<()> {
let builder = tauri::Builder::default().setup(|app| {
let rustls_result = install_default_rustls_provider();
if let std::result::Result::Err(error) = rustls_result {
return std::result::Result::Err(error);
}
let app_state = match crate::AppState::initialize() {
std::result::Result::Ok(state) => state,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
tracing::info!(
target: crate::TRACING_TARGET,
config_path = app_state.config_path(),
active_profile = app_state.active_profile().name.as_str(),
logging_routes = app_state.logging_route_count(),
"starting desktop demo application"
);
let tracing_builder = tauri_plugin_tracing::Builder::new();
let mut builder = tauri::Builder::default();
builder = builder.manage(app_state);
builder =
builder.invoke_handler(tauri::generate_handler![emit_frontend_log, load_project_readme,]);
builder = builder.plugin(tracing_builder.build::<tauri::Wry>());
builder = builder.setup(|app| {
let splash_window = match app.get_webview_window("splash") {
std::option::Option::Some(window) => window,
std::option::Option::None => {
@@ -66,8 +89,38 @@ pub fn run() -> kb_core::Result<()> {
let run_result = builder.run(tauri::generate_context!());
return match run_result {
std::result::Result::Ok(()) => std::result::Result::Ok(()),
std::result::Result::Err(error) => std::result::Result::Err(kb_core::Error::tauri(format!(
"cannot run desktop demo application: {error:?}"
))),
std::result::Result::Err(error) => std::result::Result::Err(kb_core::Error::tauri(
format!("cannot run desktop demo application: {error:?}"),
)),
};
}
fn install_default_rustls_provider() -> kb_core::Result<()> {
if rustls::crypto::CryptoProvider::get_default().is_some() {
return std::result::Result::Ok(());
}
let provider_result = rustls::crypto::aws_lc_rs::default_provider().install_default();
return match provider_result {
std::result::Result::Ok(()) => std::result::Result::Ok(()),
std::result::Result::Err(error) => std::result::Result::Err(kb_core::Error::invalid_state(
format!("cannot install default rustls crypto provider: {error:?}"),
)),
};
}
fn into_ipc_result<T>(result: kb_core::Result<T>) -> std::result::Result<T, std::string::String> {
return match result {
std::result::Result::Ok(value) => std::result::Result::Ok(value),
std::result::Result::Err(error) => std::result::Result::Err(error.to_string()),
};
}
#[tauri::command]
fn emit_frontend_log(payload: crate::FrontendLogPayload) {
crate::emit_frontend_log(payload);
}
#[tauri::command]
fn load_project_readme() -> std::result::Result<std::string::String, std::string::String> {
return into_ipc_result(crate::load_project_readme());
}