private async Task FetchData(WatchedItemDataEntry entry) { var semaphore = _domainSemaphores[entry.WatchedItemEntry.Domain]; try { await semaphore.WaitAsync(); var crawler = _crawlerManager.Manager.GetCrawler(entry.WatchedItemEntry.Domain); var result = await crawler.CrawlById(entry.WatchedItemEntry.Id); entry.Data = result.Result; ItemDetailsFetched?.Invoke(this, entry); } finally { semaphore.Release(); } }
public async void RequestSingleItemUpdate(WatchedItemDataEntry entry) { await FetchData(entry); }
public async void RemoveWatchedEntry(WatchedItemDataEntry entry) { _watchedItems.Remove(entry.WatchedItemEntry.Id); Entries.Remove(entry); await _appVariables.WatchedItems.SetAsync(Entries.Select(dataEntry => dataEntry.WatchedItemEntry).ToList()); }