Files
iptvnator/apps/web/src/app/xtream/xtream-main-container.component.html
T
4gray f95ac9c34e refactor: refactor existing vod-details component and implement VOD details route component
- Added `VodDetailsRouteComponent` to handle VOD details with route parameters.
- Refactored existing `VodDetailsComponent` to use a unified structure for Xtream and Stalker portals.
- Enhanced VOD details display with normalized metadata and improved playback position handling.
- Integrated resizable sidebar functionality in main container and live stream layout components.
- Updated routing to use the new VOD details route component.
- Improved favorite toggling and download handling in VOD details.
- Adjusted styles for responsive sidebar and grid layouts.
2026-01-30 20:39:18 +01:00

90 lines
3.1 KiB
HTML

<app-navigation-bar
[breadcrumbs]="breadcrumbs"
[contentType]="selectedContentType"
[showCategories]="currentLayout !== 'error-view'"
(breadcrumbClicked)="breadcrumbClicked($event)"
(contentTypeChanged)="changeContentType($event)"
(searchTextChanged)="setSearchPhrase($event)"
(favoritesClicked)="favoritesClicked()"
[searchVisible]="
currentLayout === 'category' || currentLayout === 'category_content'
"
[sortVisible]="currentLayout === 'category_content'"
[favoriteVisible]="
currentLayout === 'category_content' ||
currentLayout === 'live-stream-favorites'
"
[contentTypeNavigationItems]="navigationContentTypes"
[activeLiveStream]="activeLiveStream"
[favoritesLiveStream$]="favoritesLiveStream$"
(addToFavoritesClicked)="addToFavorites($event)"
(removeFromFavoritesClicked)="removeFromFavorites($event)"
/>
@if (isLoading) {
<mat-spinner />
} @else {
@switch (currentLayout) {
@case ('error-view') {
<app-playlist-error-view
[title]="this.errorViewInfo.title | translate"
[description]="this.errorViewInfo.message | translate"
/>
}
@case ('category') {
<app-category-view
(categoryClicked)="categoryClicked($event)"
[items]="items"
/>
}
@case ('category_content') {
@if (selectedContentType === 'itv') {
<app-live-stream-layout
[channels]="items"
[player]="player"
[streamUrl]="streamUrl"
[epgItems]="epgItems"
[activeLiveStream]="activeLiveStream"
(itemClicked)="itemClicked($event)"
/>
} @else {
<app-category-content-view
[items]="items"
(itemClicked)="itemClicked($event)"
/>
}
}
@case ('vod-details') {
<app-vod-details
[item]="getVodDetailsItem()"
(playClicked)="onVodPlay($event)"
(favoriteToggled)="onVodFavoriteToggled($event)"
/>
}
@case ('serie-details') {
<app-serial-details
[item]="$any(vodDetails)"
[seriesId]="contentId"
(playClicked)="playEpisode($event)"
(addToFavoritesClicked)="addToFavorites($event)"
(removeFromFavoritesClicked)="removeFromFavorites($event)"
/>
}
@case ('favorites') {
<app-category-content-view
[items]="favorites$ | async"
(itemClicked)="itemClicked($event)"
/>
}
@case ('live-stream-favorites') {
<app-live-stream-layout
[channels]="favoritesLiveStream$ | async"
[player]="player"
[streamUrl]="streamUrl"
[epgItems]="epgItems"
(itemClicked)="itemClicked($event)"
/>
}
}
}