public DownloadedChapterInfo GetDownloadInfo(IChapterRecord chapterRecord, bool prefetch)
{
if (chapterRecord == null)
throw new ArgumentNullException("chapterRecord");
if (String.IsNullOrEmpty(chapterRecord.ChapterId))
throw new ArgumentException("Invalid chapter record, chapter id must not be null or empty.", "chapterRecord");
if (!prefetch)
{
return GetDownloadInfo(chapterRecord);
}
// this not very nice way is used to workaround this issue: http://system.data.sqlite.org/index.html/tktview/393d954be0
if (chapterRecord.MangaRecord == null)
throw new ArgumentException("MangaRecord must not be null", "chapterRecord");
var mangaKey = new Tuple<Guid, string>(chapterRecord.MangaRecord.Scraper, chapterRecord.MangaRecord.MangaId);
var chapters = DownloadInfoRecordsCache[mangaKey];
if (chapters == null)
{
chapters = _storage.GetChaptersInfo(chapterRecord.MangaRecord).ToDictionary(dci => dci.ChapterRecord.ChapterId);
DownloadInfoRecordsCache[mangaKey] = chapters;
}
DownloadedChapterInfo downloadInfo;
chapters.TryGetValue(chapterRecord.ChapterId, out downloadInfo);
return downloadInfo;
}