From 9f9819a8c8548b0d43b14c5d163daedb4d7d5794 Mon Sep 17 00:00:00 2001 From: aastha Date: Mon, 27 Jan 2025 10:51:23 +0530 Subject: [PATCH] Minor --- .../services/spender-onboarding.service.ts | 60 +++++++++++-------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/src/app/core/services/spender-onboarding.service.ts b/src/app/core/services/spender-onboarding.service.ts index 523a7564fe..ac9c910e35 100644 --- a/src/app/core/services/spender-onboarding.service.ts +++ b/src/app/core/services/spender-onboarding.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { BehaviorSubject, forkJoin, from, map, Observable } from 'rxjs'; +import { BehaviorSubject, forkJoin, from, map, Observable, Subject } from 'rxjs'; import { SpenderPlatformV1ApiService } from './spender-platform-v1-api.service'; import { PlatformApiResponse } from '../models/platform/platform-api-response.model'; import { OnboardingWelcomeStepStatus } from '../models/onboarding-welcome-step-status.model'; @@ -9,7 +9,9 @@ import { UtilityService } from './utility.service'; import { AuthService } from './auth.service'; import { OrgSettingsService } from './org-settings.service'; import { OrgSettings } from '../models/org-settings.model'; +import { Cacheable, CacheBuster } from 'ts-cacheable'; +const spenderOnboardingCacheBuster$ = new Subject(); @Injectable({ providedIn: 'root', }) @@ -23,6 +25,37 @@ export class SpenderOnboardingService { private orgSettingsService: OrgSettingsService ) {} + @Cacheable({ + cacheBusterObserver: spenderOnboardingCacheBuster$, + }) + checkForRedirectionToOnboarding(): Observable { + return forkJoin([ + this.orgSettingsService.get(), + this.getOnboardingStatus(), + from(this.utilityService.isUserFromINCluster()), + this.authService.getEou(), + ]).pipe( + map(([orgSettings, onboardingStatus, isUserFromINCluster, eou]) => { + const isCCCEnabled = this.checkCCCEnabled(orgSettings); + const isCardFeedEnabled = this.checkCardFeedEnabled(orgSettings); + const restrictedOrgs = this.isRestrictedOrg(orgSettings, isUserFromINCluster); + return this.shouldProceedToOnboarding( + eou.org.currency, + restrictedOrgs, + isCCCEnabled && isCardFeedEnabled, + onboardingStatus + ); + }) + ); + } + + @CacheBuster({ + cacheBusterNotifier: spenderOnboardingCacheBuster$, + }) + setOnboardingStatusAsComplete(): Observable { + return this.onboardingComplete$.asObservable(); + } + getOnboardingStatus(): Observable { return this.spenderPlatformV1ApiService .get>('/onboarding') @@ -90,35 +123,10 @@ export class SpenderOnboardingService { return this.processSmsOptInStep(data); } - setOnboardingStatusAsComplete(): Observable { - return this.onboardingComplete$.asObservable(); - } - setOnboardingStatusEvent(): void { this.onboardingComplete$.next(true); } - checkForRedirectionToOnboarding(): Observable { - return forkJoin([ - this.orgSettingsService.get(), - this.getOnboardingStatus(), - from(this.utilityService.isUserFromINCluster()), - this.authService.getEou(), - ]).pipe( - map(([orgSettings, onboardingStatus, isUserFromINCluster, eou]) => { - const isCCCEnabled = this.checkCCCEnabled(orgSettings); - const isCardFeedEnabled = this.checkCardFeedEnabled(orgSettings); - const restrictedOrgs = this.isRestrictedOrg(orgSettings, isUserFromINCluster); - return this.shouldProceedToOnboarding( - eou.org.currency, - restrictedOrgs, - isCCCEnabled && isCardFeedEnabled, - onboardingStatus - ); - }) - ); - } - private checkCCCEnabled(orgSettings: OrgSettings): boolean { return !!orgSettings.corporate_credit_card_settings.allowed && !!orgSettings.corporate_credit_card_settings.enabled; }