Skip to content

Commit f618ec4

Browse files
committed
fix(cache): change progress fetch & calculation and fix eviction check
1 parent 0f15097 commit f618ec4

File tree

2 files changed

+33
-17
lines changed

2 files changed

+33
-17
lines changed

src/services/trakt.service.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,18 @@ import { createTab } from '~/utils/browser/browser.utils';
4545
import { CacheRetention, ChromeCacheStore } from '~/utils/cache.utils';
4646

4747
export const shouldEvict = (date?: string | number | Date, cache?: CacheResponse<unknown>): boolean => {
48-
// no date or cache skip
49-
if (!date || !cache?.evict) return false;
50-
// date in the past skip
51-
if (new Date(date) <= new Date()) return false;
48+
// no cache skip
49+
if (!cache?.evict) return false;
5250
// cached today skip
5351
if (cache?.current?.cachedAt) {
5452
const _cachedAt = new Date(cache.current.cachedAt).toLocaleDateString();
5553
const _today = new Date().toLocaleDateString();
5654
if (_cachedAt === _today) return false;
5755
}
58-
return true;
56+
// no date, force evict
57+
if (date === undefined) return true;
58+
// date in the future, force evict
59+
return new Date(date) > new Date();
5960
};
6061

6162
export class TraktService {

src/stores/data/show.store.ts

+27-12
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,37 @@ type SeasonEpisodesLoadingDictionary = Record<string, Record<number, boolean>>;
2727
type EpisodeLoadingDictionary = Record<string, Record<number, Record<number, boolean>>>;
2828

2929
const watchProgressToListProgress = (progress: TraktWatchedProgress | TraktCollectionProgress, id: string | number): ShowProgress => {
30-
return {
30+
let completed = 0;
31+
let aired = 0;
32+
33+
const result = {
3134
id,
3235
...progress,
33-
percentage: (progress.completed / progress.aired) * 100,
34-
finished: progress.completed === progress.aired,
3536
type: 'last_watched_at' in progress ? ShowProgressType.Watched : ShowProgressType.Collection,
3637
date: new Date('last_watched_at' in progress ? progress.last_watched_at : progress.last_collected_at),
37-
seasons: progress.seasons.map(season => ({
38-
...season,
39-
percentage: (season.completed / season.aired) * 100,
40-
finished: season.completed === season.aired,
41-
episodes: season.episodes.map(episode => ({
42-
...episode,
43-
date: new Date('last_watched_at' in episode ? episode.last_watched_at : episode.collected_at),
44-
})),
45-
})),
38+
seasons: progress.seasons.map(season => {
39+
if (season.number > 0) {
40+
completed += season.completed;
41+
aired += season.aired;
42+
}
43+
44+
return {
45+
...season,
46+
percentage: (season.completed / season.aired) * 100,
47+
finished: season.completed === season.aired,
48+
episodes: season.episodes.map(episode => ({
49+
...episode,
50+
date: new Date('last_watched_at' in episode ? episode.last_watched_at : episode.collected_at),
51+
})),
52+
};
53+
}),
54+
};
55+
return {
56+
...result,
57+
completed,
58+
aired,
59+
percentage: (completed / aired) * 100,
60+
finished: completed === aired,
4661
};
4762
};
4863

0 commit comments

Comments
 (0)