{ "version": 3, "sources": ["src/app/core/guards/acreage-overview.guard.ts"], "sourcesContent": ["// why use a route guard instead of a resolve?\n// a. we don't need a resolve because we are using a store\n// b. it gives us a benefit of controlling navigation to navigate away, etc\nimport { Injectable } from '@angular/core';\n\nimport { Store } from '@ngrx/store';\nimport { of, Observable } from 'rxjs';\nimport { catchError, filter, switchMap, take } from 'rxjs/operators';\n\nimport * as fromSelectors from 'src/app/root-store/global-store/store/selectors';\nimport * as fromReducers from 'src/app/root-store/global-store/store/reducers';\nimport * as fromActions from 'src/app/root-store/global-store/store/actions';\nimport { LoadActionGuardFactoryService } from 'src/app/core/services/load-action-guard-factory.service';\n\n@Injectable()\nexport class AcreageOverviewGuard {\n constructor(\n private _store: Store,\n private _guardFactory: LoadActionGuardFactoryService\n ) {}\n\n canActivate(): Observable {\n return this.checkStore().pipe(\n // returns observable of true if things have gone correctly\n switchMap(() => of(true)),\n // else returns observable of false if things have gone awry\n catchError(() => of(false))\n );\n }\n\n checkStore(): Observable {\n return this.waitForYearsToLoad().pipe(switchMap(() => this.waitForOverviewToLoad()));\n }\n\n waitForOverviewToLoad(): Observable {\n return this._guardFactory.canAdvance({\n loadAction: new fromActions.LoadAcreageOverview(),\n isLoadedSelector: fromSelectors.getAcreageOverviewLoaded,\n hasErrorSelector: fromSelectors.getAcreageOverviewErred\n });\n }\n\n /**\n * This method creates an observable that waits for the `loaded` property\n * of the collection state to turn `true`, emitting one time once loading\n * has finished.\n */\n waitForYearsToLoad(): Observable {\n return this._store.select(fromSelectors.getProductionYearsLoaded).pipe(\n filter((loaded) => loaded),\n take(1)\n );\n }\n}\n"], "mappings": "oKAeA,IAAaA,GAAoB,IAAA,CAA3B,MAAOA,CAAoB,CAC/BC,YACUC,EACAC,EAA4C,CAD5C,KAAAD,OAAAA,EACA,KAAAC,cAAAA,CACP,CAEHC,aAAW,CACT,OAAO,KAAKC,WAAU,EAAGC,KAEvBC,EAAU,IAAMC,EAAG,EAAI,CAAC,EAExBC,EAAW,IAAMD,EAAG,EAAK,CAAC,CAAC,CAE/B,CAEAH,YAAU,CACR,OAAO,KAAKK,mBAAkB,EAAGJ,KAAKC,EAAU,IAAM,KAAKI,sBAAqB,CAAE,CAAC,CACrF,CAEAA,uBAAqB,CACnB,OAAO,KAAKR,cAAcS,WAAW,CACnCC,WAAY,IAAgBC,EAC5BC,iBAAgCC,EAChCC,iBAAgCC,EACjC,CACH,CAOAR,oBAAkB,CAChB,OAAO,KAAKR,OAAOiB,OAAqBC,CAAwB,EAAEd,KAChEe,EAAQC,GAAWA,CAAM,EACzBC,EAAK,CAAC,CAAC,CAEX,iDArCWvB,GAAoBwB,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,CAAA,iCAApB1B,EAAoB2B,QAApB3B,EAAoB4B,SAAA,CAAA,CAAA,SAApB5B,CAAoB,GAAA", "names": ["AcreageOverviewGuard", "constructor", "_store", "_guardFactory", "canActivate", "checkStore", "pipe", "switchMap", "of", "catchError", "waitForYearsToLoad", "waitForOverviewToLoad", "canAdvance", "loadAction", "LoadAcreageOverview", "isLoadedSelector", "getAcreageOverviewLoaded", "hasErrorSelector", "getAcreageOverviewErred", "select", "getProductionYearsLoaded", "filter", "loaded", "take", "\u0275\u0275inject", "Store", "LoadActionGuardFactoryService", "factory", "\u0275fac"] }