v0.2.6-pre.012

This commit is contained in:
2026-08-21 16:22:16 +02:00
parent 8ba554306a
commit ecbd6b746d
21 changed files with 634 additions and 94 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-wallet-desk/src/tauri.rs
// version: 9
// version: 10
//! Tauri runtime assembly for the KSP wallet desktop application.
@@ -47,6 +47,7 @@ fn configure_commands(builder: tauri::Builder<tauri::Wry>) -> tauri::Builder<tau
deselect_wallet,
disable_wallet_view,
emit_frontend_log,
export_wallet_transfer,
get_runtime_status,
import_wallet,
inspect_import_source,
@@ -155,6 +156,51 @@ fn emit_frontend_log(payload: crate::FrontendLogPayloadDto) -> std::result::Resu
};
}
#[tauri::command]
async fn export_wallet_transfer(
app: tauri::AppHandle,
request: crate::WalletExportRequestDto,
state: tauri::State<'_, crate::AppState>,
) -> std::result::Result<std::option::Option<crate::WalletExportResultDto>, crate::CommandErrorDto> {
let format = request.format;
let default_filename = state.wallet_export_picker_filename(format);
let default_filename = match default_filename {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(crate::CommandErrorDto::from_error(&error)),
};
let extensions = [format.default_extension()];
let selected = app
.dialog()
.file()
.set_title("Export Solana keypair — secret material")
.set_file_name(default_filename)
.add_filter("Solana keypair transfer", &extensions)
.blocking_save_file();
let selected = match selected {
std::option::Option::Some(value) => value,
std::option::Option::None => {
ksp_logging_lib::debug!(target: crate::TRACING_TARGET, domain = crate::TRACING_DOMAIN_WALLET_EXPORT, transfer_format = format.code(), "Wallet OWNER transfer export native save picker cancelled");
return std::result::Result::Ok(std::option::Option::None);
},
};
let path = selected.into_path();
let path = match path {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => {
let error = ksp_core_lib::Error::new(
crate::ERROR_CODE_WALLET_EXPORT_DESTINATION_INVALID,
"Selected Wallet transfer export destination is not a local filesystem path",
);
return std::result::Result::Err(crate::CommandErrorDto::from_error(&error));
},
};
let result = state.export_wallet_transfer(path, request).await;
return match result {
std::result::Result::Ok(value) => std::result::Result::Ok(std::option::Option::Some(value)),
std::result::Result::Err(error) => std::result::Result::Err(crate::CommandErrorDto::from_error(&error)),
};
}
#[tauri::command]
fn get_runtime_status(state: tauri::State<'_, crate::AppState>) -> std::result::Result<crate::RuntimeStatusDto, crate::CommandErrorDto> {
let result = state.runtime_status();