diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a894dc11..115942b8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +## [4.49.3](https://github.com/Ombi-app/Ombi/compare/v4.49.2...v4.49.3) (2025-08-17) + + +### Bug Fixes + +* **plex-api:** update Plex Watchlist URL ([11fd7a5](https://github.com/Ombi-app/Ombi/commit/11fd7a5fc853da75974a16bf4fdecd72a836f54b)) + + + +## [4.49.2](https://github.com/Ombi-app/Ombi/compare/v4.49.1...v4.49.2) (2025-07-12) + + +### Performance Improvements + +* **discover:** :zap: Improve the loading performance on the discover page ([97d5167](https://github.com/Ombi-app/Ombi/commit/97d5167db6c9f915021f32b96b281d7db3741d7f)) + + + ## [4.49.1](https://github.com/Ombi-app/Ombi/compare/v4.49.0...v4.49.1) (2025-07-12) @@ -2193,16 +2211,3 @@ -## [4.43.5](https://github.com/Ombi-app/Ombi/compare/v4.43.4...v4.43.5) (2023-08-24) - - - -## [4.43.4](https://github.com/Ombi-app/Ombi/compare/v4.43.3...v4.43.4) (2023-07-28) - - -### Bug Fixes - -* **user-importer:** Fixed not importing all correct users [#4989](https://github.com/Ombi-app/Ombi/issues/4989) ([34c32f8](https://github.com/Ombi-app/Ombi/commit/34c32f8338705ea3f790d95b91c9ada21a41b9f2)) - - - diff --git a/src/Ombi.Api.Plex/PlexApi.cs b/src/Ombi.Api.Plex/PlexApi.cs index 2d2f0271d..8babba05d 100644 --- a/src/Ombi.Api.Plex/PlexApi.cs +++ b/src/Ombi.Api.Plex/PlexApi.cs @@ -68,7 +68,7 @@ namespace Ombi.Api.Plex private const string FriendsUri = "https://plex.tv/api/users"; private const string GetAccountUri = "https://plex.tv/users/account.json"; private const string ServerUri = "https://plex.tv/pms/servers.xml"; - private const string WatchlistUri = "https://metadata.provider.plex.tv/"; + private const string WatchlistUri = "https://discover.provider.plex.tv/"; /// /// Sign into the Plex API diff --git a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.html b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.html index a1b3bc81b..f8dbaf257 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.html +++ b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.html @@ -5,13 +5,17 @@ {{'Discovery.Tv' | translate}} -@defer (when discoverResults.length > 0) { +@defer (when discoverResults.length > 0; prefetch on idle) { } -@placeholder(minimum 500) { - +@placeholder(minimum 300) { +
+
+ +
+
} \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.scss b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.scss index 81c559a83..9b62c9256 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.scss +++ b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.scss @@ -105,6 +105,30 @@ padding: 5px; } +.loading-container { + display: flex; + gap: 10px; + padding: 0 20px; + margin-top: 20px; +} + +.loading-container .col-2 { + flex: 0 0 auto; + width: calc(10% - 9px); +} + +@media (max-width: 768px) { + .loading-container .col-2 { + width: calc(50% - 5px); + } +} + +@media (max-width: 480px) { + .loading-container .col-2 { + width: calc(100% - 0px); + } +} + @media (min-width:755px){ ::ng-deep .p-carousel-item{ flex: 1 0 200px !important; diff --git a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts index 36b8122ff..2463af3c4 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts +++ b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts @@ -43,7 +43,7 @@ export class CarouselListComponent implements OnInit { get mediaTypeStorageKey() { return "DiscoverOptions" + this.discoverType.toString(); }; - private amountToLoad = 17; + private amountToLoad = 10; private currentlyLoaded = 0; private baseUrl: string = ""; @@ -148,6 +148,7 @@ export class CarouselListComponent implements OnInit { } public async ngOnInit() { + this.is4kEnabled = this.featureFacade.is4kEnabled(); this.currentlyLoaded = 0; const localDiscoverOptions = +this.storageService.get(this.mediaTypeStorageKey); @@ -155,11 +156,15 @@ export class CarouselListComponent implements OnInit { this.discoverOptions = DiscoverOption[DiscoverOption[localDiscoverOptions]]; } - let currentIteration = 0; - while (this.discoverResults.length <= 14 && currentIteration <= 3) { - currentIteration++; + // Load initial data - just enough to fill the first carousel page + // This reduces initial API calls and improves loading performance + await this.loadData(false); + + // If we don't have enough results to fill the carousel, load one more batch + if (this.discoverResults.length < 10) { await this.loadData(false); } + } public async toggleChanged(event: MatButtonToggleChange) { diff --git a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html index 16a46c0d6..dc4e33be1 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html +++ b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html @@ -1,46 +1,108 @@
-
-

{{ 'Discovery.Genres' | translate }}

- -
-
-

{{ 'Discovery.RecentlyRequestedTab' | translate }}

-
- + @defer (on viewport; prefetch on idle) { +
+

{{ 'Discovery.Genres' | translate }}

+
-
- - -
-

{{ 'Discovery.SeasonalTab' | translate }}

-
- + } @placeholder(minimum 300) { +
+

{{ 'Discovery.Genres' | translate }}

+
-
+ } -
-

{{ 'Discovery.PopularTab' | translate }}

-
- + @defer (on viewport; prefetch on idle) { +
+

{{ 'Discovery.RecentlyRequestedTab' | translate }}

+
+ +
-
+ } @placeholder(minimum 300) { +
+

{{ 'Discovery.RecentlyRequestedTab' | translate }}

+
+
+ +
+
+
+ } -
-

{{ 'Discovery.TrendingTab' | translate }}

-
- + @defer (on viewport; prefetch on idle) { +
+

{{ 'Discovery.SeasonalTab' | translate }}

+
+ +
-
+ } @placeholder(minimum 300) { +
+

{{ 'Discovery.SeasonalTab' | translate }}

+
+
+ +
+
+
+ } -
-

{{ 'Discovery.UpcomingTab' | translate }}

-
- + @defer (on viewport; prefetch on idle) { +
+

{{ 'Discovery.PopularTab' | translate }}

+
+ +
-
+ } @placeholder(minimum 300) { +
+

{{ 'Discovery.PopularTab' | translate }}

+
+
+ +
+
+
+ } + + @defer (on viewport; prefetch on idle) { +
+

{{ 'Discovery.TrendingTab' | translate }}

+
+ +
+
+ } @placeholder(minimum 300) { +
+

{{ 'Discovery.TrendingTab' | translate }}

+
+
+ +
+
+
+ } + + @defer (on viewport; prefetch on idle) { +
+

{{ 'Discovery.UpcomingTab' | translate }}

+
+ +
+
+ } @placeholder(minimum 300) { +
+

{{ 'Discovery.UpcomingTab' | translate }}

+
+
+ +
+
+
+ }
diff --git a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.scss b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.scss index d95586507..9ba892e01 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.scss +++ b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.scss @@ -9,4 +9,28 @@ h2{ margin-top:40px; margin-left:40px; font-size: 24px; +} + +.loading-container { + display: flex; + gap: 10px; + padding: 0 20px; + margin-top: 20px; +} + +.loading-container .col-2 { + flex: 0 0 auto; + width: calc(10% - 9px); +} + +@media (max-width: 768px) { + .loading-container .col-2 { + width: calc(50% - 5px); + } +} + +@media (max-width: 480px) { + .loading-container .col-2 { + width: calc(100% - 0px); + } } \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/discover/components/recently-requested-list/recently-requested-list.component.html b/src/Ombi/ClientApp/src/app/discover/components/recently-requested-list/recently-requested-list.component.html index 6da28c744..a6db36865 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/recently-requested-list/recently-requested-list.component.html +++ b/src/Ombi/ClientApp/src/app/discover/components/recently-requested-list/recently-requested-list.component.html @@ -1,4 +1,4 @@ -@defer (when requests()) { +@defer (when requests(); prefetch on idle) {
@@ -13,21 +13,9 @@
-}@placeholder(minimum 500) { +}@placeholder(minimum 300) {
-
- -
-
- -
-
- -
-
- -
-
+
diff --git a/src/Ombi/ClientApp/src/app/discover/components/recently-requested-list/recently-requested-list.component.scss b/src/Ombi/ClientApp/src/app/discover/components/recently-requested-list/recently-requested-list.component.scss index 01c68db4d..c7fef78f9 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/recently-requested-list/recently-requested-list.component.scss +++ b/src/Ombi/ClientApp/src/app/discover/components/recently-requested-list/recently-requested-list.component.scss @@ -105,12 +105,32 @@ padding: 5px; } +.loading-container { + display: flex; + gap: 10px; + padding: 0 20px; + margin-top: 20px; +} + +.loading-container .col-2 { + flex: 0 0 auto; + width: calc(20% - 8px); +} + +@media (max-width: 768px) { + .loading-container .col-2 { + width: calc(50% - 5px); + } +} + +@media (max-width: 480px) { + .loading-container .col-2 { + width: calc(100% - 0px); + } +} + @media (min-width:755px){ ::ng-deep .p-carousel-item{ flex: 1 0 200px !important; } -} - -.loading-container { - margin-left: 10rem; } \ No newline at end of file diff --git a/version.json b/version.json index 1535ec55c..dc01ed894 100644 --- a/version.json +++ b/version.json @@ -1,3 +1,3 @@ { - "version": "4.49.1" + "version": "4.49.3" }