diff --git a/Tranga/GlobalBase.cs b/Tranga/GlobalBase.cs index ce01a79..9258a6e 100644 --- a/Tranga/GlobalBase.cs +++ b/Tranga/GlobalBase.cs @@ -14,7 +14,7 @@ public abstract class GlobalBase protected TrangaSettings settings { get; init; } protected HashSet notificationConnectors { get; init; } protected HashSet libraryConnectors { get; init; } - protected List cachedPublications { get; init; } + protected Dictionary cachedPublications { get; init; } public static readonly NumberFormatInfo numberFormatDecimalPoint = new (){ NumberDecimalSeparator = "." }; protected static readonly Regex baseUrlRex = new(@"https?:\/\/[0-9A-z\.-]+(:[0-9]+)?"); diff --git a/Tranga/Jobs/JobBoss.cs b/Tranga/Jobs/JobBoss.cs index 4380497..77cba2f 100644 --- a/Tranga/Jobs/JobBoss.cs +++ b/Tranga/Jobs/JobBoss.cs @@ -160,10 +160,10 @@ public class JobBoss : GlobalBase { this.jobs.FirstOrDefault(jjob => jjob.id == job.parentJobId)?.AddSubJob(job); if (job is DownloadNewChapters dncJob) - cachedPublications.Add(dncJob.manga); + cachedPublications.Add(dncJob.manga.internalId, dncJob.manga); } - HashSet coverFileNames = cachedPublications.Select(manga => manga.coverFileNameInCache!).ToHashSet(); + HashSet coverFileNames = cachedPublications.Select(manga => manga.Value.coverFileNameInCache!).ToHashSet(); foreach (string fileName in Directory.GetFiles(settings.coverImageCache)) //Cleanup Unused Covers { if(!coverFileNames.Any(existingManga => fileName.Contains(existingManga))) diff --git a/Tranga/MangaConnectors/Bato.cs b/Tranga/MangaConnectors/Bato.cs index edc6dc9..58582e7 100644 --- a/Tranga/MangaConnectors/Bato.cs +++ b/Tranga/MangaConnectors/Bato.cs @@ -116,7 +116,7 @@ public class Bato : MangaConnector Manga manga = new (sortName, authors, description, altTitles, tags, posterUrl, coverFileNameInCache, new Dictionary(), year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); - cachedPublications.Add(manga); + cachedPublications.Add(manga.internalId, manga); return manga; } diff --git a/Tranga/MangaConnectors/MangaDex.cs b/Tranga/MangaConnectors/MangaDex.cs index 550e34f..135261b 100644 --- a/Tranga/MangaConnectors/MangaDex.cs +++ b/Tranga/MangaConnectors/MangaDex.cs @@ -187,7 +187,7 @@ public class MangaDex : MangaConnector status, websiteUrl: $"https://mangadex.org/title/{publicationId}" ); - cachedPublications.Add(pub); + cachedPublications.Add(pub.internalId, pub); return pub; } diff --git a/Tranga/MangaConnectors/MangaKatana.cs b/Tranga/MangaConnectors/MangaKatana.cs index de59030..5996439 100644 --- a/Tranga/MangaConnectors/MangaKatana.cs +++ b/Tranga/MangaConnectors/MangaKatana.cs @@ -143,7 +143,7 @@ public class MangaKatana : MangaConnector Manga manga = new (sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links, year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); - cachedPublications.Add(manga); + cachedPublications.Add(manga.internalId, manga); return manga; } diff --git a/Tranga/MangaConnectors/MangaLife.cs b/Tranga/MangaConnectors/MangaLife.cs index 3f87953..d54454f 100644 --- a/Tranga/MangaConnectors/MangaLife.cs +++ b/Tranga/MangaConnectors/MangaLife.cs @@ -123,7 +123,7 @@ public class MangaLife : MangaConnector Manga manga = new(sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links, year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); - cachedPublications.Add(manga); + cachedPublications.Add(manga.internalId, manga); return manga; } diff --git a/Tranga/MangaConnectors/Manganato.cs b/Tranga/MangaConnectors/Manganato.cs index f6ff4c1..437f1b9 100644 --- a/Tranga/MangaConnectors/Manganato.cs +++ b/Tranga/MangaConnectors/Manganato.cs @@ -133,7 +133,7 @@ public class Manganato : MangaConnector Manga manga = new (sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links, year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); - cachedPublications.Add(manga); + cachedPublications.Add(manga.internalId, manga); return manga; } diff --git a/Tranga/MangaConnectors/Mangasee.cs b/Tranga/MangaConnectors/Mangasee.cs index f99e108..32053b6 100644 --- a/Tranga/MangaConnectors/Mangasee.cs +++ b/Tranga/MangaConnectors/Mangasee.cs @@ -179,7 +179,7 @@ public class Mangasee : MangaConnector Manga manga = new(sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links, year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); - cachedPublications.Add(manga); + cachedPublications.Add(manga.internalId, manga); return manga; } diff --git a/Tranga/MangaConnectors/Mangaworld.cs b/Tranga/MangaConnectors/Mangaworld.cs index 0f2e80d..fbea159 100644 --- a/Tranga/MangaConnectors/Mangaworld.cs +++ b/Tranga/MangaConnectors/Mangaworld.cs @@ -120,7 +120,7 @@ public class Mangaworld: MangaConnector Manga manga = new (sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links, year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); - cachedPublications.Add(manga); + cachedPublications.Add(manga.internalId, manga); return manga; } diff --git a/Tranga/Tranga.cs b/Tranga/Tranga.cs index cd3b3bc..ca01d88 100644 --- a/Tranga/Tranga.cs +++ b/Tranga/Tranga.cs @@ -56,9 +56,11 @@ public partial class Tranga : GlobalBase public Manga? GetPublicationById(string internalId) { - if (cachedPublications.Exists(publication => publication.internalId == internalId)) - return cachedPublications.First(publication => publication.internalId == internalId); - return null; + return cachedPublications.TryGetValue(internalId, out Manga manga) switch + { + true => manga, + _ => null + }; } public bool TryGetPublicationById(string internalId, out Manga? manga)