private async Task CheckPwned() { if (!CrossConnectivity.Current.IsConnected) { await UserDialogs.Instance.AlertAsync("It seems you have no active internet connection. Please verify that you have and try again.", "No internet", "OK"); return; } HasItems = false; HasSearched = false; IsLoading = true; try { var resultBreaches = await BeenPwnedService.Instance.GetBreachesForAccount(Filter); var breachesGroup = BreachesAndPastes.SingleOrDefault(b => b.Name == "Breaches"); if (breachesGroup == null) { BreachesAndPastes.Add(new SearchListGroup("Breaches")); } BreachesAndPastes.Single(b => b.Name == "Breaches").ReplaceRange(resultBreaches); IEnumerable <Paste> resultPastes = null; try { resultPastes = await BeenPwnedService.Instance.GetPastesForAccount(Filter); var pastesGroup = BreachesAndPastes.SingleOrDefault(b => b.Name == "Pastes"); if (resultPastes.Count() > 0) { if (pastesGroup == null) { BreachesAndPastes.Add(new SearchListGroup("Pastes")); } BreachesAndPastes.Single(b => b.Name == "Pastes").ReplaceRange(resultPastes); } else { BreachesAndPastes.Remove(pastesGroup); } } catch (ArgumentException) { // If the given acount is not a (valid) e-mailaddress an ArgumentException will be thrown BreachesAndPastes.SingleOrDefault(b => b.Name == "Pastes")?.Clear(); BreachesAndPastes.Remove(BreachesAndPastes.Where(g => g.Name == "Pastes").SingleOrDefault()); } HasItems = BreachesAndPastes.SelectMany(g => g).Any(); var breachCount = resultBreaches?.Count() ?? 0; var pasteCount = resultPastes?.Count() ?? 0; BreachedDescription = $"Pwned on {breachCount} breached site(s) and found {pasteCount} paste(s)."; } catch { IsError = true; } finally { IsLoading = false; HasSearched = true; } }
public MainPageModel() { BreachesAndPastes.Add(new SearchListGroup("Breaches")); BreachesAndPastes.Add(new SearchListGroup("Pastes")); }