mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-10-31 02:27:11 -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 {PlayerComponent} from "./pages/player/player.component"; | ||||||
| import {SearchComponent} from "./pages/search/search.component"; | import {SearchComponent} from "./pages/search/search.component"; | ||||||
| import {CollectionResolverService} from "./services/resolvers/collection-resolver.service"; | 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 {PeopleResolverService} from "./services/resolvers/people-resolver.service"; | ||||||
| import {SearchResolverService} from "./services/resolvers/search-resolver.service"; | import {SearchResolverService} from "./services/resolvers/search-resolver.service"; | ||||||
| import {ShowResolverService} from './services/resolvers/show-resolver.service'; | import {ShowResolverService} from './services/resolvers/show-resolver.service'; | ||||||
| @ -22,7 +22,12 @@ const routes: Routes = [ | |||||||
| 		canLoad: [AuthGuard.forPermissions("read")], | 		canLoad: [AuthGuard.forPermissions("read")], | ||||||
| 		canActivate: [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: "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: "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")]}, | 	{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 {HttpClient, HttpErrorResponse} from '@angular/common/http'; | ||||||
| import { Injectable } from '@angular/core'; | import {Injectable} from '@angular/core'; | ||||||
| import { MatSnackBar } from '@angular/material/snack-bar'; | import {MatSnackBar} from '@angular/material/snack-bar'; | ||||||
| import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; | import {ActivatedRouteSnapshot, Resolve} from '@angular/router'; | ||||||
| import { EMPTY, Observable } from 'rxjs'; | import {Observable, EMPTY} from 'rxjs'; | ||||||
| import {catchError, map} from 'rxjs/operators'; | import {catchError, map} from 'rxjs/operators'; | ||||||
| import {Page} from "../../../models/page"; | import {Page} from "../../../models/page"; | ||||||
| import {IResource} from "../../../models/resources/resource"; | import {IResource} from "../../../models/resources/resource"; | ||||||
| @ -17,11 +17,15 @@ export class PageResolver | |||||||
| 		@Injectable() | 		@Injectable() | ||||||
| 		class Resolver implements Resolve<Page<T>> | 		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>> | 			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( | 					.pipe( | ||||||
| 						map(x => Object.assign(new Page<T>(), x)), | 						map(x => Object.assign(new Page<T>(), x)), | ||||||
| 						catchError((error: HttpErrorResponse) => | 						catchError((error: HttpErrorResponse) => | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user