using System.Collections.Generic; using Android.Service.Autofill; using Android.Views.Autofill; namespace Bit.Android.Autofill { public class FieldCollection { public HashSet Ids { get; private set; } = new HashSet(); public List AutofillIds { get; private set; } = new List(); public SaveDataType SaveType { get; private set; } = SaveDataType.Generic; public List Hints { get; private set; } = new List(); public List FocusedHints { get; private set; } = new List(); public List Fields { get; private set; } = new List(); public IDictionary IdToFieldMap { get; private set; } = new Dictionary(); public IDictionary> HintToFieldsMap { get; private set; } = new Dictionary>(); public void Add(Field field) { if(Ids.Contains(field.Id)) { return; } SaveType |= field.SaveType; Ids.Add(field.Id); Fields.Add(field); AutofillIds.Add(field.AutofillId); IdToFieldMap.Add(field.Id, field); if((field.Hints?.Count ?? 0) > 0) { Hints.AddRange(field.Hints); if(field.Focused) { FocusedHints.AddRange(field.Hints); } foreach(var hint in field.Hints) { if(!HintToFieldsMap.ContainsKey(hint)) { HintToFieldsMap.Add(hint, new List()); } HintToFieldsMap[hint].Add(field); } } } } }