v0.1.0-pre.046
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user