void communityWorker_DoWork(object sender, DoWorkEventArgs e) { SearchCommunityResults res = new SearchCommunityResults { ErrorMessage = string.Empty, TvDBLinks = new List <VM_CrossRef_AniDB_TvDBV2>(), TraktLinks = new List <VM_CrossRef_AniDB_TraktV2>(), ExtraInfo = string.Empty, AnimeID = -1 }; try { if (!(e.Argument is VM_AniDB_Anime anime)) { return; } res.AnimeID = anime.AnimeID; SearchCriteria crit = new SearchCriteria { AnimeID = anime.AnimeID, ExtraInfo = string.Empty }; // search for TvDB links try { List <Azure_CrossRef_AniDB_TvDB> xrefs = VM_ShokoServer.Instance.ShokoServices.GetTVDBCrossRefWebCache(crit.AnimeID, true).CastList <Azure_CrossRef_AniDB_TvDB>(); if (xrefs != null && xrefs.Count > 0) { foreach (Azure_CrossRef_AniDB_TvDB xref in xrefs) { res.TvDBLinks.Add((VM_CrossRef_AniDB_TvDBV2)xref); } } } catch (Exception ex) { res.ErrorMessage = ex.Message; } // search for Trakt links try { List <Azure_CrossRef_AniDB_Trakt> xrefs = VM_ShokoServer.Instance.ShokoServices.GetTraktCrossRefWebCache(crit.AnimeID, true); if (xrefs != null && xrefs.Count > 0) { foreach (Azure_CrossRef_AniDB_Trakt xref in xrefs) { res.TraktLinks.Add((VM_CrossRef_AniDB_TraktV2)xref); } } } catch (Exception ex) { res.ErrorMessage = ex.Message; } e.Result = res; } catch (Exception ex) { res.ErrorMessage = ex.Message; e.Result = res; } }
void communityWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { try { SearchCommunityResults res = e.Result as SearchCommunityResults; if (res == null) { return; } VM_AniDB_Anime anime = DataContext as VM_AniDB_Anime; if (anime == null) { return; } if (anime.AnimeID != res.AnimeID) { return; } if (!string.IsNullOrEmpty(res.ErrorMessage)) { return; } foreach (VM_CrossRef_AniDB_TvDBV2 tvxref in res.TvDBLinks) { CommunityTVDBLinks.Add(tvxref); } foreach (VM_CrossRef_AniDB_TraktV2 traktxref in res.TraktLinks) { CommunityTraktLinks.Add(traktxref); } btnTvDBCommLinks1.IsEnabled = true; btnTvDBCommLinks2.IsEnabled = true; CommTvDBButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_NoLinksAvailable; if (CommunityTVDBLinks.Count > 0) { CommTvDBButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_NeedApproval; foreach (VM_CrossRef_AniDB_TvDBV2 xref in CommunityTVDBLinks) { if (xref.IsAdminApprovedBool) { CommTvDBButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_ApprovalExists; break; } } } btnTraktCommLinks1.IsEnabled = true; btnTraktCommLinks2.IsEnabled = true; CommTraktButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_NoLinksAvailable; if (CommunityTraktLinks.Count > 0) { CommTraktButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_NeedApproval; foreach (VM_CrossRef_AniDB_TraktV2 xref in CommunityTraktLinks) { if (xref.IsAdminApprovedBool) { CommTraktButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_ApprovalExists; break; } } } //SearchStatus = string.Format("{0} Anime still need TvDB approval", link.AnimeNeedingApproval); } catch (Exception ex) { logger.Error(ex, ex.ToString()); } }