@@ -147,6 +147,7 @@ export const useImageStore = defineStore(ImageStoreConstants.Store, () => {
147
147
if ( ! ( key in queue ) ) queue [ key ] = request ( ) ;
148
148
const response = await queue [ key ] ;
149
149
delete imageErrors [ type ] ?. [ key ] ;
150
+ delete queue [ key ] ;
150
151
return response ;
151
152
} catch ( error ) {
152
153
if ( error instanceof Response && error . status === 404 ) {
@@ -170,18 +171,19 @@ export const useImageStore = defineStore(ImageStoreConstants.Store, () => {
170
171
const fetchImageUrl = async (
171
172
key : string ,
172
173
{ id, season, episode, type } : ImageQuery ,
174
+ force ?: boolean ,
173
175
) : Promise < { image : ImageStoreMedias ; key : string ; type : ImageQuery [ 'type' ] } | undefined > => {
174
176
let payload : ImagePayload ;
175
177
if ( type === 'movie' ) {
176
- payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . movie ( id ) ) ;
178
+ payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . movie ( id , force ) ) ;
177
179
} else if ( type === 'person' ) {
178
- payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . person ( id ) ) ;
180
+ payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . person ( id , force ) ) ;
179
181
} else if ( type === 'episode' && season !== undefined && episode !== undefined ) {
180
- payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . episode ( id , season , episode ) ) ;
182
+ payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . episode ( id , season , episode , force ) ) ;
181
183
} else if ( type === 'season' && season !== undefined ) {
182
- payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . season ( id , season ) ) ;
184
+ payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . season ( id , season , force ) ) ;
183
185
} else if ( type === 'show' ) {
184
- payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . show ( id ) ) ;
186
+ payload = await queueRequest ( { key, type } , ( ) => TraktService . posters . show ( id , force ) ) ;
185
187
} else {
186
188
Logger . error ( 'Unsupported type or missing parameters for fetchImageUrl' , { key, id, season, episode, type } ) ;
187
189
throw new Error ( 'Unsupported type or missing parameters for fetchImageUrl' ) ;
@@ -191,7 +193,7 @@ export const useImageStore = defineStore(ImageStoreConstants.Store, () => {
191
193
const sType = 'show' ;
192
194
const sKey = `${ sType } -${ id } ` ;
193
195
if ( images [ sType ] [ sKey ] ) return { image : images [ sType ] [ sKey ] , key : sKey , type : sType } ;
194
- return fetchImageUrl ( sKey , { id, type : sType } ) ;
196
+ return fetchImageUrl ( sKey , { id, type : sType } , force ) ;
195
197
}
196
198
197
199
if ( [ 'movie' , 'show' ] . includes ( type ) ) {
@@ -270,15 +272,25 @@ export const useImageStore = defineStore(ImageStoreConstants.Store, () => {
270
272
return { key, type, baseUrl, image : getResponseValue ( { image, baseUrl, type, size } ) } ;
271
273
} ;
272
274
273
- const getImageUrl = async ( { query, size = 300 , fetch = true } : { query : ImageQuery ; size ?: number | 'original' ; fetch ?: boolean } ) => {
275
+ const getImageUrl = async ( {
276
+ query,
277
+ size = 300 ,
278
+ fetch = true ,
279
+ force,
280
+ } : {
281
+ query : ImageQuery ;
282
+ size ?: number | 'original' ;
283
+ fetch ?: boolean ;
284
+ force ?: boolean ;
285
+ } ) => {
274
286
if ( ! tmdbConfig . value ) throw new Error ( 'TmdbConfiguration not initialized' ) ;
275
287
if ( ! tmdbConfig . value ?. images ?. secure_base_url ) throw new Error ( 'TmdbConfiguration missing secure_base_url' ) ;
276
288
277
289
const { image, key, type, baseUrl = tmdbConfig . value . images . secure_base_url } = getImageResponse ( { query, size } ) ;
278
290
279
- if ( image || ! fetch ) return image ;
291
+ if ( ! force && ( image || ! fetch ) ) return image ;
280
292
281
- const result = await fetchImageUrl ( key , query ) ;
293
+ const result = await fetchImageUrl ( key , query , force ) ;
282
294
if ( ! result ?. image ) return undefined ;
283
295
return getResponseValue ( { image : result . image , baseUrl, type, size } ) ;
284
296
} ;
0 commit comments