{"version":3,"file":"chunk-nt9i02k3.js","sources":["packages/vanilla/lib/shared/kyc/src/kyc-status.service.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\nimport { SharedFeaturesApiService, UserService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, Subject, groupBy, mergeMap, throttleTime } from 'rxjs';\n\n/**\n * @stable\n */\nexport interface KycStatus extends Record {\n accountStatus: string;\n accountVerificationIsRequired: boolean;\n additionalKycInfo: { Key: ''; Value: '' }[];\n additionalRibbonInfo: { Key: ''; Value: '' }[];\n addressVerificationStatus: string;\n ageVerificationGraceDays: number;\n ageVerificationGracePeriod: string;\n ageVerificationStatus: string;\n amlVerificationStatus: string;\n bankAccountIsRegistered: boolean;\n bankIdVerificationStatus: string;\n blackListVerificationStatus: string;\n createDate: string;\n custom3: string;\n custom4: string;\n depositGraceDays: number;\n depositSuppressed: boolean;\n docsPendingWith: string;\n documentUploadStatusIsPending: boolean;\n emailVerificationStatus: string;\n f2FVerificationRequired: boolean;\n graceDaysBeforeNextAction: number;\n graceDaysUnit: string;\n idVerificationGraceDays: number;\n idVerificationStatus: string;\n idVerificationGracePeriod: string;\n isBlackListAttempted: boolean;\n isCommVerified: boolean;\n isEmailVerified: boolean;\n isKycStarted: boolean;\n isMobileNumberVerified: boolean;\n isTransitionPlayer: boolean;\n kycAttempts: number;\n kycAuthenticationStatus: string;\n kycMaxAttempts: number;\n kycMaxAttemptsReached: boolean;\n kycVerified: boolean;\n partiallyVerified: boolean;\n personalIdVerificationStatus: string;\n ribbonStatusCode: string;\n ribbonStatusMessage: string;\n secretPinVerificationStatus: string;\n ssnVerificationAttempts: number;\n ssnVerificationMaxAttempts: number;\n ssnVerificationMaxAttemptsReached: boolean;\n ssnVerificationStatus: string;\n thirdPartyVerificationStatus: string;\n userHasBonuses: boolean;\n verificationDaysLeft: number;\n verificationStatus: string;\n verificationType: string;\n}\n\n/**\n * Options to be passed to {@link KycStatusService#refresh}\n *\n * @experimental\n */\nexport interface KycStatusOptions extends Record {\n /**\n * If provided, it will be passed to the document upload API.\n */\n useCase?: string;\n /**\n * if true it will try to fetch values from cache.\n */\n cached?: boolean;\n}\n\n/**\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class KycStatusService {\n readonly status = signal(null);\n public static UnauthKycStatus: KycStatus = {\n accountStatus: 'Unknown',\n accountVerificationIsRequired: false,\n additionalKycInfo: [],\n additionalRibbonInfo: [],\n addressVerificationStatus: 'Unknown',\n ageVerificationGraceDays: -1,\n ageVerificationGracePeriod: 'Unknown',\n ageVerificationStatus: 'Unknown',\n amlVerificationStatus: 'Unknown',\n bankAccountIsRegistered: false,\n bankIdVerificationStatus: 'Unknown',\n blackListVerificationStatus: 'Unknown',\n createDate: 'Unknown',\n custom3: 'Unknown',\n custom4: 'Unknown',\n depositGraceDays: -1,\n depositSuppressed: false,\n docsPendingWith: '',\n documentUploadStatusIsPending: false,\n emailVerificationStatus: 'Unknown',\n f2FVerificationRequired: false,\n graceDaysBeforeNextAction: -1,\n graceDaysUnit: 'Unknown',\n idVerificationGraceDays: -1,\n idVerificationStatus: 'Unknown',\n idVerificationGracePeriod: 'Unknown',\n isBlackListAttempted: false,\n isCommVerified: false,\n isEmailVerified: false,\n isKycStarted: false,\n isMobileNumberVerified: false,\n isTransitionPlayer: false,\n kycAttempts: -1,\n kycAuthenticationStatus: 'Unknown',\n kycMaxAttempts: -1,\n kycMaxAttemptsReached: false,\n kycVerified: false,\n partiallyVerified: false,\n personalIdVerificationStatus: 'Unknown',\n ribbonStatusCode: 'Unknown',\n ribbonStatusMessage: 'Unknown',\n secretPinVerificationStatus: 'Unknown',\n ssnVerificationAttempts: -1,\n ssnVerificationMaxAttempts: -1,\n ssnVerificationMaxAttemptsReached: false,\n ssnVerificationStatus: 'Unknown',\n thirdPartyVerificationStatus: 'Unknown',\n userHasBonuses: false,\n verificationDaysLeft: -1,\n verificationStatus: 'Unknown',\n verificationType: 'Unspecified',\n };\n\n private kycStatusEvents = new BehaviorSubject(null);\n private refreshSubject = new Subject();\n\n get kycStatus(): Observable {\n return this.kycStatusEvents;\n }\n\n constructor(\n private apiService: SharedFeaturesApiService,\n private user: UserService,\n ) {\n this.refreshSubject\n .pipe(\n groupBy((kycStatusOptions) => JSON.stringify(kycStatusOptions)), // Group by kycStatusOptions value\n mergeMap((group) =>\n group.pipe(\n throttleTime(1000), // Apply throttle to each group\n ),\n ),\n )\n .subscribe((kycStatusOptions) => {\n this.load(kycStatusOptions);\n });\n }\n\n /**\n * @description Will not call the API if user is not authenticated.\n *\n * @param kycStatusOptions Kyc options to be passed to kyc status api.\n */\n refresh(kycStatusOptions?: KycStatusOptions) {\n if (!this.user.isAuthenticated) {\n return;\n }\n\n this.refreshSubject.next(kycStatusOptions);\n }\n\n private load(kycStatusOptions?: KycStatusOptions) {\n if (this.user.isAuthenticated) {\n this.apiService\n .get('kycstatus', { useCase: kycStatusOptions?.useCase, cached: !!kycStatusOptions?.cached })\n .subscribe((status: KycStatus) => {\n this.kycStatusEvents.next(status);\n this.status.set(status);\n });\n }\n }\n}\n"],"names":["KycStatusService","kycStatus","kycStatusEvents","constructor","apiService","user","status","signal","BehaviorSubject","refreshSubject","Subject","pipe","groupBy","kycStatusOptions","JSON","stringify","mergeMap","group","throttleTime","subscribe","load","refresh","isAuthenticated","next","get","useCase","cached","set","_KycStatusService","UnauthKycStatus","accountStatus","accountVerificationIsRequired","additionalKycInfo","additionalRibbonInfo","addressVerificationStatus","ageVerificationGraceDays","ageVerificationGracePeriod","ageVerificationStatus","amlVerificationStatus","bankAccountIsRegistered","bankIdVerificationStatus","blackListVerificationStatus","createDate","custom3","custom4","depositGraceDays","depositSuppressed","docsPendingWith","documentUploadStatusIsPending","emailVerificationStatus","f2FVerificationRequired","graceDaysBeforeNextAction","graceDaysUnit","idVerificationGraceDays","idVerificationStatus","idVerificationGracePeriod","isBlackListAttempted","isCommVerified","isEmailVerified","isKycStarted","isMobileNumberVerified","isTransitionPlayer","kycAttempts","kycAuthenticationStatus","kycMaxAttempts","kycMaxAttemptsReached","kycVerified","partiallyVerified","personalIdVerificationStatus","ribbonStatusCode","ribbonStatusMessage","secretPinVerificationStatus","ssnVerificationAttempts","ssnVerificationMaxAttempts","ssnVerificationMaxAttemptsReached","ssnVerificationStatus","thirdPartyVerificationStatus","userHasBonuses","verificationDaysLeft","verificationStatus","verificationType","ɵɵinject","SharedFeaturesApiService","UserService","d","factory","ɵfac","providedIn"],"mappings":"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"}