mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-06-23 15:30:34 -04:00
Implementing route params inside the page resolver
This commit is contained in:
parent
e8c505cb56
commit
b8d5265316
@ -6,7 +6,7 @@ import {NotFoundComponent} from './not-found/not-found.component';
|
||||
import {PlayerComponent} from "./pages/player/player.component";
|
||||
import {SearchComponent} from "./pages/search/search.component";
|
||||
import {CollectionResolverService} from "./services/resolvers/collection-resolver.service";
|
||||
import {PageResolver} from './services/resolvers/library-resolver.service';
|
||||
import {PageResolver} from './services/resolvers/page-resolver.service';
|
||||
import {PeopleResolverService} from "./services/resolvers/people-resolver.service";
|
||||
import {SearchResolverService} from "./services/resolvers/search-resolver.service";
|
||||
import {ShowResolverService} from './services/resolvers/show-resolver.service';
|
||||
@ -22,7 +22,12 @@ const routes: Routes = [
|
||||
canLoad: [AuthGuard.forPermissions("read")],
|
||||
canActivate: [AuthGuard.forPermissions("read")]
|
||||
},
|
||||
{path: "browse/:library-slug", component: LibraryItemGridComponent, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]},
|
||||
{path: "browse/:slug", component: LibraryItemGridComponent,
|
||||
resolve: { items: PageResolver.forResource<LibraryItem>("library/:slug/items") },
|
||||
canLoad: [AuthGuard.forPermissions("read")],
|
||||
canActivate: [AuthGuard.forPermissions("read")]
|
||||
},
|
||||
|
||||
{path: "show/:show-slug", component: ShowDetailsComponent, resolve: { show: ShowResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]},
|
||||
{path: "collection/:collection-slug", component: CollectionComponent, resolve: { collection: CollectionResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]},
|
||||
{path: "people/:people-slug", component: CollectionComponent, resolve: { collection: PeopleResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]},
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MatSnackBar } from '@angular/material/snack-bar';
|
||||
import { ActivatedRouteSnapshot, Resolve } from '@angular/router';
|
||||
import { EMPTY, Observable } from 'rxjs';
|
||||
import {HttpClient, HttpErrorResponse} from '@angular/common/http';
|
||||
import {Injectable} from '@angular/core';
|
||||
import {MatSnackBar} from '@angular/material/snack-bar';
|
||||
import {ActivatedRouteSnapshot, Resolve} from '@angular/router';
|
||||
import {Observable, EMPTY} from 'rxjs';
|
||||
import {catchError, map} from 'rxjs/operators';
|
||||
import {Page} from "../../../models/page";
|
||||
import {IResource} from "../../../models/resources/resource";
|
||||
@ -17,11 +17,15 @@ export class PageResolver
|
||||
@Injectable()
|
||||
class Resolver implements Resolve<Page<T>>
|
||||
{
|
||||
constructor(private http: HttpClient, private snackBar: MatSnackBar) { }
|
||||
constructor(private http: HttpClient,
|
||||
private snackBar: MatSnackBar)
|
||||
{ }
|
||||
|
||||
resolve(route: ActivatedRouteSnapshot): Page<T> | Observable<Page<T>> | Promise<Page<T>>
|
||||
{
|
||||
return this.http.get<Page<T>>(`api/${resource}`)
|
||||
let res: string = resource.replace(/:(.*?)\//, (x, y) => `${route.paramMap.get(y)}/`);
|
||||
|
||||
return this.http.get<Page<T>>(`api/${res}`)
|
||||
.pipe(
|
||||
map(x => Object.assign(new Page<T>(), x)),
|
||||
catchError((error: HttpErrorResponse) =>
|
Loading…
x
Reference in New Issue
Block a user