/// <summary> /// Asynchronous method used to get account statistics /// </summary> private async void UpdateStatistics() { // gets inbox message count int unread = (int)Box.ThreadsUnread; int total = (int)Box.ThreadsTotal; // builds the chart if (total == 0) { UI.chartUnreadMails.Width = 0; UI.chartTotalMails.Width = 0; } else { const int MAXIMUM_SCALE = 100; bool INBOX_FULL = total > MAXIMUM_SCALE; int scale = INBOX_FULL ? total : MAXIMUM_SCALE; UI.chartUnreadMails.Width = INBOX_FULL && unread == 1 ? 1 : (unread * UI.chartInbox.Width) / scale; UI.chartTotalMails.Width = (total * UI.chartInbox.Width) / scale; } // updates the tooltip informations UI.tip.SetToolTip(UI.chartUnreadMails, unread + " " + (unread > 1 ? Translation.unreadMessages : Translation.unreadMessage)); UI.tip.SetToolTip(UI.chartTotalMails, total + " " + (total > 1 ? Translation.messages : Translation.message)); // updates the draft informations ListDraftsResponse drafts = await Api.Users.Drafts.List("me").ExecuteAsync(); UI.labelTotalDrafts.Text = drafts.Drafts != null?drafts.Drafts.Count.ToString() : "0"; // updates the label informations ListLabelsResponse labels = await Api.Users.Labels.List("me").ExecuteAsync(); UI.labelTotalLabels.Text = labels.Labels != null?labels.Labels.Count.ToString() : "0"; }
private async Task <List <FormattedMessage> > GetDrafts(ISender sender, int offset = 0, string searchExpression = null, int resultsPerPage = 50, int draftsInOneResponse = 10) { if (resultsPerPage < 1 || resultsPerPage > 500) { throw new ArgumentOutOfRangeException(nameof(resultsPerPage), "must be from 1 to 500."); } if (draftsInOneResponse < 1 || draftsInOneResponse > 50) { throw new ArgumentOutOfRangeException(nameof(draftsInOneResponse), "must be from 1 to 50."); } var formattedMessages = new List <FormattedMessage>(); var service = Methods.SearchServiceByUserId(sender.From); var query = service.GmailService.Users.Drafts.List("me"); query.MaxResults = resultsPerPage; query.Q = searchExpression; ListDraftsResponse listDraftsResponse = null; var totalDrafts = new List <Draft>(); string pageToken = null; var tempOffset = offset; while (tempOffset >= 0) { query.PageToken = pageToken; listDraftsResponse = await query.ExecuteAsync(); if (listDraftsResponse.Drafts != null) { totalDrafts.AddRange(listDraftsResponse.Drafts); } if (string.IsNullOrEmpty(listDraftsResponse.NextPageToken)) { break; } pageToken = listDraftsResponse.NextPageToken; tempOffset -= resultsPerPage; } if (listDraftsResponse?.Drafts == null) { return(formattedMessages); } foreach (var draft in totalDrafts.Skip(offset).Take(draftsInOneResponse)) { var getDraftRequest = service.GmailService.Users.Drafts.Get("me", draft.Id); getDraftRequest.Format = UsersResource.DraftsResource.GetRequest.FormatEnum.Metadata; var draftInfoResponse = await getDraftRequest.ExecuteAsync(); if (draftInfoResponse == null) { continue; } var fMessage = new FormattedMessage(draftInfoResponse); formattedMessages.Add(fMessage); } return(formattedMessages); }