public async Task ExecuteLoadFlagsCommand() { if (IsBusy) return; IsBusy = true; try { var userManager = new UserManager(Settings.AccessToken); var flags = await userManager.GetFlags(); //Use linq to sorty our monkeys by name and then group them by the new name sort property var sorted = from flag in flags orderby flag.AlertLevel group flag by flag.AlertLevel.ToString() into flagGroup select new Grouping<string, Flag>(flagGroup.Key, flagGroup); //create a new collection of groups FlagsGrouped = new ObservableCollection<Grouping<string, Flag>>(sorted); OnPropertyChanged("FlagsGrouped"); } catch (Exception ex) { var page = new ContentPage(); page.DisplayAlert("Error", "Unable to load flags.", "OK"); ; } finally { IsBusy = false; } }
public async Task ExecuteFlagFriendCommand (long friendId, string name) { if (IsBusy) return; using (BusyContext ()) { try { if (!await RefreshToken ()) return; var userManager = new UserManager (Settings.AccessToken); var flagList = await userManager.GetFlags (); if (flagList.Count == 0) return; LoadingMessage = "Loading..."; App.MessageDialog.SelectOption ("Report Friend For:", flagList.Select (f => f.Description).ToArray (), async (which) => { try { var firstFlag = flagList [which]; await userManager.FlagUser ((int)friendId, firstFlag.Id); RaiseNotification ("User has been flagged for administrative review."); } catch (Exception ex) { App.Logger.Report (ex); RaiseError ("Unable to flag, please try again."); } }); } catch (Exception ex) { App.Logger.Report (ex); RaiseError ("Unable to flag, please try again."); } } }