mirror of
https://github.com/chatmail/core.git
synced 2026-05-14 12:26:31 +03:00
contact: simplify name normalization
This removes one indexing operation and reduces surprises when comma means something other than first name and last name separator.
This commit is contained in:
committed by
link2xt
parent
53bee68acb
commit
ad531876fd
@@ -1113,7 +1113,6 @@ pub(crate) async fn set_profile_image(
|
|||||||
/// Normalize a name.
|
/// Normalize a name.
|
||||||
///
|
///
|
||||||
/// - Remove quotes (come from some bad MUA implementations)
|
/// - Remove quotes (come from some bad MUA implementations)
|
||||||
/// - Convert names as "Petersen, Björn" to "Björn Petersen"
|
|
||||||
/// - Trims the resulting string
|
/// - Trims the resulting string
|
||||||
///
|
///
|
||||||
/// Typically, this function is not needed as it is called implicitly by `Contact::add_address_book`.
|
/// Typically, this function is not needed as it is called implicitly by `Contact::add_address_book`.
|
||||||
@@ -1135,15 +1134,6 @@ pub fn normalize_name(full_name: impl AsRef<str>) -> String {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(p1) = full_name.find(',') {
|
|
||||||
let (last_name, first_name) = full_name.split_at(p1);
|
|
||||||
|
|
||||||
let last_name = last_name.trim();
|
|
||||||
let first_name = (&first_name[1..]).trim();
|
|
||||||
|
|
||||||
return format!("{} {}", first_name, last_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
full_name.trim().into()
|
full_name.trim().into()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1235,7 +1225,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_normalize_name() {
|
fn test_normalize_name() {
|
||||||
assert_eq!(&normalize_name("Doe, John"), "John Doe");
|
|
||||||
assert_eq!(&normalize_name(" hello world "), "hello world");
|
assert_eq!(&normalize_name(" hello world "), "hello world");
|
||||||
assert_eq!(&normalize_name("<"), "<");
|
assert_eq!(&normalize_name("<"), "<");
|
||||||
assert_eq!(&normalize_name(">"), ">");
|
assert_eq!(&normalize_name(">"), ">");
|
||||||
@@ -1400,10 +1389,10 @@ mod tests {
|
|||||||
assert!(contact_id > DC_CONTACT_ID_LAST_SPECIAL);
|
assert!(contact_id > DC_CONTACT_ID_LAST_SPECIAL);
|
||||||
assert_eq!(sth_modified, Modifier::None);
|
assert_eq!(sth_modified, Modifier::None);
|
||||||
let contact = Contact::load_from_db(&t.ctx, contact_id).await.unwrap();
|
let contact = Contact::load_from_db(&t.ctx, contact_id).await.unwrap();
|
||||||
assert_eq!(contact.get_name(), "Alice Wonderland");
|
assert_eq!(contact.get_name(), "Wonderland, Alice");
|
||||||
assert_eq!(contact.get_display_name(), "Alice Wonderland");
|
assert_eq!(contact.get_display_name(), "Wonderland, Alice");
|
||||||
assert_eq!(contact.get_addr(), "alice@w.de");
|
assert_eq!(contact.get_addr(), "alice@w.de");
|
||||||
assert_eq!(contact.get_name_n_addr(), "Alice Wonderland (alice@w.de)");
|
assert_eq!(contact.get_name_n_addr(), "Wonderland, Alice (alice@w.de)");
|
||||||
|
|
||||||
// check SELF
|
// check SELF
|
||||||
let contact = Contact::load_from_db(&t.ctx, DC_CONTACT_ID_SELF)
|
let contact = Contact::load_from_db(&t.ctx, DC_CONTACT_ID_SELF)
|
||||||
@@ -1587,7 +1576,7 @@ mod tests {
|
|||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let contact = Contact::load_from_db(&t.ctx, contact_id).await.unwrap();
|
let contact = Contact::load_from_db(&t.ctx, contact_id).await.unwrap();
|
||||||
assert_eq!(contact.get_name(), "Dave Mueller");
|
assert_eq!(contact.get_name(), "Mueller, Dave");
|
||||||
assert_eq!(contact.get_addr(), "dave@example.org");
|
assert_eq!(contact.get_addr(), "dave@example.org");
|
||||||
|
|
||||||
let contact_id = Contact::create(&t.ctx, "name1", "name2 <dave@example.org>")
|
let contact_id = Contact::create(&t.ctx, "name1", "name2 <dave@example.org>")
|
||||||
|
|||||||
@@ -2242,7 +2242,7 @@ mod tests {
|
|||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.get_authname(),
|
.get_authname(),
|
||||||
"Фамилия Имя", // The name was "Имя, Фамилия" and ("lastname, firstname") and should be swapped to "firstname, lastname"
|
"Имя, Фамилия",
|
||||||
);
|
);
|
||||||
let msgs = chat::get_chat_msgs(&t.ctx, chat_id, 0, None).await;
|
let msgs = chat::get_chat_msgs(&t.ctx, chat_id, 0, None).await;
|
||||||
assert_eq!(msgs.len(), 1);
|
assert_eq!(msgs.len(), 1);
|
||||||
|
|||||||
Reference in New Issue
Block a user