@@ -27,22 +27,37 @@ type SeasonEpisodesLoadingDictionary = Record<string, Record<number, boolean>>;
27
27
type EpisodeLoadingDictionary = Record < string , Record < number , Record < number , boolean > > > ;
28
28
29
29
const watchProgressToListProgress = ( progress : TraktWatchedProgress | TraktCollectionProgress , id : string | number ) : ShowProgress => {
30
- return {
30
+ let completed = 0 ;
31
+ let aired = 0 ;
32
+
33
+ const result = {
31
34
id,
32
35
...progress ,
33
- percentage : ( progress . completed / progress . aired ) * 100 ,
34
- finished : progress . completed === progress . aired ,
35
36
type : 'last_watched_at' in progress ? ShowProgressType . Watched : ShowProgressType . Collection ,
36
37
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 ,
46
61
} ;
47
62
} ;
48
63
0 commit comments