';
- html += `
${escapeHtml(title)}
`;
- const allowBottomPadding = true;
-
- if (enableScrollX()) {
- html += '
';
- html += '
';
- html += '
';
- return html;
- }, [enableScrollX, getPortraitShape]);
+ }, [autoFocus]);
const loadSuggestions = useCallback((page, userId) => {
const screenWidth: any = dom.getWindowSize();
@@ -177,22 +98,12 @@ const SuggestionsView: FunctionComponent
= (props: IProps) => {
EnableImageTypes: 'Primary,Backdrop,Banner,Thumb'
});
window.ApiClient.getJSON(url).then(recommendations => {
- if (!recommendations.length) {
- page.querySelector('.noItemsMessage').classList.remove('hide');
- page.querySelector('.recommendations').innerHTML = '';
- return;
- }
-
- const html = recommendations.map(getRecommendationHtml).join('');
- page.querySelector('.noItemsMessage').classList.add('hide');
- const recs = page.querySelector('.recommendations');
- recs.innerHTML = html;
- imageLoader.lazyChildren(recs);
+ setRecommendations(recommendations);
// FIXME: Wait for all sections to load
autoFocus(page);
});
- }, [autoFocus, getRecommendationHtml]);
+ }, [autoFocus]);
const loadSuggestionsTab = useCallback((view) => {
const parentId = props.topParentId;
@@ -202,32 +113,40 @@ const SuggestionsView: FunctionComponent = (props: IProps) => {
loadSuggestions(view, userId);
}, [loadLatest, loadResume, loadSuggestions, props.topParentId]);
- const initSuggestedTab = useCallback((tabContent) => {
- function setScrollClasses(elem: { classList: { add: (arg0: string) => void; remove: (arg0: string) => void; }; }, scrollX: boolean) {
- if (scrollX) {
- elem.classList.add('hiddenScrollX');
+ const setScrollClasses = useCallback((elem, scrollX) => {
+ const page = element.current;
- if (layoutManager.tv) {
- elem.classList.add('smoothScrollX');
- elem.classList.add('padded-top-focusscale');
- elem.classList.add('padded-bottom-focusscale');
- }
-
- elem.classList.add('scrollX');
- elem.classList.remove('vertical-wrap');
- } else {
- elem.classList.remove('hiddenScrollX');
- elem.classList.remove('smoothScrollX');
- elem.classList.remove('scrollX');
- elem.classList.add('vertical-wrap');
- }
+ if (!page) {
+ console.error('Unexpected null reference');
+ return;
}
- const containers = tabContent.querySelectorAll('.itemsContainer');
+
+ if (scrollX) {
+ elem.classList.add('hiddenScrollX');
+
+ if (layoutManager.tv) {
+ elem.classList.add('smoothScrollX');
+ elem.classList.add('padded-top-focusscale');
+ elem.classList.add('padded-bottom-focusscale');
+ }
+
+ elem.classList.add('scrollX');
+ elem.classList.remove('vertical-wrap');
+ } else {
+ elem.classList.remove('hiddenScrollX');
+ elem.classList.remove('smoothScrollX');
+ elem.classList.remove('scrollX');
+ elem.classList.add('vertical-wrap');
+ }
+ }, []);
+
+ const initSuggestedTab = useCallback((view) => {
+ const containers = view.querySelectorAll('.itemsContainer');
for (const container of containers) {
setScrollClasses(container, enableScrollX());
}
- }, [enableScrollX]);
+ }, [enableScrollX, setScrollClasses]);
useEffect(() => {
const page = element.current;
@@ -238,54 +157,23 @@ const SuggestionsView: FunctionComponent = (props: IProps) => {
}
initSuggestedTab(page);
- }, [initSuggestedTab]);
-
- useEffect(() => {
- const page = element.current;
-
- if (!page) {
- console.error('Unexpected null reference');
- return;
- }
loadSuggestionsTab(page);
- }, [loadSuggestionsTab]);
+ }, [initSuggestedTab, loadSuggestionsTab]);
+
return (
-
-
-
- {globalize.translate('HeaderContinueWatching')}
-
-
+
-
+
-
-
-
-
-
- {globalize.translate('HeaderLatestMovies')}
-
-
-
-
-
-
-
-
-
-
-
-
- {globalize.translate('MessageNoMovieSuggestionsAvailable')}
-
+
+ {!recommendations.length ?
+
{globalize.translate('MessageNothingHere')}
+
{globalize.translate('MessageNoMovieSuggestionsAvailable')}
+
: recommendations.map((recommendation, index) => {
+ return
;
+ })}
+ {}
);
diff --git a/src/view/movies/TrailersView.tsx b/src/view/movies/TrailersView.tsx
index 3eb6909b72..f856b142e2 100644
--- a/src/view/movies/TrailersView.tsx
+++ b/src/view/movies/TrailersView.tsx
@@ -113,7 +113,7 @@ const TrailersView: FunctionComponent
= ({ topParentId }: IProps) => {