diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/index.ts b/npm/ng-packs/packages/core/src/lib/interceptors/index.ts index ddcc17e23d..40fd61ac94 100644 --- a/npm/ng-packs/packages/core/src/lib/interceptors/index.ts +++ b/npm/ng-packs/packages/core/src/lib/interceptors/index.ts @@ -1,2 +1,3 @@ export * from './api.interceptor'; export * from './timezone.interceptor'; +export * from './transfer-state.interceptor'; diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/transfer-state.interceptor.ts b/npm/ng-packs/packages/core/src/lib/interceptors/transfer-state.interceptor.ts index 2ac7d6369a..3cc4720b35 100644 --- a/npm/ng-packs/packages/core/src/lib/interceptors/transfer-state.interceptor.ts +++ b/npm/ng-packs/packages/core/src/lib/interceptors/transfer-state.interceptor.ts @@ -1,8 +1,8 @@ -import { inject, Injectable, makeStateKey, PLATFORM_ID, TransferState } from '@angular/core'; +import { inject, makeStateKey, PLATFORM_ID, TransferState } from '@angular/core'; import { HttpEvent, - HttpHandler, - HttpInterceptor, + HttpHandlerFn, + HttpInterceptorFn, HttpRequest, HttpResponse, } from '@angular/common/http'; @@ -10,35 +10,33 @@ import { Observable, of } from 'rxjs'; import { isPlatformBrowser, isPlatformServer } from '@angular/common'; import { tap } from 'rxjs/operators'; -@Injectable() -export class TransferStateInterceptor implements HttpInterceptor { - private transferState = inject(TransferState); - private platformId = inject(PLATFORM_ID); +export const transferStateInterceptor: HttpInterceptorFn = ( + req: HttpRequest, + next: HttpHandlerFn, +): Observable> => { + const transferState = inject(TransferState); + const platformId = inject(PLATFORM_ID); - constructor() {} - - intercept(req: HttpRequest, next: HttpHandler): Observable> { - if (req.method !== 'GET') { - return next.handle(req); - } + if (req.method !== 'GET') { + return next(req); + } - const stateKey = makeStateKey>(req.urlWithParams); + const stateKey = makeStateKey>(req.urlWithParams); - if (isPlatformBrowser(this.platformId)) { - const storedResponse = this.transferState.get>(stateKey, null); - if (storedResponse) { - this.transferState.remove(stateKey); - return of(new HttpResponse({ body: storedResponse, status: 200 })); - } + if (isPlatformBrowser(platformId)) { + const storedResponse = transferState.get>(stateKey, null); + if (storedResponse) { + transferState.remove(stateKey); + return of(new HttpResponse({ body: storedResponse, status: 200 })); } - - return next.handle(req).pipe( - tap(event => { - if (isPlatformServer(this.platformId) && event instanceof HttpResponse) { - this.transferState.set(stateKey, event.body); - console.log(`Interceptor: ${req.urlWithParams} verisi TransferState'e kaydedildi.`); - } - }), - ); } -} + + return next(req).pipe( + tap(event => { + if (isPlatformServer(platformId) && event instanceof HttpResponse) { + transferState.set(stateKey, event.body); + console.log(`Interceptor: ${req.urlWithParams} verisi TransferState'e kaydedildi.`); + } + }), + ); +}; diff --git a/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts b/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts index bceb4b616b..4a31dd4185 100644 --- a/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts +++ b/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts @@ -4,6 +4,7 @@ import { HTTP_INTERCEPTORS, provideHttpClient, withFetch, + withInterceptors, withInterceptorsFromDi, withXsrfConfiguration, } from '@angular/common/http'; @@ -26,7 +27,7 @@ import { DEFAULT_DYNAMIC_LAYOUTS } from '../constants'; import { LocalizationService, LocalStorageListenerService, AbpTitleStrategy } from '../services'; import { DefaultQueueManager, getInitialData, localeInitializer } from '../utils'; import { CookieLanguageProvider, IncludeLocalizationResourcesProvider, LocaleProvider } from './'; -import { TimezoneInterceptor } from '../interceptors'; +import { TimezoneInterceptor, transferStateInterceptor } from '../interceptors'; export enum CoreFeatureKind { Options, @@ -107,6 +108,7 @@ export function provideAbpCore(...features: CoreFeature[]) { headerName: 'RequestVerificationToken', }), withFetch(), + withInterceptors([transferStateInterceptor]), ), provideAppInitializer(() => { getInitialData();