From 9653189bff025682d7dec40b371d19ff327282c1 Mon Sep 17 00:00:00 2001 From: Brock H Caldwell Date: Tue, 16 Sep 2025 21:48:23 -0500 Subject: [PATCH] feat: lazy loads torrentio results on episodes, adds loading indicator for episodes and movies --- assets/controllers/movie_results_controller.js | 2 -- assets/controllers/result_filter_controller.js | 7 +------ assets/controllers/tv_results_controller.js | 2 -- templates/components/Filter.html.twig | 1 - templates/components/TvEpisodeList.html.twig | 9 +++++---- templates/search/result.html.twig | 5 +++-- 6 files changed, 9 insertions(+), 17 deletions(-) diff --git a/assets/controllers/movie_results_controller.js b/assets/controllers/movie_results_controller.js index 7e3712f..18ca4e8 100644 --- a/assets/controllers/movie_results_controller.js +++ b/assets/controllers/movie_results_controller.js @@ -13,7 +13,6 @@ export default class extends Controller { }; static targets = ['list'] - static outlets = ['loading-icon'] options = [] optionsLoaded = false @@ -28,7 +27,6 @@ export default class extends Controller { this.options = this.element.querySelectorAll('tbody tr'); this.options.forEach((option) => option.querySelector('.download-btn').dataset['title'] = this.titleValue); this.resultCountEl.innerText = this.options.length; - this.loadingIconOutlet.toggleIcon(); document.dispatchEvent(new CustomEvent('optionsLoaded', {detail: {options: this.options}})); } } diff --git a/assets/controllers/result_filter_controller.js b/assets/controllers/result_filter_controller.js index 2ff35c8..2dd522c 100644 --- a/assets/controllers/result_filter_controller.js +++ b/assets/controllers/result_filter_controller.js @@ -22,7 +22,7 @@ export default class extends Controller { defaultOptions = ''; static outlets = ['tv-episode-list'] - static targets = ['resolution', 'codec', 'language', 'provider', 'season', 'quality', 'loadingIcon', 'selectAll', 'downloadSelected'] + static targets = ['resolution', 'codec', 'language', 'provider', 'season', 'quality', 'selectAll', 'downloadSelected'] static values = { 'imdbId': String, 'media-type': String, @@ -32,7 +32,6 @@ export default class extends Controller { async connect() { await this.setInitialFilter(); - this.setTimerToStopLoadingIcon(); this.element.filterResults = this.filter.bind(this); document.addEventListener('optionsLoaded', this.loadOptions.bind(this)); } @@ -48,10 +47,6 @@ export default class extends Controller { } } - setTimerToStopLoadingIcon() { - setTimeout(() => this.loadingIconTarget.hideIcon(), 10000); - } - // Event is fired from movies/tvshows controllers to populate this data async loadOptions({detail: { options }}) { await options.forEach((option) => { diff --git a/assets/controllers/tv_results_controller.js b/assets/controllers/tv_results_controller.js index ce1d821..f5c4071 100644 --- a/assets/controllers/tv_results_controller.js +++ b/assets/controllers/tv_results_controller.js @@ -19,7 +19,6 @@ export default class extends Controller { }; static targets = ['list', 'count', 'episodeSelector',] - static outlets = ['loading-icon'] options = [] @@ -35,6 +34,5 @@ export default class extends Controller { this.countTarget.innerText = 0; this.episodeSelectorTarget.disabled = true; } - this.loadingIconOutlet.increaseCount(); } } diff --git a/templates/components/Filter.html.twig b/templates/components/Filter.html.twig index 3d68230..e0cba34 100644 --- a/templates/components/Filter.html.twig +++ b/templates/components/Filter.html.twig @@ -44,7 +44,6 @@ {{ stimulus_target('result-filter', 'loadingIcon') }} {{ stimulus_controller('loading_icon', {total: (results.media.mediaType == "tvshows") ? results.media.episodes[1]|length : 1, count: 0}) }} class="loading-icon"> - {% if results.media.mediaType == "tvshows" %} diff --git a/templates/components/TvEpisodeList.html.twig b/templates/components/TvEpisodeList.html.twig index 0fcb12a..b085d26 100644 --- a/templates/components/TvEpisodeList.html.twig +++ b/templates/components/TvEpisodeList.html.twig @@ -5,7 +5,6 @@ {% for episode in this.getEpisodes().items %} {{ episode.description|truncate }}

@@ -72,14 +71,16 @@
diff --git a/templates/search/result.html.twig b/templates/search/result.html.twig index d6d496b..d82e504 100644 --- a/templates/search/result.html.twig +++ b/templates/search/result.html.twig @@ -125,14 +125,15 @@ {% if "movies" == results.media.mediaType %} + }) }}"> + + {% elseif "tvshows" == results.media.mediaType %}