X-Git-Url: http://www.project-moonshot.org/gitweb/?p=moonshot-ui.git;a=blobdiff_plain;f=src%2Fmoonshot-identities-manager.vala;h=5cb427975a31538b5377b04f60c7e158a0ff50fb;hp=01eea7110ffba29312e1b8f67cc3d2c401bf2c29;hb=6b9c02ac9b2331291f26a3612cf35a44d5f55aff;hpb=1288d760001242d47cad5344d635d16d74307523 diff --git a/src/moonshot-identities-manager.vala b/src/moonshot-identities-manager.vala index 01eea71..5cb4279 100644 --- a/src/moonshot-identities-manager.vala +++ b/src/moonshot-identities-manager.vala @@ -157,9 +157,8 @@ public class IdentityManagerModel : Object { remove_card_internal(id_card); if (new_card.trust_anchor.Compare(id_card.trust_anchor) == 0) { - logger.trace("Old and new cards have same trust anchor. Re-using the datetime_added and user_verified fields from the old card."); + logger.trace("Old and new cards have same trust anchor. Re-using the datetime_added field from the old card."); new_card.trust_anchor.set_datetime_added(id_card.trust_anchor.datetime_added); - new_card.trust_anchor.user_verified = id_card.trust_anchor.user_verified; } } @@ -170,6 +169,47 @@ public class IdentityManagerModel : Object { return (dups.size > 0); } + + public bool find_duplicate_nai_sets(out ArrayList> duplicates) + { + var nais = new HashMap>(); + + duplicates = new ArrayList>(); + LinkedList card_list = get_card_list() ; + if (card_list == null) { + return false; + } + + bool found = false; + foreach (IdCard id_card in card_list) { + logger.trace(@"load_id_cards: Loading card with display name '$(id_card.display_name)'"); + + //!!TODO: This uniqueness check really belongs somewhere else -- like where we add + // IDs, and/or read them from storage. However, we should never hit this. + + if (nais.has_key(id_card.nai)) { + ArrayList list = nais.get(id_card.nai); + list.add(id_card); + } + else { + ArrayList list = new ArrayList(); + list.add(id_card); + nais.set(id_card.nai, list); + } + } + + duplicates = new ArrayList>(); + foreach (Map.Entry> entry in nais.entries) { + var list = entry.value; + if (list.size > 1) { + duplicates.add(list); + found = true; + } + } + return found; + } + + public IdCard? find_id_card(string nai, bool force_flat_file_store) { IdCard? retval = null; IIdentityCardStore.StoreType saved_store_type = get_store_type();