From 633bc79fd44284b24d82f4aea253c35c12e97e3f Mon Sep 17 00:00:00 2001 From: 4gray Date: Sat, 4 May 2024 19:11:34 +0200 Subject: [PATCH] fix(stalker): pagination & search fix --- .../stalker-main-container.component.html | 5 +- .../stalker-main-container.component.ts | 104 +++++++++--------- 2 files changed, 52 insertions(+), 57 deletions(-) diff --git a/src/app/stalker/stalker-main-container.component.html b/src/app/stalker/stalker-main-container.component.html index 902e4d098..6608d3c4b 100644 --- a/src/app/stalker/stalker-main-container.component.html +++ b/src/app/stalker/stalker-main-container.component.html @@ -60,6 +60,7 @@ currentLayout === 'category_content' && length && length > 0 " [length]="length" + [pageIndex]="pageIndex" [pageSize]="pageSize" (page)="handlePageChange($event)" aria-label="Select page" @@ -68,7 +69,7 @@ @case ('vod-details') { @@ -76,7 +77,7 @@ @case ('serial-details') { } @case ('favorites') { diff --git a/src/app/stalker/stalker-main-container.component.ts b/src/app/stalker/stalker-main-container.component.ts index 00783762d..8a61faeaa 100644 --- a/src/app/stalker/stalker-main-container.component.ts +++ b/src/app/stalker/stalker-main-container.component.ts @@ -4,7 +4,7 @@ import { toSignal } from '@angular/core/rxjs-interop'; import { MatDialog } from '@angular/material/dialog'; import { MatPaginatorModule, PageEvent } from '@angular/material/paginator'; import { MatSnackBar } from '@angular/material/snack-bar'; -import { ActivatedRoute, Router } from '@angular/router'; +import { ActivatedRoute, Params, Router } from '@angular/router'; import { Store } from '@ngrx/store'; import { StorageMap } from '@ngx-pwa/local-storage'; import { TranslateModule, TranslateService } from '@ngx-translate/core'; @@ -165,7 +165,7 @@ export class StalkerMainContainerComponent implements OnInit { const action = this.activatedRoute.snapshot.queryParams.action ?? - 'get_categories'; + StalkerPortalActions.GetCategories; const { category, movie_id } = this.activatedRoute.snapshot.queryParams; @@ -219,27 +219,24 @@ export class StalkerMainContainerComponent implements OnInit { }); } - setInitialBreadcrumb( - action = StalkerPortalActions.GetCategories, - title = 'All categories' - ) { + setInitialBreadcrumb(action: StalkerPortalActions, title: string) { this.breadcrumbs = [{ title, action }]; } - getCategories(contentType: ContentType = this.selectedContentType) { + getCategories(contentType: ContentType) { this.router.navigate([], { queryParams: { type: contentType } }); this.selectedContentType = contentType; this.currentLayout = 'category'; const action = StalkerContentTypes[contentType].getCategoryAction; - this.setInitialBreadcrumb(action); + this.pageIndex = 0; + this.setInitialBreadcrumb( + action, + this.translate.instant('PORTALS.ALL_CATEGORIES') + ); this.sendRequest({ action, type: contentType }); } - getOrderedList( - type: ContentType = this.selectedContentType, - category: string, - movieId?: string - ) { + getOrderedList(type: ContentType, category: string, movieId?: string) { if (!movieId) { this.currentLayout = 'category_content'; } else { @@ -250,7 +247,10 @@ export class StalkerMainContainerComponent implements OnInit { } } const action = StalkerPortalActions.GetOrderedList; - this.setInitialBreadcrumb(action); + this.setInitialBreadcrumb( + action, + this.translate.instant('PORTALS.ALL_CATEGORIES') + ); this.sendRequest({ action, type, @@ -260,7 +260,7 @@ export class StalkerMainContainerComponent implements OnInit { } sendRequest(params: Record) { - if (params.action !== 'create_link') { + if (params.action !== StalkerPortalActions.CreateLink) { this.isLoading = true; this.items = []; } @@ -283,23 +283,23 @@ export class StalkerMainContainerComponent implements OnInit { } updateRoute(params: Record) { - if (params.action === 'get_categories') { - this.router.navigate([], { - queryParams: { - action: params.action, - type: params.type, - }, - }); - } else if (params.action === 'get_ordered_list') { - this.router.navigate([], { - queryParams: { - action: params.action, - type: params.type, - ...(params.category ? { category: params.category } : {}), - ...(params.movie_id ? { movie_id: params.movie_id } : {}), - }, - }); + let queryParams: Params; + if (params.action === StalkerPortalActions.GetCategories) { + queryParams = { + action: params.action, + type: params.type, + }; + } else if (params.action === StalkerPortalActions.GetOrderedList) { + queryParams = { + action: params.action, + type: params.type, + ...(params.category ? { category: params.category } : {}), + ...(params.movie_id ? { movie_id: params.movie_id } : {}), + }; } + this.router.navigate([], { + queryParams, + }); } showErrorAsNotification(response: { message: string; status: number }) { @@ -327,6 +327,7 @@ export class StalkerMainContainerComponent implements OnInit { response.action !== StalkerPortalActions.CreateLink ) { this.seasons = response.payload.js.data; + this.portalStore.setCurrentSerial(this.seasons); } if ( response.action === StalkerPortalActions.GetCategories || @@ -345,7 +346,6 @@ export class StalkerMainContainerComponent implements OnInit { cover: item.screenshot_uri, })); this.length = response.payload.js.total_items; - this.pageIndex = response.payload.js.cur_page; } else if (response.action === StalkerPortalActions.CreateLink) { let url = response.payload.js.cmd as string; if (url?.startsWith('ffmpeg')) { @@ -365,14 +365,14 @@ export class StalkerMainContainerComponent implements OnInit { token, }); } else if (response.action === StalkerPortalActions.DoAuth) { - this.getCategories(); + this.getCategories(this.selectedContentType); } this.isLoading = false; } openPlayer(streamUrl: string) { - const player = this.settings().player; + const player = this.settings()?.player ?? VideoPlayer.VideoJs; if (player === VideoPlayer.MPV) { if (!this.hideExternalInfoDialog()) this.dialog.open(ExternalPlayerInfoDialogComponent); @@ -472,7 +472,6 @@ export class StalkerMainContainerComponent implements OnInit { rating_kinopoisk: selectedContent.rating_kinopoisk, }, }; - this.itvTitle = item.name; this.breadcrumbs.push({ title: this.itemDetails?.info?.name, action: StalkerPortalActions.GetOrderedList, @@ -488,24 +487,19 @@ export class StalkerMainContainerComponent implements OnInit { details: any; name: string; }) { + this.itvTitle = item.name; if (this.selectedContentType === ContentType.SERIES) { - this.itvTitle = item.name; this.getSerialDetails(item); - return; + } else if (this.selectedContentType === ContentType.ITV) { + this.createLinkToPlayVod(item.cmd); + } else if (this.selectedContentType === ContentType.VODS) { + this.getVodDetails(item); } - - if (this.selectedContentType === ContentType.ITV) { - this.itvTitle = item.name; - this.playVod(item.cmd); - return; - } - - this.getVodDetails(item); } - playEpisode(payload: StalkerSeason) { + createLinkToPlayEpisode(payload: StalkerSeason) { this.sendRequest({ - action: StalkerContentTypes[ContentType.SERIES].getLink, + action: StalkerPortalActions.CreateLink, type: ContentType.VODS, cmd: payload.cmd, series: payload.series, @@ -515,13 +509,11 @@ export class StalkerMainContainerComponent implements OnInit { }); } - playVod(cmd?: string) { - const command = cmd ?? this.itemDetails.cmd; - const action = StalkerContentTypes[this.selectedContentType].getLink; + createLinkToPlayVod(cmd?: string) { this.sendRequest({ - action, + action: StalkerPortalActions.CreateLink, type: this.selectedContentType, - cmd: command, + cmd: cmd ?? this.itemDetails.cmd, forced_storage: 'undefined', disable_ad: '0', JsHttpRequest: '1-xml', @@ -545,6 +537,7 @@ export class StalkerMainContainerComponent implements OnInit { breadcrumb.action === StalkerPortalActions.GetCategories || breadcrumb.action === StalkerPortalActions.GetGenres ) { + this.pageIndex = 0; this.currentLayout = 'category'; } else if (breadcrumb.action === StalkerPortalActions.Favorites) { this.currentLayout = 'favorites'; @@ -596,6 +589,7 @@ export class StalkerMainContainerComponent implements OnInit { this.currentLayout === 'category_content' && this.searchPhrase !== searchPhrase ) { + this.pageIndex = 0; this.searchPhrase = searchPhrase; this.sendRequest({ action: StalkerContentTypes[this.selectedContentType] @@ -613,12 +607,12 @@ export class StalkerMainContainerComponent implements OnInit { } handlePageChange(event: PageEvent) { + this.pageIndex = Number(event.pageIndex); this.sendRequest({ - action: StalkerContentTypes[this.selectedContentType] - .getContentAction, + action: StalkerPortalActions.GetOrderedList, type: this.selectedContentType, category: this.currentCategoryId, - p: event.pageIndex + 1, + p: this.pageIndex + 1, }); }