From edffebab1dbaf12fbefd1f445c4b12ac9d4cbc27 Mon Sep 17 00:00:00 2001 From: Tin Lai Date: Mon, 28 Oct 2024 16:27:49 +1000 Subject: [PATCH] make field type optional Signed-off-by: Tin Lai --- src/api.rs | 2 +- src/bin/rbw/commands.rs | 23 ++++++++++++++--------- src/db.rs | 2 +- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/api.rs b/src/api.rs index 3007fd1..21a67fb 100644 --- a/src/api.rs +++ b/src/api.rs @@ -683,7 +683,7 @@ pub enum LinkedIdType { #[derive(serde::Serialize, serde::Deserialize, Debug, Clone)] struct CipherField { #[serde(rename = "Type", alias = "type")] - ty: FieldType, + ty: Option, #[serde(rename = "Name", alias = "name")] name: Option, #[serde(rename = "Value", alias = "value")] diff --git a/src/bin/rbw/commands.rs b/src/bin/rbw/commands.rs index 486b5d1..da29911 100644 --- a/src/bin/rbw/commands.rs +++ b/src/bin/rbw/commands.rs @@ -742,24 +742,29 @@ struct DecryptedField { name: Option, value: Option, #[serde(serialize_with = "serialize_field_type", rename = "type")] - ty: rbw::api::FieldType, + ty: Option, } #[allow(clippy::trivially_copy_pass_by_ref)] fn serialize_field_type( - ty: &rbw::api::FieldType, + ty: &Option, serializer: S, ) -> Result where S: serde::Serializer, { - let s = match ty { - rbw::api::FieldType::Text => "text", - rbw::api::FieldType::Hidden => "hidden", - rbw::api::FieldType::Boolean => "boolean", - rbw::api::FieldType::Linked => "linked", - }; - serializer.serialize_str(s) + match ty { + Some(ty) => { + let s = match ty { + rbw::api::FieldType::Text => "text", + rbw::api::FieldType::Hidden => "hidden", + rbw::api::FieldType::Boolean => "boolean", + rbw::api::FieldType::Linked => "linked", + }; + serializer.serialize_some(&Some(s)) + } + None => serializer.serialize_none(), + } } #[derive(Debug, Clone, Serialize)] diff --git a/src/db.rs b/src/db.rs index 9db484c..fadd78c 100644 --- a/src/db.rs +++ b/src/db.rs @@ -148,7 +148,7 @@ pub enum EntryData { serde::Serialize, serde::Deserialize, Debug, Clone, Eq, PartialEq, )] pub struct Field { - pub ty: crate::api::FieldType, + pub ty: Option, pub name: Option, pub value: Option, pub linked_id: Option,