{"version":3,"sources":["src/app/app.routes.ts","node_modules/.pnpm/@angular+platform-browser@18.2.0_@angular+animations@18.2.0_@angular+core@18.2.0_rxjs@7.8.1_z_2sr5rm2pfwkeyfrnhcqlecnf54/node_modules/@angular/platform-browser/fesm2022/animations/async.mjs","src/app/shared/interceptors/dialog-warn-login/dialog-warn-login.component.ts","src/app/shared/interceptors/dialog-warn-login/dialog-warn-login.component.html","node_modules/.pnpm/ngx-cookie-service@18.0.0_@angular+common@18.2.0_@angular+core@18.2.0_rxjs@7.8.1_zone.js@0.14_ihgd3ziuqzdfgqx2v7mo5cg5tq/node_modules/ngx-cookie-service/fesm2022/ngx-cookie-service.mjs","src/app/shared/interceptors/auth.interceptor.ts","src/app/shared/interceptors/request-response-handler.interceptor.ts","src/app/shared/services/app-config/app-config.service.ts","node_modules/.pnpm/@angular+common@18.2.0_@angular+core@18.2.0_rxjs@7.8.1_zone.js@0.14.10__rxjs@7.8.1/node_modules/@angular/common/locales/es.mjs","node_modules/.pnpm/@angular+platform-browser@18.2.0_@angular+animations@18.2.0_@angular+core@18.2.0_rxjs@7.8.1_z_2sr5rm2pfwkeyfrnhcqlecnf54/node_modules/@angular/platform-browser/fesm2022/animations.mjs","src/app/app.config.ts","src/app/shared/services/api/bhv/bhv.service.ts","src/app/shared/services/seo/seo.service.ts","src/app/app.component.ts","src/app/app.component.html","src/main.ts"],"sourcesContent":["import { Routes } from '@angular/router';\r\n\r\nexport const routes: Routes = [\r\n {\r\n path: '',\r\n loadChildren: () => import('./layout/layout.routes').then(m => m.Layout_Routes),\r\n },\r\n];\r\n","/**\n * @license Angular v18.2.0\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, ɵChangeDetectionScheduler, ɵRuntimeError, Injectable, ɵperformanceMarkFeature, makeEnvironmentProviders, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2 } from '@angular/platform-browser';\nconst ANIMATION_PREFIX = '@';\nlet AsyncAnimationRendererFactory = /*#__PURE__*/(() => {\n class AsyncAnimationRendererFactory {\n /**\n *\n * @param moduleImpl allows to provide a mock implmentation (or will load the animation module)\n */\n constructor(doc, delegate, zone, animationType, moduleImpl) {\n this.doc = doc;\n this.delegate = delegate;\n this.zone = zone;\n this.animationType = animationType;\n this.moduleImpl = moduleImpl;\n this._rendererFactoryPromise = null;\n this.scheduler = inject(ɵChangeDetectionScheduler, {\n optional: true\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n // When the root view is removed, the renderer defers the actual work to the\n // `TransitionAnimationEngine` to do this, and the `TransitionAnimationEngine` doesn't actually\n // remove the DOM node, but just calls `markElementAsRemoved()`. The actual DOM node is not\n // removed until `TransitionAnimationEngine` \"flushes\".\n // Note: we already flush on destroy within the `InjectableAnimationEngine`. The injectable\n // engine is not provided when async animations are used.\n this._engine?.flush();\n }\n /**\n * @internal\n */\n loadImpl() {\n // Note on the `.then(m => m)` part below: Closure compiler optimizations in g3 require\n // `.then` to be present for a dynamic import (or an import should be `await`ed) to detect\n // the set of imported symbols.\n const moduleImpl = this.moduleImpl ?? import('@angular/animations/browser').then(m => m);\n return moduleImpl.catch(e => {\n throw new ɵRuntimeError(5300 /* RuntimeErrorCode.ANIMATION_RENDERER_ASYNC_LOADING_FAILURE */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Async loading for animations package was ' + 'enabled, but loading failed. Angular falls back to using regular rendering. ' + \"No animations will be displayed and their styles won't be applied.\");\n }).then(({\n ɵcreateEngine,\n ɵAnimationRendererFactory\n }) => {\n // We can't create the renderer yet because we might need the hostElement and the type\n // Both are provided in createRenderer().\n this._engine = ɵcreateEngine(this.animationType, this.doc);\n const rendererFactory = new ɵAnimationRendererFactory(this.delegate, this._engine, this.zone);\n this.delegate = rendererFactory;\n return rendererFactory;\n });\n }\n /**\n * This method is delegating the renderer creation to the factories.\n * It uses default factory while the animation factory isn't loaded\n * and will rely on the animation factory once it is loaded.\n *\n * Calling this method will trigger as side effect the loading of the animation module\n * if the renderered component uses animations.\n */\n createRenderer(hostElement, rendererType) {\n const renderer = this.delegate.createRenderer(hostElement, rendererType);\n if (renderer.ɵtype === 0 /* AnimationRendererType.Regular */) {\n // The factory is already loaded, this is an animation renderer\n return renderer;\n }\n // We need to prevent the DomRenderer to throw an error because of synthetic properties\n if (typeof renderer.throwOnSyntheticProps === 'boolean') {\n renderer.throwOnSyntheticProps = false;\n }\n // Using a dynamic renderer to switch the renderer implementation once the module is loaded.\n const dynamicRenderer = new DynamicDelegationRenderer(renderer);\n // Kick off the module loading if the component uses animations but the module hasn't been\n // loaded yet.\n if (rendererType?.data?.['animation'] && !this._rendererFactoryPromise) {\n this._rendererFactoryPromise = this.loadImpl();\n }\n this._rendererFactoryPromise?.then(animationRendererFactory => {\n const animationRenderer = animationRendererFactory.createRenderer(hostElement, rendererType);\n dynamicRenderer.use(animationRenderer);\n this.scheduler?.notify(9 /* NotificationSource.AsyncAnimationsLoaded */);\n }).catch(e => {\n // Permanently use regular renderer when loading fails.\n dynamicRenderer.use(renderer);\n });\n return dynamicRenderer;\n }\n begin() {\n this.delegate.begin?.();\n }\n end() {\n this.delegate.end?.();\n }\n whenRenderingDone() {\n return this.delegate.whenRenderingDone?.() ?? Promise.resolve();\n }\n static {\n this.ɵfac = function AsyncAnimationRendererFactory_Factory(__ngFactoryType__) {\n i0.ɵɵinvalidFactory();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AsyncAnimationRendererFactory,\n factory: AsyncAnimationRendererFactory.ɵfac\n });\n }\n }\n return AsyncAnimationRendererFactory;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * The class allows to dynamicly switch between different renderer implementations\n * by changing the delegate renderer.\n */\nclass DynamicDelegationRenderer {\n constructor(delegate) {\n this.delegate = delegate;\n // List of callbacks that need to be replayed on the animation renderer once its loaded\n this.replay = [];\n this.ɵtype = 1 /* AnimationRendererType.Delegated */;\n }\n use(impl) {\n this.delegate = impl;\n if (this.replay !== null) {\n // Replay queued actions using the animation renderer to apply\n // all events and properties collected while loading was in progress.\n for (const fn of this.replay) {\n fn(impl);\n }\n // Set to `null` to indicate that the queue was processed\n // and we no longer need to collect events and properties.\n this.replay = null;\n }\n }\n get data() {\n return this.delegate.data;\n }\n destroy() {\n this.replay = null;\n this.delegate.destroy();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n get destroyNode() {\n return this.delegate.destroyNode;\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n }\n insertBefore(parent, newChild, refChild, isMove) {\n this.delegate.insertBefore(parent, newChild, refChild, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.delegate.removeChild(parent, oldChild, isHostElement);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n // We need to keep track of animation properties set on default renderer\n // So we can also set them also on the animation renderer\n if (this.shouldReplay(name)) {\n this.replay.push(renderer => renderer.setProperty(el, name, value));\n }\n this.delegate.setProperty(el, name, value);\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n // We need to keep track of animation events registred by the default renderer\n // So we can also register them against the animation renderer\n if (this.shouldReplay(eventName)) {\n this.replay.push(renderer => renderer.listen(target, eventName, callback));\n }\n return this.delegate.listen(target, eventName, callback);\n }\n shouldReplay(propOrEventName) {\n //`null` indicates that we no longer need to collect events and properties\n return this.replay !== null && propOrEventName.startsWith(ANIMATION_PREFIX);\n }\n}\n\n/**\n * Returns the set of dependency-injection providers\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * When you use this function instead of the eager `provideAnimations()`, animations won't be\n * rendered until the renderer is loaded.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimationsAsync()\n * ]\n * });\n * ```\n *\n * @param type pass `'noop'` as argument to disable animations.\n *\n * @publicApi\n */\nfunction provideAnimationsAsync(type = 'animations') {\n ɵperformanceMarkFeature('NgAsyncAnimations');\n return makeEnvironmentProviders([{\n provide: RendererFactory2,\n useFactory: (doc, renderer, zone) => {\n return new AsyncAnimationRendererFactory(doc, renderer, zone, type);\n },\n deps: [DOCUMENT, ɵDomRendererFactory2, NgZone]\n }, {\n provide: ANIMATION_MODULE_TYPE,\n useValue: type === 'noop' ? 'NoopAnimations' : 'BrowserAnimations'\n }]);\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { provideAnimationsAsync, AsyncAnimationRendererFactory as ɵAsyncAnimationRendererFactory };\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { CommonImportModule } from '../../imports/common-import.module';\r\n\r\n@Component({\r\n selector: 'app-dialog-warn-login',\r\n standalone: true,\r\n imports: [CommonImportModule, MatDialogModule],\r\n templateUrl: './dialog-warn-login.component.html',\r\n styleUrl: './dialog-warn-login.component.scss'\r\n})\r\nexport class DialogWarnLoginComponent {\r\n constructor(@Inject(MAT_DIALOG_DATA)\r\n private dialogRef: MatDialogRef,\r\n ) {\r\n\r\n }\r\n}\r\n","
\r\n \r\n \r\n
\r\n Thông báo\r\n
\r\n \r\n
\r\n\r\n
\r\n Có lỗi trong quá trình đăng nhập.\r\n
\r\n Vui lòng thử lại.\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject } from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\n\n// This service is based on the `ng2-cookies` package which sadly is not a service and does\n// not use `DOCUMENT` injection and therefore doesn't work well with AoT production builds.\n// Package: https://github.com/BCJTI/ng2-cookies\nlet CookieService = /*#__PURE__*/(() => {\n class CookieService {\n constructor(document,\n // Get the `PLATFORM_ID` so we can check if we're in a browser.\n platformId) {\n this.document = document;\n this.platformId = platformId;\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n }\n /**\n * Get cookie Regular Expression\n *\n * @param name Cookie name\n * @returns property RegExp\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static getCookieRegExp(name) {\n const escapedName = name.replace(/([\\[\\]{}()|=;+?,.*^$])/gi, '\\\\$1');\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n /**\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @param encodedURIComponent A value representing an encoded URI component.\n *\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static safeDecodeURIComponent(encodedURIComponent) {\n try {\n return decodeURIComponent(encodedURIComponent);\n } catch {\n // probably it is not uri encoded. return as is\n return encodedURIComponent;\n }\n }\n /**\n * Return `true` if {@link Document} is accessible, otherwise return `false`\n *\n * @param name Cookie name\n * @returns boolean - whether cookie with specified name exists\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n check(name) {\n if (!this.documentIsAccessible) {\n return false;\n }\n name = encodeURIComponent(name);\n const regExp = CookieService.getCookieRegExp(name);\n return regExp.test(this.document.cookie);\n }\n /**\n * Get cookies by name\n *\n * @param name Cookie name\n * @returns property value\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n get(name) {\n if (this.documentIsAccessible && this.check(name)) {\n name = encodeURIComponent(name);\n const regExp = CookieService.getCookieRegExp(name);\n const result = regExp.exec(this.document.cookie);\n return result[1] ? CookieService.safeDecodeURIComponent(result[1]) : '';\n } else {\n return '';\n }\n }\n /**\n * Get all cookies in JSON format\n *\n * @returns all the cookies in json\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n getAll() {\n if (!this.documentIsAccessible) {\n return {};\n }\n const cookies = {};\n const document = this.document;\n if (document.cookie && document.cookie !== '') {\n document.cookie.split(';').forEach(currentCookie => {\n const [cookieName, cookieValue] = currentCookie.split('=');\n cookies[CookieService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] = CookieService.safeDecodeURIComponent(cookieValue);\n });\n }\n return cookies;\n }\n set(name, value, expiresOrOptions, path, domain, secure, sameSite, partitioned) {\n if (!this.documentIsAccessible) {\n return;\n }\n if (typeof expiresOrOptions === 'number' || expiresOrOptions instanceof Date || path || domain || secure || sameSite) {\n const optionsBody = {\n expires: expiresOrOptions,\n path,\n domain,\n secure,\n sameSite: sameSite ? sameSite : 'Lax',\n partitioned\n };\n this.set(name, value, optionsBody);\n return;\n }\n let cookieString = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n const options = expiresOrOptions ? expiresOrOptions : {};\n if (options.expires) {\n if (typeof options.expires === 'number') {\n const dateExpires = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n } else {\n cookieString += 'expires=' + options.expires.toUTCString() + ';';\n }\n }\n if (options.path) {\n cookieString += 'path=' + options.path + ';';\n }\n if (options.domain) {\n cookieString += 'domain=' + options.domain + ';';\n }\n if (options.secure === false && options.sameSite === 'None') {\n options.secure = true;\n console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` + `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);\n }\n if (options.secure) {\n cookieString += 'secure;';\n }\n if (!options.sameSite) {\n options.sameSite = 'Lax';\n }\n cookieString += 'sameSite=' + options.sameSite + ';';\n if (options.partitioned) {\n cookieString += 'Partitioned;';\n }\n this.document.cookie = cookieString;\n }\n /**\n * Delete cookie by name\n *\n * @param name Cookie name\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Cookie secure flag\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n delete(name, path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');\n this.set(name, '', {\n expires: expiresDate,\n path,\n domain,\n secure,\n sameSite\n });\n }\n /**\n * Delete all cookies\n *\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Is the Cookie secure\n * @param sameSite Is the cookie same site\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n deleteAll(path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const cookies = this.getAll();\n for (const cookieName in cookies) {\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain, secure, sameSite);\n }\n }\n }\n static {\n this.ɵfac = function CookieService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CookieService)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(PLATFORM_ID));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CookieService,\n factory: CookieService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return CookieService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of ngx-cookie-service\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CookieService };\n","import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse, HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\r\nimport { catchError, switchMap, filter, take } from 'rxjs/operators';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { LocalStorageService } from '../storage/local.service';\r\nimport { BaseService } from '../services/base/base.service';\r\nimport { Router } from '@angular/router';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DialogWarnLoginComponent } from './dialog-warn-login/dialog-warn-login.component';\r\nimport { MobileSize } from '../signals/signals.model';\r\n\r\n@Injectable()\r\nexport class AuthInterceptor extends BaseService implements HttpInterceptor {\r\n private isRefreshing = false;\r\n private refreshTokenSubject: BehaviorSubject = new BehaviorSubject(null);\r\n MobileSize = MobileSize;\r\n constructor(\r\n private localStorageService: LocalStorageService,\r\n @Inject(PLATFORM_ID) private platformId: Object,\r\n private http: HttpClient,\r\n private router: Router,\r\n private cookieService: CookieService,\r\n private dialog: MatDialog,\r\n ) {\r\n super();\r\n }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n // this.openDialogWarnLogin();\r\n if (!isPlatformBrowser(this.platformId)) return throwError(null);\r\n\r\n const token: any = this.localStorageService.getItem('token');\r\n const refreshToken: any = this.localStorageService.getItem('refreshToken');\r\n\r\n return next.handle(this.addAuthorizationHeader(req, token)).pipe(\r\n catchError(err => {\r\n if (err instanceof HttpErrorResponse && this.isTokenRefreshError(err, req)) {\r\n return this.handle401Error(req, next);\r\n } else {\r\n // this.logoutAndRedirect(err);\r\n return throwError(err);\r\n }\r\n })\r\n );\r\n }\r\n private isTokenRefreshError(error: HttpErrorResponse, req: HttpRequest): boolean {\r\n return error.status === 401 && !req.url.includes('RefreshToken');\r\n }\r\n private addAuthorizationHeader(request: HttpRequest, token: string): HttpRequest {\r\n const referralCode = this.cookieService.get('referralCode');\r\n if (token) {\r\n let key = this.localStorageService.getItem('loginMode');\r\n const headers = request.headers.set('X-CBH-PLATCODE', key ? key : '');\r\n let setHeaders: any = { Authorization: `Bearer ${token}` };\r\n if (referralCode) {\r\n setHeaders.referralCode = referralCode\r\n }\r\n return request.clone({\r\n setHeaders,\r\n headers: headers,\r\n });\r\n }\r\n if (referralCode) {\r\n return request.clone({\r\n setHeaders: { referralCode: referralCode },\r\n });\r\n }\r\n return request;\r\n }\r\n\r\n private handle401Error(request: HttpRequest, next: HttpHandler) {\r\n if (!this.isRefreshing) {\r\n this.isRefreshing = true;\r\n this.refreshTokenSubject.next(null);\r\n\r\n const refreshToken = this.localStorageService.getItem('refreshToken');\r\n if (refreshToken) {\r\n return this.refreshToken(refreshToken).pipe(\r\n switchMap((res: any) => {\r\n let token = res?.data?.jwToken;\r\n this.isRefreshing = false;\r\n this.localStorageService.setItem('token', token);\r\n this.localStorageService.setItem('refreshToken', res?.data?.refreshToken);\r\n this.refreshTokenSubject.next(token);\r\n return next.handle(this.addAuthorizationHeader(request, token));\r\n }),\r\n catchError((err) => {\r\n this.isRefreshing = false;\r\n this.logoutAndRedirect(err);\r\n return throwError(err);\r\n })\r\n );\r\n } else {\r\n // this.openDialogWarnLogin();\r\n return throwError('No refresh token available');\r\n }\r\n } else {\r\n return this.refreshTokenSubject.pipe(\r\n filter(token => token != null),\r\n take(1),\r\n switchMap(token => {\r\n return next.handle(this.addAuthorizationHeader(request, token));\r\n })\r\n );\r\n }\r\n }\r\n\r\n private refreshToken(refreshToken: string): Observable {\r\n let req: any = {\r\n refreshToken: refreshToken,\r\n };\r\n return this.http.post(`${this.apiDefault}/Account/RefreshToken`, req)\r\n }\r\n\r\n private logoutAndRedirect(err: HttpErrorResponse): Observable> {\r\n // let tempMethod = this.localStorageService.getItem('loginMethod');\r\n // this.localStorageService.clear();\r\n // if (tempMethod) this.localStorageService.setItem('loginMethod', tempMethod);\r\n // window[\"ReactNativeWebView\"]?.postMessage(JSON.stringify({\r\n // type: \"GO_BACK\",\r\n // }));\r\n // this.router.navigate(['/']);\r\n this.openDialogWarnLogin();\r\n // Implement your redirection logic here\r\n return throwError(err);\r\n }\r\n openDialogWarnLogin() {\r\n let tempMethod = this.localStorageService.getItem('loginMethod');\r\n this.localStorageService.clear();\r\n if (tempMethod) this.localStorageService.setItem('loginMethod', tempMethod);\r\n if (this.MobileSize() || tempMethod == 'MB') {\r\n const dialogRef = this.dialog.open(DialogWarnLoginComponent, {\r\n panelClass: \"custom-dialog-container\",\r\n autoFocus: false,\r\n restoreFocus: false,\r\n disableClose: true,\r\n });\r\n dialogRef.afterClosed().subscribe((response: any) => {\r\n this.out();\r\n });\r\n }\r\n else this.out();\r\n // if (tempMethod != 'MB' ) this.out();\r\n // else {\r\n // const dialogRef = this.dialog.open(DialogWarnLoginComponent, {\r\n // panelClass: \"custom-dialog-container\",\r\n // autoFocus: false,\r\n // restoreFocus: false,\r\n // disableClose: true,\r\n // });\r\n // dialogRef.afterClosed().subscribe((response: any) => {\r\n // this.out();\r\n // });\r\n // }\r\n }\r\n out() {\r\n window[\"ReactNativeWebView\"]?.postMessage(JSON.stringify({\r\n type: \"GO_BACK\",\r\n }));\r\n this.router.navigate(['/']);\r\n }\r\n}\r\n","import {\r\n HttpEvent, HttpHandler, HttpInterceptor, HttpRequest\r\n} from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { Observable } from \"rxjs\";\r\nimport { finalize, tap } from \"rxjs/operators\";\r\n\r\n@Injectable()\r\nexport class RequestResponseHandlerInterceptor implements HttpInterceptor {\r\n public pendingRequest: number = 0;\r\n public showLoading: boolean = false;\r\n constructor(\r\n private spinnerService: NgxSpinnerService,\r\n ) { }\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n let req = request.clone({\r\n url: `${request.url}`,\r\n });\r\n req = req.clone({\r\n setHeaders: {\r\n 'Accept-Language': 'vi-VN,vi;q=0.9,vi;q=0.8'\r\n }\r\n });\r\n if (!request?.url?.includes('RefreshToken') || !request?.url?.includes('GetTotalNewNoti')) {\r\n this.pendingRequest++;\r\n this.turnOnModal();\r\n return next.handle(req).pipe(tap((res: any) => {\r\n }, (err: any) => {\r\n })).pipe(\r\n finalize(() => {\r\n this.turnOffModal();\r\n }))\r\n } else {\r\n return next.handle(req).pipe(tap((res: any) => {\r\n }, (err: any) => {\r\n }))\r\n }\r\n }\r\n turnOnModal() {\r\n this.spinnerService.show(\"sp3\");\r\n }\r\n turnOffModal() {\r\n this.pendingRequest--;\r\n if (this.pendingRequest <= 0) {\r\n this.spinnerService?.hide(\"sp3\");\r\n }\r\n }\r\n}\r\n","import { SignalService } from './../../signals/signals.service';\r\nimport { HttpBackend, HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AppConsts } from '../../constants/system.constants';\r\nimport { BaseClass } from '../../../base-class';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppConfigService {\r\n constructor(private baseClass: BaseClass, private httpBackend: HttpBackend, private signalService: SignalService) {\r\n }\r\n loadAppConfig(): Promise {\r\n this.signalService.refreshData();\r\n // bypass HTTP interceptors by using HttpBackend\r\n return Promise.resolve(false)\r\n if (this.baseClass.checkPlatform()) {\r\n const http = new HttpClient(this.httpBackend);\r\n\r\n return (\r\n http.get(`appconfig.json`)\r\n // convert to Promise per Angular's `useFactory` requirement (not officially documented)\r\n .toPromise()\r\n .then(response => {\r\n // using a class factory to keep AppInfo class getters in place\r\n AppConsts.appBaseUrl = response.apiUrl;\r\n })\r\n // returning `true` to satisfy `useFactory` contract (not officially documented)\r\n .then(_ => Promise.resolve(true))\r\n .catch(error => {\r\n console.error('Error loading info', error);\r\n return Promise.resolve(false);\r\n })\r\n );\r\n }\r\n else return Promise.resolve(false)\r\n }\r\n}\r\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val,\n i = Math.floor(Math.abs(val)),\n v = val.toString().replace(/^[^.]*\\.?/, '').length,\n e = parseInt(val.toString().replace(/^[^e]*(e([-+]?\\d+))?/, '$2')) || 0;\n if (n === 1) return 1;\n if (e === 0 && !(i === 0) && i % 1000000 === 0 && v === 0 || !(e >= 0 && e <= 5)) return 4;\n return 5;\n}\nexport default [\"es\", [[\"a. m.\", \"p. m.\"], u, u], u, [[\"D\", \"L\", \"M\", \"X\", \"J\", \"V\", \"S\"], [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"], [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"], [\"DO\", \"LU\", \"MA\", \"MI\", \"JU\", \"VI\", \"SA\"]], u, [[\"E\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"ene\", \"feb\", \"mar\", \"abr\", \"may\", \"jun\", \"jul\", \"ago\", \"sept\", \"oct\", \"nov\", \"dic\"], [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\", \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"]], u, [[\"a. C.\", \"d. C.\"], u, [\"antes de Cristo\", \"después de Cristo\"]], 1, [6, 0], [\"d/M/yy\", \"d MMM y\", \"d 'de' MMMM 'de' y\", \"EEEE, d 'de' MMMM 'de' y\"], [\"H:mm\", \"H:mm:ss\", \"H:mm:ss z\", \"H:mm:ss (zzzz)\"], [\"{1}, {0}\", u, u, u], [\",\", \".\", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0 %\", \"#,##0.00 ¤\", \"#E0\"], \"EUR\", \"€\", \"euro\", {\n \"AUD\": [u, \"$\"],\n \"BRL\": [u, \"R$\"],\n \"BYN\": [u, \"р.\"],\n \"CAD\": [u, \"$\"],\n \"CNY\": [u, \"¥\"],\n \"EGP\": [],\n \"ESP\": [\"₧\"],\n \"GBP\": [u, \"£\"],\n \"HKD\": [u, \"$\"],\n \"ILS\": [u, \"₪\"],\n \"INR\": [u, \"₹\"],\n \"JPY\": [u, \"¥\"],\n \"KRW\": [u, \"₩\"],\n \"MXN\": [u, \"$\"],\n \"NZD\": [u, \"$\"],\n \"PHP\": [u, \"₱\"],\n \"RON\": [u, \"L\"],\n \"THB\": [\"฿\"],\n \"TWD\": [u, \"NT$\"],\n \"USD\": [\"US$\", \"$\"],\n \"XAF\": [],\n \"XCD\": [u, \"$\"],\n \"XOF\": []\n}, \"ltr\", plural];\n","/**\n * @license Angular v18.2.0\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule, ɵperformanceMarkFeature } from '@angular/core';\nexport { ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationRendererFactory, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, NoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\nlet InjectableAnimationEngine = /*#__PURE__*/(() => {\n class InjectableAnimationEngine extends ɵAnimationEngine {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(doc, driver, normalizer) {\n super(doc, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n static {\n this.ɵfac = function InjectableAnimationEngine_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || InjectableAnimationEngine)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1.AnimationDriver), i0.ɵɵinject(i1.ɵAnimationStyleNormalizer));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InjectableAnimationEngine,\n factory: InjectableAnimationEngine.ɵfac\n });\n }\n }\n return InjectableAnimationEngine;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new ɵAnimationRendererFactory(renderer, engine, zone);\n}\nconst SHARED_ANIMATION_PROVIDERS = [{\n provide: ɵAnimationStyleNormalizer,\n useFactory: instantiateDefaultStyleNormalizer\n}, {\n provide: ɵAnimationEngine,\n useClass: InjectableAnimationEngine\n}, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n}];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [{\n provide: AnimationDriver,\n useFactory: () => new ɵWebAnimationsDriver()\n}, {\n provide: ANIMATION_MODULE_TYPE,\n useValue: 'BrowserAnimations'\n}, ...SHARED_ANIMATION_PROVIDERS];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [{\n provide: AnimationDriver,\n useClass: NoopAnimationDriver\n}, {\n provide: ANIMATION_MODULE_TYPE,\n useValue: 'NoopAnimations'\n}, ...SHARED_ANIMATION_PROVIDERS];\n\n/**\n * Exports `BrowserModule` with additional dependency-injection providers\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nlet BrowserAnimationsModule = /*#__PURE__*/(() => {\n class BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see {@link BrowserAnimationsModuleConfig}\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS : BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n static {\n this.ɵfac = function BrowserAnimationsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BrowserAnimationsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: BrowserAnimationsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n imports: [BrowserModule]\n });\n }\n }\n return BrowserAnimationsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Returns the set of dependency-injection providers\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideAnimations() {\n ɵperformanceMarkFeature('NgEagerAnimations');\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nlet NoopAnimationsModule = /*#__PURE__*/(() => {\n class NoopAnimationsModule {\n static {\n this.ɵfac = function NoopAnimationsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NoopAnimationsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NoopAnimationsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n imports: [BrowserModule]\n });\n }\n }\n return NoopAnimationsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Returns the set of dependency-injection providers\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideNoopAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","import { APP_INITIALIZER, ApplicationConfig, importProvidersFrom, LOCALE_ID, provideZoneChangeDetection } from '@angular/core';\r\nimport { provideRouter, withComponentInputBinding, withInMemoryScrolling } from '@angular/router';\r\n\r\nimport { routes } from './app.routes';\r\nimport { provideClientHydration } from '@angular/platform-browser';\r\nimport { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\r\nimport { HTTP_INTERCEPTORS, provideHttpClient, withFetch, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { AuthInterceptor } from './shared/interceptors';\r\nimport { RequestResponseHandlerInterceptor } from './shared/interceptors/request-response-handler.interceptor';\r\nimport { AppConfigService } from './shared/services/app-config/app-config.service';\r\nimport localeEs from '@angular/common/locales/es';\r\nregisterLocaleData(localeEs);\r\nexport function initializeApp(appConfigService: AppConfigService) {\r\n return () => {\r\n return appConfigService.loadAppConfig();\r\n }\r\n}\r\ndeclare global {\r\n interface Window {\r\n ReactNativeWebView: any;\r\n }\r\n}\r\nimport { provideEnvironmentNgxMask } from 'ngx-mask'\r\nimport { registerLocaleData } from '@angular/common';\r\nimport { provideAnimations } from '@angular/platform-browser/animations';\r\nimport { provideToastr } from 'ngx-toastr';\r\nimport { MBHandlerDirective } from './shared/directive/MB-handle.directive';\r\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\r\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_SCROLL_STRATEGY } from '@angular/material/dialog';\r\nimport { NoopScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nexport const appConfig: ApplicationConfig = {\r\n providers: [\r\n provideHttpClient(withInterceptorsFromDi(), withFetch()),\r\n provideZoneChangeDetection({ eventCoalescing: true }),\r\n { provide: APP_INITIALIZER, useFactory: initializeApp, deps: [AppConfigService], multi: true },\r\n provideRouter(\r\n routes,\r\n withInMemoryScrolling({\r\n scrollPositionRestoration: 'enabled',\r\n anchorScrolling: 'enabled',\r\n }),\r\n withComponentInputBinding()\r\n ),\r\n provideClientHydration(),\r\n provideAnimationsAsync(),\r\n provideEnvironmentNgxMask(),\r\n provideAnimations(), // required animations providers\r\n provideToastr({\r\n timeOut: 3000,\r\n preventDuplicates: true,\r\n progressBar: true,\r\n progressAnimation: 'decreasing',\r\n easing: 'ease-in',\r\n easeTime: 300,\r\n positionClass: 'toast-bottom-center',\r\n }), // Toastr providers\r\n { provide: LOCALE_ID, useValue: 'es' },\r\n { provide: MAT_DATE_LOCALE, useValue: 'vi-VN' },\r\n { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: RequestResponseHandlerInterceptor,\r\n multi: true\r\n },\r\n importProvidersFrom(MBHandlerDirective),\r\n {\r\n provide: MAT_DIALOG_DEFAULT_OPTIONS,\r\n useValue: {\r\n scrollStrategy: new NoopScrollStrategy(),\r\n autoFocus: false,\r\n restoreFocus: false,\r\n }\r\n },\r\n ]\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { BaseService } from '../../base/base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BhvService extends BaseService {\r\n\r\n constructor(private http: HttpClient) {\r\n super();\r\n }\r\n getLinkRedirect(params: any) {\r\n return this.http\r\n .post(`${this.apiDefault}/bhv`, params)\r\n .pipe(map((res: any) => res));\r\n }\r\n}\r\n","import { BaseClass } from './../../../base-class';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { SeoSocialShareData } from '../../models copy/seo-social-share-data';\r\n\r\n\r\nexport enum NgxSeoMetaTagAttr {\r\n name = 'name',\r\n property = 'property'\r\n}\r\n\r\nexport interface NgxSeoMetaTag {\r\n attr: NgxSeoMetaTagAttr;\r\n attrValue: string;\r\n value?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SeoService {\r\n\r\n constructor(\r\n private readonly meta: Meta,\r\n private readonly title: Title,\r\n private baseClass: BaseClass,\r\n // tslint:disable-next-line: variable-name\r\n @Inject(DOCUMENT) private readonly _document: Document,\r\n ) {\r\n }\r\n\r\n public setData(data: SeoSocialShareData): void {\r\n // if (this.baseClass.checkPlatform()) {\r\n if (data.section) this.setSection(data.section);\r\n if (data.keywords) this.setKeywords(data.keywords);\r\n if (data.title) this.setTitle(data.title);\r\n if (data.type) this.setType(data.type);\r\n if (data.description) this.setDescription(data.description);\r\n if (data.image) this.setImage(data.image);\r\n if (data.url) this.setUrl(data.url);\r\n if (data.published) this.setPublished(data.published);\r\n if (data.modified) this.setModified(data.modified);\r\n if (data.author) this.setAuthor(data.author);\r\n if (data.url) this.setCanonicalUrl(data.url);\r\n // }\r\n }\r\n\r\n public setKeywords(keywords: string): void {\r\n if (Boolean(keywords)) {\r\n this.meta.updateTag({ name: 'keywords', content: keywords });\r\n } else {\r\n this.meta.removeTag(`name='keywords'`);\r\n }\r\n }\r\n\r\n public setSection(section?: string): void {\r\n if (Boolean(section)) {\r\n this.meta.updateTag({ name: 'article:section', content: section ? section : '' });\r\n } else {\r\n this.meta.removeTag(`name='article:section'`);\r\n }\r\n }\r\n\r\n public setTitle(title: string = '') {\r\n this.title.setTitle(title);\r\n if (title && title.length) {\r\n this.meta.updateTag({ name: 'twitter:title', content: title });\r\n this.meta.updateTag({ name: 'twitter:image:alt', content: title });\r\n this.meta.updateTag({ property: 'og:image:alt', content: title });\r\n this.meta.updateTag({ property: 'og:title', content: title });\r\n this.meta.updateTag({ name: 'title', content: title });\r\n } else {\r\n this.meta.removeTag(`name='twitter:title'`);\r\n this.meta.removeTag(`name='twitter:image:alt'`);\r\n this.meta.removeTag(`property='og:image:alt'`);\r\n this.meta.removeTag(`property='og:title'`);\r\n this.meta.removeTag(`name='title'`);\r\n }\r\n }\r\n\r\n public setType(type?: string) {\r\n if (type && type.length) {\r\n this.meta.updateTag({ property: 'og:type', content: type });\r\n } else {\r\n this.meta.removeTag(`property='og:type'`);\r\n }\r\n }\r\n\r\n public setDescription(description?: string) {\r\n if (description && description.length) {\r\n this.meta.updateTag({ name: 'twitter:description', content: description });\r\n this.meta.updateTag({ property: 'og:description', content: description });\r\n this.meta.updateTag({ name: 'description', content: description });\r\n } else {\r\n this.meta.removeTag(`name='twitter:description'`);\r\n this.meta.removeTag(`property='og:description'`);\r\n this.meta.removeTag(`name='description'`);\r\n }\r\n }\r\n\r\n public setImage(image?: string) {\r\n if (image && image.length) {\r\n this.meta.updateTag({ name: 'twitter:image', content: image });\r\n this.meta.updateTag({ property: 'og:image', content: image });\r\n this.meta.updateTag({ property: 'og:image:height', content: '630' });\r\n } else {\r\n this.meta.removeTag(`name='twitter:image'`);\r\n this.meta.removeTag(`property='og:image'`);\r\n this.meta.removeTag(`property='og:image:height'`);\r\n }\r\n }\r\n\r\n public setUrl(url?: string) {\r\n if (url && url.length) {\r\n this.meta.updateTag({ property: 'og:url', content: url });\r\n } else {\r\n this.meta.removeTag(`property='og:url'`);\r\n }\r\n this.setCanonicalUrl(url);\r\n }\r\n\r\n public setPublished(publishedDateString?: string) {\r\n if (publishedDateString) {\r\n const publishedDate = new Date(publishedDateString);\r\n this.meta.updateTag({ name: 'article:published_time', content: publishedDate.toISOString() });\r\n this.meta.updateTag({ name: 'published_date', content: publishedDate.toISOString() });\r\n } else {\r\n this.meta.removeTag(`name='article:published_time'`);\r\n this.meta.removeTag(`name='publication_date'`);\r\n }\r\n }\r\n\r\n public setModified(modifiedDateString?: string) {\r\n if (modifiedDateString) {\r\n const modifiedDate = new Date(modifiedDateString);\r\n this.meta.updateTag({ name: 'article:modified_time', content: modifiedDate.toISOString() });\r\n this.meta.updateTag({ name: 'og:updated_time', content: modifiedDate.toISOString() });\r\n } else {\r\n this.meta.removeTag(`name='article:modified_time'`);\r\n this.meta.removeTag(`name='og:updated_time'`);\r\n }\r\n }\r\n\r\n public setAuthor(author?: string) {\r\n if (author && author.length) {\r\n this.meta.updateTag({ name: 'article:author', content: author });\r\n this.meta.updateTag({ name: 'author', content: author });\r\n } else {\r\n this.meta.removeTag(`name='article:author'`);\r\n this.meta.removeTag(`name='author'`);\r\n }\r\n }\r\n\r\n public setTwitterSiteCreator(site?: string): void {\r\n if (Boolean(site)) {\r\n this.meta.updateTag({ name: 'twitter:site', content: site ? site : '' });\r\n this.meta.updateTag({ name: 'twitter:creator', content: site ? site : '' });\r\n } else {\r\n this.meta.removeTag(`name='twitter:site'`);\r\n this.meta.removeTag(`name='twitter:creator'`);\r\n }\r\n }\r\n\r\n public setTwitterCard(card?: string): void {\r\n if (Boolean(card)) {\r\n this.meta.updateTag({ name: 'twitter:card', content: card ? card : '' });\r\n } else {\r\n this.meta.removeTag(`name='twitter:card'`);\r\n }\r\n }\r\n\r\n public setFbAppId(appId?: string): void {\r\n if (Boolean(appId)) {\r\n this.meta.updateTag({ property: 'fb:app_id', content: appId ? appId : '' });\r\n } else {\r\n this.meta.removeTag(`property='fb:app_id'`);\r\n }\r\n }\r\n\r\n public setMetaTag(metaTag: NgxSeoMetaTag): void {\r\n if (Boolean(metaTag.value)) {\r\n const metaTagObject = {\r\n [metaTag.attr]: metaTag.attrValue ? metaTag.attrValue : '',\r\n content: metaTag.value ? metaTag.value : '',\r\n };\r\n this.meta.updateTag(metaTagObject);\r\n } else {\r\n const selector = `${metaTag.attr}='${metaTag.attrValue}'`;\r\n this.meta.removeTag(selector);\r\n }\r\n }\r\n\r\n public setMetaTags(metaTags: NgxSeoMetaTag[]): void {\r\n for (const metaTag of metaTags) {\r\n this.setMetaTag(metaTag);\r\n }\r\n }\r\n\r\n public setCanonicalUrl(url?: string) {\r\n // first remove potential previous url\r\n const selector = `link[rel='canonical']`;\r\n const canonicalElement = this._document.head.querySelector(selector);\r\n if (canonicalElement) {\r\n this._document.head.removeChild(canonicalElement);\r\n }\r\n\r\n if (url && url.length) {\r\n const link: HTMLLinkElement = this._document.createElement('link');\r\n link.setAttribute('rel', 'canonical');\r\n this._document.head.appendChild(link);\r\n link.setAttribute('href', url);\r\n }\r\n else {\r\n const link: HTMLLinkElement = this._document.createElement('link');\r\n link.setAttribute('rel', 'canonical');\r\n this._document.head.appendChild(link);\r\n link.setAttribute('href', this._document.URL);\r\n }\r\n }\r\n\r\n}\r\n","import { BhvService } from './shared/services/api/bhv/bhv.service';\r\nimport { SignalService } from './shared/signals/signals.service';\r\nimport { afterNextRender, Component, DestroyRef, signal } from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n NavigationEnd,\r\n NavigationStart,\r\n Router,\r\n RouterOutlet,\r\n} from '@angular/router';\r\nimport { NgxSpinnerModule } from 'ngx-spinner';\r\nimport { filter, take } from 'rxjs';\r\nimport { UrlService } from './shared/services/share/url.service';\r\nimport { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { MobileSize } from './shared/signals/signals.model';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BreadcrumbService } from 'xng-breadcrumb';\r\nimport { DomSanitizer, SafeHtml, Title } from '@angular/platform-browser';\r\nimport { SeoService } from './shared/services/seo/seo.service';\r\n@Component({\r\n selector: 'app-root',\r\n standalone: true,\r\n imports: [RouterOutlet, NgxSpinnerModule],\r\n templateUrl: './app.component.html',\r\n styleUrl: './app.component.scss',\r\n})\r\nexport class AppComponent {\r\n title = 'VTI_CBH_KH_FE_NEW';\r\n previousUrl: string = '';\r\n // loadingDone = signal(false);\r\n jsonLdBreadcrumbs!: SafeHtml;\r\n constructor(\r\n private router: Router,\r\n private signalService: SignalService,\r\n private urlService: UrlService,\r\n private breakpointObserver: BreakpointObserver,\r\n private route: ActivatedRoute,\r\n private cookieService: CookieService,\r\n private bhvService: BhvService,\r\n private destroy: DestroyRef,\r\n private breadcrumbService: BreadcrumbService,\r\n private seoService: SeoService,\r\n private sanitizer: DomSanitizer,\r\n private titleService: Title\r\n ) {\r\n // this.signalService.refreshData();\r\n this.router.events\r\n .pipe(filter((event: any) => event instanceof NavigationStart))\r\n .subscribe((val: any) => {\r\n if (val.url.includes('/campaign/')) {\r\n this.getLinkRedirect(val?.url);\r\n }\r\n });\r\n this.router.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe((val: any) => {\r\n this.signalService.refreshData();\r\n if (this.previousUrl) {\r\n this.urlService.setPreviousUrl(\r\n JSON.parse(JSON.stringify(this.previousUrl))\r\n );\r\n }\r\n this.previousUrl = val.url;\r\n if (val?.url?.includes('referralCode')) {\r\n this.route.queryParams.pipe(take(1)).subscribe((params) => {\r\n this.cookieService.set('referralCode', params?.['referralCode'], {\r\n path: '/',\r\n sameSite: 'Strict',\r\n });\r\n });\r\n }\r\n });\r\n this.signalService.updateTotalNewNoti();\r\n this.breakpointObserver\r\n .observe(['(max-width: 992px)'])\r\n .subscribe((result) => {\r\n MobileSize.set(result.matches);\r\n });\r\n // afterNextRender(() => {\r\n // // setTimeout(() => {\r\n // this.loadingDone.set(true);\r\n // // }, 0);\r\n // });\r\n\r\n this.breadcrumbService.breadcrumbs$.subscribe((data) => {\r\n if (data.length > 0) {\r\n let keywords = data.map((item: any) => item.label).join(', ');\r\n keywords = 'BHVIET rủi ro không cần lo, ' + keywords + ', vtts, bhviet, bao hiem viet, bảo hiểm việt, Công ty TNHH Công nghệ và Dịch vụ Viễn thông Việt Tín';\r\n let title = data[data.length - 1].label\r\n // this.titleService.setTitle(this.title);\r\n this.seoService.setData({\r\n author: 'BHVIET - bảo hiểm việt',\r\n title: title + ' - BHVIET',\r\n keywords: keywords\r\n });\r\n this.jsonLdBreadcrumbs = this.buildJsonLdBreadcrumbs(data);\r\n // console.log(this.jsonLdBreadcrumbs);\r\n\r\n }\r\n });\r\n }\r\n getLinkRedirect(url: string) {\r\n let params = {\r\n shortLink: url.replace('/campaign/', '')\r\n };\r\n this.bhvService.getLinkRedirect(params).pipe(takeUntilDestroyed(this.destroy)).subscribe({\r\n next: (response: any) => {\r\n if (response.succeeded) {\r\n location.href = response.data?.redirect;\r\n } else {\r\n location.href = '';\r\n }\r\n },\r\n error: (err: any) => {\r\n location.href = '';\r\n }\r\n });\r\n }\r\n buildJsonLdBreadcrumbs(breadcrumbs: any[]): SafeHtml {\r\n const jsonLd = {\r\n '@context': 'https://schema.org',\r\n '@type': 'BreadcrumbList',\r\n 'itemListElement': breadcrumbs.map((breadcrumb, index) => ({\r\n 'type': 'ListItem',\r\n 'position': index + 1,\r\n 'item': {\r\n 'id': breadcrumb.routeLink,\r\n 'name': breadcrumb.label\r\n }\r\n }))\r\n };\r\n return this.sanitizer.bypassSecurityTrustHtml('');\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n\r\n","/// \n\nimport { bootstrapApplication } from '@angular/platform-browser';\r\nimport { appConfig } from './app/app.config';\r\nimport { AppComponent } from './app/app.component';\r\n\r\nbootstrapApplication(AppComponent, appConfig)\r\n .catch((err) => console.error(err));\r\n"],"mappings":"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","names":["routes","path","loadChildren","then","m","Layout_Routes","ANIMATION_PREFIX","AsyncAnimationRendererFactory","_AsyncAnimationRendererFactory","doc","delegate","zone","animationType","moduleImpl","inject","ChangeDetectionScheduler","m","e","RuntimeError","ɵcreateEngine","ɵAnimationRendererFactory","rendererFactory","hostElement","rendererType","renderer","dynamicRenderer","DynamicDelegationRenderer","animationRendererFactory","animationRenderer","__ngFactoryType__","ɵɵinvalidFactory","ɵɵdefineInjectable","impl","fn","name","namespace","value","parent","newChild","refChild","isMove","oldChild","isHostElement","selectorOrNode","preserveContent","node","el","style","flags","target","eventName","callback","propOrEventName","provideAnimationsAsync","type","performanceMarkFeature","makeEnvironmentProviders","RendererFactory2","DOCUMENT","DomRendererFactory2","NgZone","ANIMATION_MODULE_TYPE","DialogWarnLoginComponent","dialogRef","constructor","ɵɵdirectiveInject","MAT_DIALOG_DATA","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵproperty","CommonImportModule","MatButton","MatDialogModule","MatDialogClose","MatDialogTitle","MatDialogActions","MatDialogContent","CookieService","_CookieService","document","platformId","isPlatformBrowser","name","escapedName","encodedURIComponent","result","cookies","currentCookie","cookieName","cookieValue","value","expiresOrOptions","path","domain","secure","sameSite","partitioned","optionsBody","cookieString","options","dateExpires","expiresDate","__ngFactoryType__","ɵɵinject","DOCUMENT","PLATFORM_ID","ɵɵdefineInjectable","AuthInterceptor","BaseService","localStorageService","platformId","http","router","cookieService","dialog","isRefreshing","refreshTokenSubject","BehaviorSubject","MobileSize","constructor","intercept","req","next","isPlatformBrowser","throwError","token","getItem","refreshToken","handle","addAuthorizationHeader","pipe","catchError","err","HttpErrorResponse","isTokenRefreshError","handle401Error","error","status","url","includes","request","referralCode","get","key","headers","set","setHeaders","Authorization","clone","filter","take","switchMap","res","data","jwToken","setItem","logoutAndRedirect","post","apiDefault","openDialogWarnLogin","tempMethod","clear","open","DialogWarnLoginComponent","panelClass","autoFocus","restoreFocus","disableClose","afterClosed","subscribe","response","out","window","postMessage","JSON","stringify","type","navigate","ɵɵinject","LocalStorageService","PLATFORM_ID","HttpClient","Router","CookieService","MatDialog","factory","ɵfac","RequestResponseHandlerInterceptor","spinnerService","pendingRequest","showLoading","constructor","intercept","request","next","req","clone","url","setHeaders","includes","turnOnModal","handle","pipe","tap","res","err","finalize","turnOffModal","show","hide","ɵɵinject","NgxSpinnerService","factory","ɵfac","AppConfigService","baseClass","httpBackend","signalService","constructor","loadAppConfig","refreshData","Promise","resolve","checkPlatform","HttpClient","get","toPromise","then","response","AppConsts","appBaseUrl","apiUrl","_","catch","error","console","ɵɵinject","BaseClass","HttpBackend","SignalService","factory","ɵfac","providedIn","plural","val","n","i","v","e","es_default","InjectableAnimationEngine","_InjectableAnimationEngine","AnimationEngine","doc","driver","normalizer","__ngFactoryType__","ɵɵinject","DOCUMENT","AnimationDriver","AnimationStyleNormalizer","ɵɵdefineInjectable","instantiateDefaultStyleNormalizer","WebAnimationsStyleNormalizer","instantiateRendererFactory","renderer","engine","zone","AnimationRendererFactory","SHARED_ANIMATION_PROVIDERS","RendererFactory2","DomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","WebAnimationsDriver","ANIMATION_MODULE_TYPE","BROWSER_NOOP_ANIMATIONS_PROVIDERS","NoopAnimationDriver","provideAnimations","performanceMarkFeature","BROWSER_ANIMATIONS_PROVIDERS","registerLocaleData","localeEs","initializeApp","appConfigService","loadAppConfig","appConfig","providers","provideHttpClient","withInterceptorsFromDi","withFetch","provideZoneChangeDetection","eventCoalescing","provide","APP_INITIALIZER","useFactory","deps","AppConfigService","multi","provideRouter","routes","withInMemoryScrolling","scrollPositionRestoration","anchorScrolling","withComponentInputBinding","provideClientHydration","provideAnimationsAsync","provideEnvironmentNgxMask","provideAnimations","provideToastr","timeOut","preventDuplicates","progressBar","progressAnimation","easing","easeTime","positionClass","LOCALE_ID","useValue","MAT_DATE_LOCALE","DateAdapter","useClass","MomentDateAdapter","HTTP_INTERCEPTORS","AuthInterceptor","RequestResponseHandlerInterceptor","importProvidersFrom","MBHandlerDirective","MAT_DIALOG_DEFAULT_OPTIONS","scrollStrategy","NoopScrollStrategy","autoFocus","restoreFocus","BhvService","BaseService","http","constructor","getLinkRedirect","params","post","apiDefault","pipe","map","res","ɵɵinject","HttpClient","factory","ɵfac","providedIn","SeoService","meta","title","baseClass","_document","constructor","setData","data","section","setSection","keywords","setKeywords","setTitle","type","setType","description","setDescription","image","setImage","url","setUrl","published","setPublished","modified","setModified","author","setAuthor","setCanonicalUrl","updateTag","name","content","removeTag","length","property","publishedDateString","publishedDate","Date","toISOString","modifiedDateString","modifiedDate","setTwitterSiteCreator","site","setTwitterCard","card","setFbAppId","appId","setMetaTag","metaTag","value","metaTagObject","attr","attrValue","selector","setMetaTags","metaTags","canonicalElement","head","querySelector","removeChild","link","createElement","setAttribute","appendChild","URL","ɵɵinject","Meta","Title","BaseClass","DOCUMENT","factory","ɵfac","providedIn","AppComponent","router","signalService","urlService","breakpointObserver","route","cookieService","bhvService","destroy","breadcrumbService","seoService","sanitizer","titleService","title","previousUrl","jsonLdBreadcrumbs","constructor","events","pipe","filter","event","NavigationStart","subscribe","val","url","includes","getLinkRedirect","NavigationEnd","refreshData","setPreviousUrl","JSON","parse","stringify","queryParams","take","params","set","path","sameSite","updateTotalNewNoti","observe","result","MobileSize","matches","breadcrumbs$","data","length","keywords","map","item","label","join","setData","author","buildJsonLdBreadcrumbs","shortLink","replace","takeUntilDestroyed","next","response","succeeded","location","href","redirect","error","err","breadcrumbs","jsonLd","breadcrumb","index","routeLink","bypassSecurityTrustHtml","ɵɵdirectiveInject","Router","SignalService","UrlService","BreakpointObserver","ActivatedRoute","CookieService","BhvService","DestroyRef","BreadcrumbService","SeoService","DomSanitizer","Title","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵproperty","ɵɵadvance","ɵɵsanitizeHtml","RouterOutlet","NgxSpinnerModule","NgxSpinnerComponent","bootstrapApplication","AppComponent","appConfig","catch","err","console","error"],"x_google_ignoreList":[1,4,8,9]}