1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Refactoring duplicates onViewStyleChange

This commit is contained in:
grafixeyehero 2022-08-10 22:08:49 +03:00
parent 7543e494c9
commit 111cc430db
9 changed files with 19 additions and 111 deletions

View file

@ -156,7 +156,7 @@ const GenresItemsContainer: FunctionComponent<GenresItemsContainerProps> = ({ to
return (
<div ref={element}>
<div id='items'></div>
<div id='items'/>
</div>
);
};

View file

@ -18,10 +18,11 @@ type ItemsContainerProps = {
const ItemsContainer: FunctionComponent<ItemsContainerProps> = ({ getCurrentViewStyle, query, items = [], noItemsMessage }: ItemsContainerProps) => {
const element = useRef<HTMLDivElement>(null);
const viewStyle = getCurrentViewStyle();
useEffect(() => {
let html;
const viewStyle = getCurrentViewStyle();
if (viewStyle == 'Thumb') {
html = cardBuilder.getCardsHtml(items, {
items: items,
@ -95,13 +96,15 @@ const ItemsContainer: FunctionComponent<ItemsContainerProps> = ({ getCurrentView
const itemsContainer = element.current?.querySelector('.itemsContainer') as HTMLDivElement;
itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
}, [getCurrentViewStyle, query.SortBy, items, noItemsMessage]);
}, [query.SortBy, items, noItemsMessage, viewStyle]);
const cssClass = viewStyle == 'List' ? 'vertical-list' : 'vertical-wrap';
return (
<div ref={element}>
<ItemsContainerElement
id=''
className='itemsContainer vertical-wrap centered padded-left padded-right'
className={`itemsContainer ${cssClass} centered padded-left padded-right`}
/>
</div>
);

View file

@ -54,11 +54,8 @@ const Pagination: FunctionComponent<PaginationProps> = ({ query, itemsResult = {
return (
<div ref={element}>
<div
className='paging'
/>
<div className='paging' />
</div>
);
};

View file

@ -9,11 +9,10 @@ type SelectViewProps = {
getCurrentViewStyle: () => string;
query: IQuery;
savedViewKey: string;
onViewStyleChange: () => void;
reloadItems: () => void;
}
const SelectView: FunctionComponent<SelectViewProps> = ({ getCurrentViewStyle, savedViewKey, query, onViewStyleChange, reloadItems }: SelectViewProps) => {
const SelectView: FunctionComponent<SelectViewProps> = ({ getCurrentViewStyle, savedViewKey, query, reloadItems }: SelectViewProps) => {
const element = useRef<HTMLDivElement>(null);
useEffect(() => {
@ -25,10 +24,9 @@ const SelectView: FunctionComponent<SelectViewProps> = ({ getCurrentViewStyle, s
const viewStyle = (e as CustomEvent).detail.viewStyle;
userSettings.set(savedViewKey, viewStyle, false);
query.StartIndex = 0;
onViewStyleChange();
reloadItems();
});
}, [getCurrentViewStyle, onViewStyleChange, query, reloadItems, savedViewKey]);
}, [getCurrentViewStyle, query, reloadItems, savedViewKey]);
return (
<div ref={element}>

View file

@ -73,38 +73,16 @@ const CollectionsView: FunctionComponent<IProps> = ({ topParentId }: IProps) =>
});
}, [query]);
const onViewStyleChange = useCallback(() => {
const page = element.current;
if (!page) {
console.error('Unexpected null reference');
return;
}
const viewStyle = getCurrentViewStyle();
const itemsContainer = page.querySelector('.itemsContainer') as HTMLDivElement;
if (viewStyle == 'List') {
itemsContainer.classList.add('vertical-list');
itemsContainer.classList.remove('vertical-wrap');
} else {
itemsContainer.classList.remove('vertical-list');
itemsContainer.classList.add('vertical-wrap');
}
itemsContainer.innerHTML = '';
}, [getCurrentViewStyle]);
useEffect(() => {
onViewStyleChange();
reloadItems();
}, [onViewStyleChange, reloadItems]);
}, [reloadItems]);
return (
<div ref={element}>
<div className='flex align-items-center justify-content-center flex-wrap-wrap padded-top padded-left padded-right padded-bottom focuscontainer-x'>
<Pagination itemsResult= {itemsResult} query={query} reloadItems={reloadItems} />
<SelectView getCurrentViewStyle={getCurrentViewStyle} savedViewKey={savedViewKey} query={query} onViewStyleChange={onViewStyleChange} reloadItems={reloadItems} />
<SelectView getCurrentViewStyle={getCurrentViewStyle} savedViewKey={savedViewKey} query={query} reloadItems={reloadItems} />
<Sort sortMenuOptions={SortMenuOptions} query={query} savedQueryKey={savedQueryKey} reloadItems={reloadItems} />
<NewCollection />

View file

@ -96,38 +96,16 @@ const FavoritesView: FunctionComponent<IProps> = ({ topParentId }: IProps) => {
});
}, [query]);
const onViewStyleChange = useCallback(() => {
const page = element.current;
if (!page) {
console.error('Unexpected null reference');
return;
}
const viewStyle = getCurrentViewStyle();
const itemsContainer = page.querySelector('.itemsContainer') as HTMLDivElement;
if (viewStyle == 'List') {
itemsContainer.classList.add('vertical-list');
itemsContainer.classList.remove('vertical-wrap');
} else {
itemsContainer.classList.remove('vertical-list');
itemsContainer.classList.add('vertical-wrap');
}
itemsContainer.innerHTML = '';
}, [getCurrentViewStyle]);
useEffect(() => {
onViewStyleChange();
reloadItems();
}, [onViewStyleChange, query, reloadItems]);
}, [query, reloadItems]);
return (
<div ref={element}>
<div className='flex align-items-center justify-content-center flex-wrap-wrap padded-top padded-left padded-right padded-bottom focuscontainer-x'>
<Pagination itemsResult= {itemsResult} query={query} reloadItems={reloadItems} />
<SelectView getCurrentViewStyle={getCurrentViewStyle} savedViewKey={savedViewKey} query={query} onViewStyleChange={onViewStyleChange} reloadItems={reloadItems} />
<SelectView getCurrentViewStyle={getCurrentViewStyle} savedViewKey={savedViewKey} query={query} reloadItems={reloadItems} />
<Sort sortMenuOptions={SortMenuOptions} query={query} savedQueryKey={savedQueryKey} reloadItems={reloadItems} />
<Filter query={query} reloadItems={reloadItems} />

View file

@ -97,34 +97,9 @@ const MoviesView: FunctionComponent<IProps> = ({ topParentId }: IProps) => {
});
}, [query]);
const onViewStyleChange = useCallback(() => {
const page = element.current;
if (!page) {
console.error('Unexpected null reference');
return;
}
const viewStyle = getCurrentViewStyle();
const itemsContainer = page.querySelector('.itemsContainer') as HTMLDivElement;
if (viewStyle == 'List') {
itemsContainer.classList.add('vertical-list');
itemsContainer.classList.remove('vertical-wrap');
} else {
itemsContainer.classList.remove('vertical-list');
itemsContainer.classList.add('vertical-wrap');
}
itemsContainer.innerHTML = '';
}, [getCurrentViewStyle]);
useEffect(() => {
onViewStyleChange();
}, [onViewStyleChange]);
useEffect(() => {
reloadItems();
}, [onViewStyleChange, query, reloadItems]);
}, [query, reloadItems]);
return (
<div ref={element}>
@ -133,7 +108,7 @@ const MoviesView: FunctionComponent<IProps> = ({ topParentId }: IProps) => {
<Shuffle itemsResult= {itemsResult} topParentId={topParentId} />
<SelectView getCurrentViewStyle={getCurrentViewStyle} savedViewKey={savedViewKey} query={query} onViewStyleChange={onViewStyleChange} reloadItems={reloadItems} />
<SelectView getCurrentViewStyle={getCurrentViewStyle} savedViewKey={savedViewKey} query={query} reloadItems={reloadItems} />
<Sort sortMenuOptions={SortMenuOptions} query={query} savedQueryKey={savedQueryKey} reloadItems={reloadItems} />
<Filter query={query} reloadItems={reloadItems} />

View file

@ -97,8 +97,8 @@ const SuggestionsView: FunctionComponent<IProps> = (props: IProps) => {
ImageTypeLimit: 1,
EnableImageTypes: 'Primary,Backdrop,Banner,Thumb'
});
window.ApiClient.getJSON(url).then(recommendations => {
setRecommendations(recommendations);
window.ApiClient.getJSON(url).then(result => {
setRecommendations(result);
// FIXME: Wait for all sections to load
autoFocus(page);

View file

@ -83,30 +83,9 @@ const TrailersView: FunctionComponent<IProps> = ({ topParentId }: IProps) => {
});
}, [query]);
const onViewStyleChange = useCallback(() => {
const page = element.current;
if (!page) {
console.error('Unexpected null reference');
return;
}
const viewStyle = getCurrentViewStyle();
const itemsContainer = page.querySelector('.itemsContainer') as HTMLDivElement;
if (viewStyle == 'List') {
itemsContainer.classList.add('vertical-list');
itemsContainer.classList.remove('vertical-wrap');
} else {
itemsContainer.classList.remove('vertical-list');
itemsContainer.classList.add('vertical-wrap');
}
itemsContainer.innerHTML = '';
}, [getCurrentViewStyle]);
useEffect(() => {
onViewStyleChange();
reloadItems();
}, [onViewStyleChange, query, reloadItems]);
}, [query, reloadItems]);
return (
<div ref={element}>