diff options
| author | jelemux <jeremias.weber@protonmail.com> | 2021-02-04 18:18:24 +0100 | 
|---|---|---|
| committer | jelemux <jeremias.weber@protonmail.com> | 2021-02-04 18:18:24 +0100 | 
| commit | 021588157748556e2229e8c6a729c91fb608988b (patch) | |
| tree | da354252d63425d160ff53319e1dca6f9ca656b1 /src | |
| parent | 0c8f99f4f58953334731cc195c385d31d8b0f695 (diff) | |
| download | wasm-card-021588157748556e2229e8c6a729c91fb608988b.tar.gz wasm-card-021588157748556e2229e8c6a729c91fb608988b.tar.bz2  | |
fix some issues and add readme
Diffstat (limited to 'src')
| -rw-r--r-- | src/view/main.rs | 194 | 
1 files changed, 115 insertions, 79 deletions
diff --git a/src/view/main.rs b/src/view/main.rs index 9b6a345..83acc3f 100644 --- a/src/view/main.rs +++ b/src/view/main.rs @@ -2,6 +2,7 @@ use yew::services::ConsoleService;  use crate::viewmodel::vcard::VCardData;  use crate::viewmodel::Error;  use crate::view::telephone::{self,TelephoneView}; +use crate::viewmodel::VCardPropertyInputObject;  use super::WeakComponentLink;  use super::name::{self,NameView};  use super::address::{self,AddressView}; @@ -172,102 +173,137 @@ impl Component for MainView {                  for name in vcard_data.names { -                    builder = builder -                    .with_fullname( -                        name.generate_fn() -                    ) -                    .with_name( -                        parameters!(), -                        name.last_name.is_empty().as_some(name.last_name.clone()), -                        name.first_name.is_empty().as_some(name.first_name.clone()), -                        name.middle_name.is_empty().as_some(name.middle_name.clone()), -                        name.prefix.is_empty().as_some(name.prefix.clone()), -                        name.suffix.is_empty().as_some(name.suffix.clone()) -                    ); +                    if !name.is_empty() { + +                        builder = builder +                        .with_fullname( +                            name.generate_fn() +                        ) +                        .with_name( +                            parameters!(), +                            (!name.last_name.is_empty()) +                                .as_some(name.last_name.clone()), +                            (!name.first_name.is_empty()) +                                .as_some(name.first_name.clone()), +                            (!name.middle_name.is_empty()) +                                .as_some(name.middle_name.clone()), +                            (!name.prefix.is_empty()) +                                .as_some(name.prefix.clone()), +                            (!name.suffix.is_empty()) +                                .as_some(name.suffix.clone()) +                        ); +                    }                  }                  for address in vcard_data.addresses { -                    let mut types = String::new(); -                    if address.work { -                        types.push_str("WORK"); -                    } -                    if address.home { -                        if types.is_empty() { -                            types.push(','); + +                    if !address.is_empty() { + +                        let mut types = String::new(); +                        if address.work { +                            types.push_str("WORK");                          } -                        types.push_str("HOME") +                        if address.home { +                            if !types.is_empty() { +                                types.push(','); +                            } +                            types.push_str("HOME") +                        } +     +                        let params = if types.is_empty() { +                            parameters!() +                        } else { +                            parameters!("TYPE" => types) +                        }; +     +                        builder = builder.with_adr( +                            params, +                            (!address.post_office_box.is_empty()) +                                .as_some(address.post_office_box.clone()), +                            (!address.extension.is_empty()) +                                .as_some(address.extension.clone()), +                            (!address.street.is_empty()) +                                .as_some(address.street.clone()), +                            (!address.locality.is_empty()) +                                .as_some(address.locality.clone()), +                            (!address.region.is_empty()) +                                .as_some(address.region.clone()), +                            (!address.code.is_empty()) +                                .as_some(address.code.clone()), +                            (!address.country.is_empty()) +                                .as_some(address.country.clone()), +                        );                      } - -                    builder = builder.with_adr( -                        parameters!("TYPE" => types), -                        address.post_office_box.is_empty().as_some(address.post_office_box.clone()), -                        address.extension.is_empty().as_some(address.extension.clone()), -                        address.street.is_empty().as_some(address.street.clone()), -                        address.locality.is_empty().as_some(address.locality.clone()), -                        address.region.is_empty().as_some(address.region.clone()), -                        address.code.is_empty().as_some(address.code.clone()), -                        address.country.is_empty().as_some(address.country.clone()), -                    );                  }                  for telephone in vcard_data.telephones { -                    let mut types = String::new(); -                    if telephone.work { -                        types.push_str("WORK"); -                    } -                    if telephone.home { -                        if types.is_empty() { -                            types.push(','); + +                    if !telephone.is_empty() { +                         +                        let mut types = String::new(); +                        if telephone.work { +                            types.push_str("WORK");                          } -                        types.push_str("HOME") -                    } -                    if telephone.text { -                        if types.is_empty() { -                            types.push(','); +                        if telephone.home { +                            if !types.is_empty() { +                                types.push(','); +                            } +                            types.push_str("HOME")                          } -                        types.push_str("TEXT") -                    } -                    if telephone.voice { -                        if types.is_empty() { -                            types.push(','); +                        if telephone.text { +                            if !types.is_empty() { +                                types.push(','); +                            } +                            types.push_str("TEXT")                          } -                        types.push_str("VOICE") -                    } -                    if telephone.fax { -                        if types.is_empty() { -                            types.push(','); +                        if telephone.voice { +                            if !types.is_empty() { +                                types.push(','); +                            } +                            types.push_str("VOICE")                          } -                        types.push_str("FAX") -                    } -                    if telephone.cell { -                        if types.is_empty() { -                            types.push(','); +                        if telephone.fax { +                            if !types.is_empty() { +                                types.push(','); +                            } +                            types.push_str("FAX")                          } -                        types.push_str("CELL") -                    } -                    if telephone.video { -                        if types.is_empty() { -                            types.push(','); +                        if telephone.cell { +                            if !types.is_empty() { +                                types.push(','); +                            } +                            types.push_str("CELL")                          } -                        types.push_str("VIDEO") -                    } -                    if telephone.pager { -                        if types.is_empty() { -                            types.push(','); +                        if telephone.video { +                            if !types.is_empty() { +                                types.push(','); +                            } +                            types.push_str("VIDEO")                          } -                        types.push_str("PAGER") -                    } -                    if telephone.text_phone { -                        if types.is_empty() { -                            types.push(','); +                        if telephone.pager { +                            if !types.is_empty() { +                                types.push(','); +                            } +                            types.push_str("PAGER")                          } -                        types.push_str("TEXTPHONE") +                        if telephone.text_phone { +                            if !types.is_empty() { +                                types.push(','); +                            } +                            types.push_str("TEXTPHONE") +                        } +     +                        let params = if types.is_empty() { +                            parameters!() +                        } else { +                            parameters!("TYPE" => types) +                        }; +     +                        builder = builder.with_tel( +                            params, +                            telephone.number.clone(), +                        );                      } - -                    builder = builder.with_tel( -                        parameters!("TYPE" => types), -                        telephone.number.clone(), -                    );                  }  | 
