frontend: improve ui performance when chapters are updated
This commit is contained in:
@@ -34,8 +34,7 @@ export default class MangaLists extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get chaptersBySeriesId(): Map<number, MangaUpdatesChapter[]> {
|
get chaptersBySeriesId(): Map<number, MangaUpdatesChapter[]> {
|
||||||
const chapters = this.mangaStore.mangaUpdatesChapters;
|
return this.mangaStore.mangaUpdatesChapters;
|
||||||
return groupBy(chapters, e => e.series_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get viewLists(): ViewList[] {
|
get viewLists(): ViewList[] {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ export class MangaStore extends Pinia {
|
|||||||
private cachedAniListManga = new Map<string, AniListMangaListEntry[]>();
|
private cachedAniListManga = new Map<string, AniListMangaListEntry[]>();
|
||||||
private cachedAniListMedia: AniListMedia[] = [];
|
private cachedAniListMedia: AniListMedia[] = [];
|
||||||
private cachedAniListUser: AniListUser | null = null;
|
private cachedAniListUser: AniListUser | null = null;
|
||||||
private cachedMangaUpdatesChapters: MangaUpdatesChapter[] = [];
|
private cachedMangaUpdatesChaptersBySeriesId: Map<number, MangaUpdatesChapter[]> = new Map();
|
||||||
private cachedMangaUpdatesSeries: MangaUpdatesSeries[] = [];
|
private cachedMangaUpdatesSeries: MangaUpdatesSeries[] = [];
|
||||||
private cachedMangaUpdatesRelations: MangaUpdatesRelation[] = [];
|
private cachedMangaUpdatesRelations: MangaUpdatesRelation[] = [];
|
||||||
private cachedUserName: string | null = null;
|
private cachedUserName: string | null = null;
|
||||||
@@ -46,8 +46,8 @@ export class MangaStore extends Pinia {
|
|||||||
return this.cachedAniListUser;
|
return this.cachedAniListUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
get mangaUpdatesChapters(): MangaUpdatesChapter[] {
|
get mangaUpdatesChapters(): Map<number, MangaUpdatesChapter[]> {
|
||||||
return this.cachedMangaUpdatesChapters;
|
return this.cachedMangaUpdatesChaptersBySeriesId;
|
||||||
}
|
}
|
||||||
|
|
||||||
get mangaUpdatesRelations(): MangaUpdatesRelation[] {
|
get mangaUpdatesRelations(): MangaUpdatesRelation[] {
|
||||||
@@ -101,11 +101,8 @@ export class MangaStore extends Pinia {
|
|||||||
await this.dbStore.mangaUpdatesRepository.updateChapters(chapters);
|
await this.dbStore.mangaUpdatesRepository.updateChapters(chapters);
|
||||||
|
|
||||||
// update cache
|
// update cache
|
||||||
const cachedById = groupBy(this.cachedMangaUpdatesChapters, c => c.series_id);
|
const chaptersBySeriesId = groupBy(chapters, c => c.series_id);
|
||||||
const chaptersById = groupBy(chapters, c => c.series_id);
|
chaptersBySeriesId.forEach((v, k) => this.cachedMangaUpdatesChaptersBySeriesId.set(k, v));
|
||||||
chaptersById.forEach((v, k) => cachedById.set(k, v));
|
|
||||||
this.cachedMangaUpdatesChapters.splice(0);
|
|
||||||
this.cachedMangaUpdatesChapters.push(...Array.from(cachedById.values()).flat());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async updateMangaUpdatesSeries(media: MangaUpdatesSeries[]): Promise<void> {
|
async updateMangaUpdatesSeries(media: MangaUpdatesSeries[]): Promise<void> {
|
||||||
@@ -138,7 +135,7 @@ export class MangaStore extends Pinia {
|
|||||||
this.cachedAniListLists.splice(0);
|
this.cachedAniListLists.splice(0);
|
||||||
this.cachedAniListMedia.splice(0);
|
this.cachedAniListMedia.splice(0);
|
||||||
this.cachedAniListUser = null;
|
this.cachedAniListUser = null;
|
||||||
this.cachedMangaUpdatesChapters.splice(0);
|
this.cachedMangaUpdatesChaptersBySeriesId.clear();
|
||||||
this.cachedMangaUpdatesSeries.splice(0);
|
this.cachedMangaUpdatesSeries.splice(0);
|
||||||
this.cachedMangaUpdatesRelations.splice(0);
|
this.cachedMangaUpdatesRelations.splice(0);
|
||||||
}
|
}
|
||||||
@@ -156,7 +153,8 @@ export class MangaStore extends Pinia {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.cachedMangaUpdatesChapters.push(...await this.dbStore.mangaUpdatesRepository.getChapters());
|
const chapters = groupBy(await this.dbStore.mangaUpdatesRepository.getChapters(), e => e.series_id);
|
||||||
|
chapters.forEach((seriesChapters, seriesId) => this.cachedMangaUpdatesChaptersBySeriesId.set(seriesId, seriesChapters));
|
||||||
this.cachedMangaUpdatesSeries.push(...await this.dbStore.mangaUpdatesRepository.getSeries());
|
this.cachedMangaUpdatesSeries.push(...await this.dbStore.mangaUpdatesRepository.getSeries());
|
||||||
this.cachedMangaUpdatesRelations.push(...await this.dbStore.mangaUpdatesRepository.getRelations());
|
this.cachedMangaUpdatesRelations.push(...await this.dbStore.mangaUpdatesRepository.getRelations());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user