use crate::vault::vault_crypto::write_vault_v2_file;
use crate::vault::vault_structs::{VaultMetadata, VaultPayload};
pub fn build_payload_from_text(text: &str, metadata_opt: Option<VaultMetadata>) -> VaultPayload {
let mut md = metadata_opt.unwrap_or_default();
if md.creator_name.is_empty() {
md.creator_name = whoami::realname();
}
let content = text.to_string();
let mut payload = VaultPayload {
metadata: md.clone(),
content,
creator_name: String::new(),
};
payload.creator_name = payload.metadata.creator_name.clone();
payload
}
pub fn write_vault_file(
path: &std::path::Path,
password: &str,
text: &str,
metadata_opt: Option<VaultMetadata>,
) -> Result<(), String> {
let payload = build_payload_from_text(text, metadata_opt);
let serialized = serde_json::to_vec(&payload).map_err(|e| e.to_string())?;
write_vault_v2_file(path, password, &serialized).map_err(|e| e.to_string())
}