diff --git a/src/apps/experimental/components/library/SortButton.tsx b/src/apps/experimental/components/library/SortButton.tsx index 4b0b9642cd..4c8dc65cc6 100644 --- a/src/apps/experimental/components/library/SortButton.tsx +++ b/src/apps/experimental/components/library/SortButton.tsx @@ -44,15 +44,6 @@ const photosOrPhotoAlbumsOptions = [ const sortOptionsMapping: SortOptionsMapping = { [LibraryTab.Movies]: movieOrFavoriteOptions, - [LibraryTab.Trailers]: [ - { label: 'Name', value: ItemSortBy.SortName }, - { label: 'OptionCommunityRating', value: ItemSortBy.CommunityRating }, - { label: 'OptionDateAdded', value: ItemSortBy.DateCreated }, - { label: 'OptionDatePlayed', value: ItemSortBy.DatePlayed }, - { label: 'OptionParentalRating', value: ItemSortBy.OfficialRating }, - { label: 'OptionPlayCount', value: ItemSortBy.PlayCount }, - { label: 'OptionReleaseDate', value: ItemSortBy.PremiereDate } - ], [LibraryTab.Favorites]: movieOrFavoriteOptions, [LibraryTab.Series]: [ { label: 'Name', value: ItemSortBy.SortName }, diff --git a/src/apps/experimental/features/libraries/constants/libraryRoutes.ts b/src/apps/experimental/features/libraries/constants/libraryRoutes.ts index bd854d5461..c4d833e4a1 100644 --- a/src/apps/experimental/features/libraries/constants/libraryRoutes.ts +++ b/src/apps/experimental/features/libraries/constants/libraryRoutes.ts @@ -55,21 +55,16 @@ export const LibraryRoutes: LibraryRoute[] = [ }, { index: 2, - label: 'Trailers', - view: LibraryTab.Trailers - }, - { - index: 3, label: 'Favorites', view: LibraryTab.Favorites }, { - index: 4, + index: 3, label: 'Collections', view: LibraryTab.Collections }, { - index: 5, + index: 4, label: 'Genres', view: LibraryTab.Genres } diff --git a/src/apps/experimental/routes/movies/index.tsx b/src/apps/experimental/routes/movies/index.tsx index 7c25b17d45..b9e78263b5 100644 --- a/src/apps/experimental/routes/movies/index.tsx +++ b/src/apps/experimental/routes/movies/index.tsx @@ -31,12 +31,6 @@ const favoritesTabContent: LibraryTabContent = { itemType: [BaseItemKind.Movie] }; -const trailersTabContent: LibraryTabContent = { - viewType: LibraryTab.Trailers, - itemType: [BaseItemKind.Trailer], - noItemsMessage: 'MessageNoTrailersFound' -}; - const suggestionsTabContent: LibraryTabContent = { viewType: LibraryTab.Suggestions, collectionType: CollectionType.Movies, @@ -52,10 +46,9 @@ const genresTabContent: LibraryTabContent = { const moviesTabMapping: LibraryTabMapping = { 0: moviesTabContent, 1: suggestionsTabContent, - 2: trailersTabContent, - 3: favoritesTabContent, - 4: collectionsTabContent, - 5: genresTabContent + 2: favoritesTabContent, + 3: collectionsTabContent, + 4: genresTabContent }; const Movies: FC = () => { diff --git a/src/components/homeScreenSettings/homeScreenSettings.js b/src/components/homeScreenSettings/homeScreenSettings.js index ead15788c5..74b5c82ceb 100644 --- a/src/components/homeScreenSettings/homeScreenSettings.js +++ b/src/components/homeScreenSettings/homeScreenSettings.js @@ -61,10 +61,6 @@ function getLandingScreenOptions(type) { name: globalize.translate('Suggestions'), value: LibraryTab.Suggestions }); - list.push({ - name: globalize.translate('Trailers'), - value: LibraryTab.Trailers - }); list.push({ name: globalize.translate('Favorites'), value: LibraryTab.Favorites diff --git a/src/controllers/movies/movies.html b/src/controllers/movies/movies.html index d2f2cb42bc..31927613ab 100644 --- a/src/controllers/movies/movies.html +++ b/src/controllers/movies/movies.html @@ -46,25 +46,7 @@

${MessageNoMovieSuggestionsAvailable}

-
-
-
- -
- -
-
- -
-
- -
-
-
-
-
-
-
+
@@ -76,7 +58,7 @@
-
+
@@ -90,7 +72,7 @@
-
+
diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 27ddbe615e..2fe0a57d27 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -231,8 +231,6 @@ function getTabs() { name: globalize.translate('Movies') }, { name: globalize.translate('Suggestions') - }, { - name: globalize.translate('Trailers') }, { name: globalize.translate('Favorites') }, { @@ -248,13 +246,13 @@ function getDefaultTabIndex(folderId) { return 1; case LibraryTab.Favorites: - return 3; + return 2; case LibraryTab.Collections: - return 4; + return 3; case LibraryTab.Genres: - return 5; + return 4; default: return 0; @@ -280,30 +278,18 @@ export default function (view, params) { } const getTabController = (page, index, callback) => { - let depends = ''; + let depends = 'movies'; switch (index) { - case 0: - depends = 'movies'; - break; - case 1: depends = 'moviesrecommended.js'; break; - case 2: - depends = 'movietrailers'; - break; - case 3: - depends = 'movies'; - break; - - case 4: depends = 'moviecollections'; break; - case 5: + case 4: depends = 'moviegenres'; break; } @@ -323,7 +309,7 @@ export default function (view, params) { if (index === suggestionsTabIndex) { controller = this; - } else if (index == 0 || index == 3) { + } else if (index == 0 || index == 2) { controller = new ControllerFactory(view, params, tabContent, { mode: index ? 'favorites' : 'movies' }); diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js deleted file mode 100644 index 9607bbc7c6..0000000000 --- a/src/controllers/movies/movietrailers.js +++ /dev/null @@ -1,275 +0,0 @@ -import loading from '../../components/loading/loading'; -import libraryBrowser from '../../scripts/libraryBrowser'; -import imageLoader from '../../components/images/imageLoader'; -import { AlphaPicker } from '../../components/alphaPicker/alphaPicker'; -import listView from '../../components/listview/listview'; -import cardBuilder from '../../components/cardbuilder/cardBuilder'; -import * as userSettings from '../../scripts/settings/userSettings'; -import globalize from '../../lib/globalize'; -import Events from '../../utils/events.ts'; -import { setFilterStatus } from 'components/filterdialog/filterIndicator'; - -import '../../elements/emby-itemscontainer/emby-itemscontainer'; - -export default function (view, params, tabContent) { - function getPageData() { - const key = getSavedQueryKey(); - let pageData = data[key]; - - if (!pageData) { - pageData = data[key] = { - query: { - SortBy: 'SortName', - SortOrder: 'Ascending', - IncludeItemTypes: 'Trailer', - Recursive: true, - Fields: 'PrimaryImageAspectRatio,SortName', - ImageTypeLimit: 1, - EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', - StartIndex: 0 - }, - view: userSettings.getSavedView(key) || 'Poster' - }; - - if (userSettings.libraryPageSize() > 0) { - pageData.query['Limit'] = userSettings.libraryPageSize(); - } - - userSettings.loadQuerySettings(key, pageData.query); - } - - return pageData; - } - - function getQuery() { - return getPageData().query; - } - - function getSavedQueryKey() { - return params.topParentId + '-' + 'trailers'; - } - - const reloadItems = () => { - loading.show(); - isLoading = true; - const query = getQuery(); - setFilterStatus(tabContent, query); - - ApiClient.getItems(ApiClient.getCurrentUserId(), query).then((result) => { - function onNextPageClick() { - if (isLoading) { - return; - } - - if (userSettings.libraryPageSize() > 0) { - query.StartIndex += query.Limit; - } - reloadItems(); - } - - function onPreviousPageClick() { - if (isLoading) { - return; - } - - if (userSettings.libraryPageSize() > 0) { - query.StartIndex = Math.max(0, query.StartIndex - query.Limit); - } - reloadItems(); - } - - window.scrollTo(0, 0); - this.alphaPicker?.updateControls(query); - const pagingHtml = libraryBrowser.getQueryPagingHtml({ - startIndex: query.StartIndex, - limit: query.Limit, - totalRecordCount: result.TotalRecordCount, - showLimit: false, - updatePageSizeSetting: false, - addLayoutButton: false, - sortButton: false, - filterButton: false - }); - let html; - const viewStyle = this.getCurrentViewStyle(); - - if (viewStyle == 'Thumb') { - html = cardBuilder.getCardsHtml({ - items: result.Items, - shape: 'backdrop', - preferThumb: true, - context: 'movies', - overlayPlayButton: true - }); - } else if (viewStyle == 'ThumbCard') { - html = cardBuilder.getCardsHtml({ - items: result.Items, - shape: 'backdrop', - preferThumb: true, - context: 'movies', - cardLayout: true, - showTitle: true, - showYear: true, - centerText: true - }); - } else if (viewStyle == 'Banner') { - html = cardBuilder.getCardsHtml({ - items: result.Items, - shape: 'banner', - preferBanner: true, - context: 'movies' - }); - } else if (viewStyle == 'List') { - html = listView.getListViewHtml({ - items: result.Items, - context: 'movies', - sortBy: query.SortBy - }); - } else if (viewStyle == 'PosterCard') { - html = cardBuilder.getCardsHtml({ - items: result.Items, - shape: 'portrait', - context: 'movies', - showTitle: true, - showYear: true, - cardLayout: true, - centerText: true - }); - } else { - html = cardBuilder.getCardsHtml({ - items: result.Items, - shape: 'portrait', - context: 'movies', - centerText: true, - overlayPlayButton: true, - showTitle: true, - showYear: true - }); - } - - let elems = tabContent.querySelectorAll('.paging'); - - for (const elem of elems) { - elem.innerHTML = pagingHtml; - } - - elems = tabContent.querySelectorAll('.btnNextPage'); - for (const elem of elems) { - elem.addEventListener('click', onNextPageClick); - } - - elems = tabContent.querySelectorAll('.btnPreviousPage'); - for (const elem of elems) { - elem.addEventListener('click', onPreviousPageClick); - } - - if (!result.Items.length) { - html = ''; - - html += '
'; - html += '

' + globalize.translate('MessageNothingHere') + '

'; - html += '

' + globalize.translate('MessageNoTrailersFound') + '

'; - html += '
'; - } - - const itemsContainer = tabContent.querySelector('.itemsContainer'); - itemsContainer.innerHTML = html; - imageLoader.lazyChildren(itemsContainer); - userSettings.saveQuerySettings(getSavedQueryKey(), query); - loading.hide(); - isLoading = false; - }); - }; - - const data = {}; - let isLoading = false; - - this.showFilterMenu = function () { - import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => { - const filterDialog = new FilterDialog({ - query: getQuery(), - mode: 'movies', - serverId: ApiClient.serverId() - }); - Events.on(filterDialog, 'filterchange', function () { - getQuery().StartIndex = 0; - reloadItems(); - }); - filterDialog.show(); - }); - }; - - this.getCurrentViewStyle = function () { - return getPageData().view; - }; - - const initPage = (tabElement) => { - const alphaPickerElement = tabElement.querySelector('.alphaPicker'); - const itemsContainer = tabElement.querySelector('.itemsContainer'); - alphaPickerElement.addEventListener('alphavaluechanged', function (e) { - const newValue = e.detail.value; - const query = getQuery(); - if (newValue === '#') { - query.NameLessThan = 'A'; - delete query.NameStartsWith; - } else { - query.NameStartsWith = newValue; - delete query.NameLessThan; - } - query.StartIndex = 0; - reloadItems(); - }); - this.alphaPicker = new AlphaPicker({ - element: alphaPickerElement, - valueChangeEvent: 'click' - }); - - tabElement.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); - alphaPickerElement.classList.add('alphaPicker-fixed-right'); - itemsContainer.classList.add('padded-right-withalphapicker'); - - tabElement.querySelector('.btnFilter').addEventListener('click', () => { - this.showFilterMenu(); - }); - tabElement.querySelector('.btnSort').addEventListener('click', function (e) { - libraryBrowser.showSortMenu({ - items: [{ - name: globalize.translate('Name'), - id: 'SortName' - }, { - name: globalize.translate('OptionCommunityRating'), - id: 'CommunityRating,SortName' - }, { - name: globalize.translate('OptionDateAdded'), - id: 'DateCreated,SortName' - }, { - name: globalize.translate('OptionDatePlayed'), - id: 'DatePlayed,SortName' - }, { - name: globalize.translate('OptionParentalRating'), - id: 'OfficialRating,SortName' - }, { - name: globalize.translate('OptionPlayCount'), - id: 'PlayCount,SortName' - }, { - name: globalize.translate('OptionReleaseDate'), - id: 'PremiereDate,SortName' - }], - callback: function () { - getQuery().StartIndex = 0; - reloadItems(); - }, - query: getQuery(), - button: e.target - }); - }); - }; - - initPage(tabContent); - - this.renderTab = () => { - reloadItems(); - this.alphaPicker?.updateControls(getQuery()); - }; -} - diff --git a/src/hooks/useFetchItems.ts b/src/hooks/useFetchItems.ts index 8ff38cb0ef..27c7fcd4e9 100644 --- a/src/hooks/useFetchItems.ts +++ b/src/hooks/useFetchItems.ts @@ -374,7 +374,6 @@ export const useGetItemsViewByType = ( LibraryTab.Movies, LibraryTab.Favorites, LibraryTab.Collections, - LibraryTab.Trailers, LibraryTab.Series, LibraryTab.Episodes, LibraryTab.Networks, diff --git a/src/strings/en-us.json b/src/strings/en-us.json index affcf90a10..f5e71049ef 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1146,7 +1146,6 @@ "MessageNoRepositories": "No repositories.", "MessageNoServersAvailable": "No servers have been found using the automatic server discovery.", "MessageNothingHere": "Nothing here.", - "MessageNoTrailersFound": "Install the trailers channel to enhance your movie experience by adding a library of internet trailers.", "MessagePasswordResetForUsers": "The following users have had their passwords reset. They can now sign in with the PIN codes that were used to do the reset.", "MessagePlayAccessRestricted": "Playback of this content is currently restricted. Please contact your server administrator for more information.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", diff --git a/src/types/libraryTab.ts b/src/types/libraryTab.ts index 16840b3d9d..5479191e96 100644 --- a/src/types/libraryTab.ts +++ b/src/types/libraryTab.ts @@ -18,7 +18,6 @@ export enum LibraryTab { SeriesTimers = 'seriestimers', Songs = 'songs', Suggestions = 'suggestions', - Trailers = 'trailers', Upcoming = 'upcoming', PhotoAlbums = 'photoalbums', Photos = 'photos',