diff --git a/projects/ngneat/cashew/src/lib/cache-interceptor.ts b/projects/ngneat/cashew/src/lib/cache-interceptor.ts index 69ccbcf..65010f0 100644 --- a/projects/ngneat/cashew/src/lib/cache-interceptor.ts +++ b/projects/ngneat/cashew/src/lib/cache-interceptor.ts @@ -2,6 +2,7 @@ import { Inject, Injectable, PLATFORM_ID } from '@angular/core'; import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http'; import { Observable, of } from 'rxjs'; import { finalize, share, tap } from 'rxjs/operators'; +import { HTTP_CACHE_CONFIG, HttpCacheConfig } from './cache-config'; import { HttpCacheManager } from './cache-manager.service'; import { KeySerializer } from './key-serializer'; @@ -21,7 +22,8 @@ export class HttpCacheInterceptor implements HttpInterceptor { constructor( private httpCacheManager: HttpCacheManager, private keySerializer: KeySerializer, - @Inject(PLATFORM_ID) private platformId: Object + @Inject(PLATFORM_ID) private platformId: Object, + @Inject(HTTP_CACHE_CONFIG) private config: HttpCacheConfig ) {} intercept(request: HttpRequest, next: HttpHandler): Observable> { @@ -94,7 +96,7 @@ export class HttpCacheInterceptor implements HttpInterceptor { tap(event => { if (event instanceof HttpResponse) { const cache = this.httpCacheManager._resolveResponse(event); - this.httpCacheManager._set(key, cache, +ttl!); + this.httpCacheManager._set(key, cache, ttl || this.config.ttl); } }), finalize(() => queue.delete(key)), diff --git a/projects/ngneat/cashew/src/lib/specs/cache-interceptor.spec.ts b/projects/ngneat/cashew/src/lib/specs/cache-interceptor.spec.ts index 10def20..f2728ac 100644 --- a/projects/ngneat/cashew/src/lib/specs/cache-interceptor.spec.ts +++ b/projects/ngneat/cashew/src/lib/specs/cache-interceptor.spec.ts @@ -28,7 +28,7 @@ describe('HttpCacheInterceptor', () => { beforeEach(() => { handler = httpHandler(); - httpCacheInterceptor = new HttpCacheInterceptor(httpCacheManager(), keySerializer(), config); + httpCacheInterceptor = new HttpCacheInterceptor(httpCacheManager(), keySerializer(), {}, config); expect.hasAssertions(); }); @@ -55,7 +55,7 @@ describe('HttpCacheInterceptor', () => { it('should cache a return a serialized request when passing a serializer', () => { const responseSerializer = jest.fn(v => 'serialized'); const cacheManager: any = httpCacheManager({ ...config, responseSerializer }); - httpCacheInterceptor = new HttpCacheInterceptor(cacheManager, keySerializer(), config); + httpCacheInterceptor = new HttpCacheInterceptor(cacheManager, keySerializer(), {}, config); call(request({ cache: true })); expect(handler.handle).toHaveBeenCalledTimes(1); /* The serializer is called when adding the value to the cache and when retrieving it */ @@ -67,6 +67,7 @@ describe('HttpCacheInterceptor', () => { httpCacheInterceptor = new HttpCacheInterceptor( httpCacheManager({ ...config, strategy: 'implicit' }), keySerializer(), + {}, config ); call(request({})); @@ -77,6 +78,7 @@ describe('HttpCacheInterceptor', () => { httpCacheInterceptor = new HttpCacheInterceptor( httpCacheManager({ ...config, strategy: 'implicit' }), keySerializer(), + {}, config ); call(request({ cache: false }));