public async Task RefreshUpdates()
{
if (!IsUpdateRefreshing)
{
IsUpdateRefreshing = true;
await WrapGuiAction(() => labUpdateTime.Text = "Refreshing");
List<Task<Updates>> tasks = new List<Task<Updates>>();
foreach (string s in DownloadPluginHandler.Instance.AvailableAuthorizations)
{
tasks.Add(DownloadPluginHandler.Instance.Updates(s));
}
await Task.WhenAll(tasks);
List<Episode> updates=new List<Episode>();
foreach (Task<Updates> up in tasks)
{
if (up.Result.Status != ResponseStatus.Ok)
await WrapGuiAction(() => Log(LogType.Error, up.Result.ErrorMessage));
else
updates.AddRange(up.Result.Items);
}
List<EpisodeWithDownloadSettings> downloads = Follows.Instance.CheckFollows(updates);
await WrapGuiAction(() =>
{
foreach (EpisodeWithDownloadSettings d in downloads)
{
AddDownloadEpisode(d, d.Quality, d.Format,false);
}
Episode epu = null;
if (objUpdates.SelectedObject != null)
epu = (Episode)objUpdates.SelectedObject;
objUpdates.BeginUpdate();
objUpdates.SetObjects(updates);
objUpdates.BuildGroups(olvUpdateDate, SortOrder.Descending);
objUpdates.BuildList(true);
objUpdates.Sort(olvUpdateDate,SortOrder.Descending);
objUpdates.EndUpdate();
if (epu != null)
{
Episode n = updates.FirstOrDefault(a => a.UniqueTag == epu.UniqueTag);
if (n != null)
objUpdates.SelectedObject = n;
}
});
Episode last = updates.OrderByDescending(a => a.DateTime).FirstOrDefault();
if (last!=null)
await WrapGuiAction(() => labUpdateLast.Text=last.ShowName+" "+last.EpisodeAlpha);
IsUpdateRefreshing = false;
IsUpdated = true;
}
if (secondtimer == null)
{
SecondCount = Settings.Instance.UpdateTime*60;
secondtimer = new Timer(SecondTimer, null, 1000, 1000);
}
}