Skip to content

Commit 762f95c

Browse files
authored
Merge pull request #7394 from thornbill/experimental-links
2 parents ecb7a35 + ae1f025 commit 762f95c

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

src/apps/experimental/components/AppToolbar/userViews/UserViewNav.tsx

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { CollectionType } from '@jellyfin/sdk/lib/generated-client/models/collec
33
import ArrowDropDown from '@mui/icons-material/ArrowDropDown';
44
import Favorite from '@mui/icons-material/Favorite';
55
import Button from '@mui/material/Button/Button';
6+
import Icon from '@mui/material/Icon';
67
import { Theme } from '@mui/material/styles';
78
import useMediaQuery from '@mui/material/useMediaQuery';
89
import React, { useCallback, useMemo, useState } from 'react';
@@ -15,6 +16,7 @@ import { appRouter } from 'components/router/appRouter';
1516
import { useApi } from 'hooks/useApi';
1617
import useCurrentTab from 'hooks/useCurrentTab';
1718
import { useUserViews } from 'hooks/useUserViews';
19+
import { useWebConfig } from 'hooks/useWebConfig';
1820
import globalize from 'lib/globalize';
1921

2022
import UserViewsMenu from './UserViewsMenu';
@@ -56,14 +58,19 @@ const UserViewNav = () => {
5658
const libraryId = searchParams.get('topParentId') || searchParams.get('parentId');
5759
const collectionType = searchParams.get('collectionType');
5860
const { activeTab } = useCurrentTab();
61+
const webConfig = useWebConfig();
5962

6063
const isExtraLargeScreen = useMediaQuery((t: Theme) => t.breakpoints.up('xl'));
6164
const isLargeScreen = useMediaQuery((t: Theme) => t.breakpoints.up('lg'));
6265
const maxViews = useMemo(() => {
63-
if (isExtraLargeScreen) return MAX_USER_VIEWS_XL;
64-
if (isLargeScreen) return MAX_USER_VIEWS_LG;
65-
return MAX_USER_VIEWS_MD;
66-
}, [ isExtraLargeScreen, isLargeScreen ]);
66+
let _maxViews = MAX_USER_VIEWS_MD;
67+
if (isExtraLargeScreen) _maxViews = MAX_USER_VIEWS_XL;
68+
else if (isLargeScreen) _maxViews = MAX_USER_VIEWS_LG;
69+
70+
const customLinks = (webConfig.menuLinks || []).length;
71+
72+
return _maxViews - customLinks;
73+
}, [ isExtraLargeScreen, isLargeScreen, webConfig.menuLinks ]);
6774

6875
const { user } = useApi();
6976
const {
@@ -108,6 +115,21 @@ const UserViewNav = () => {
108115
{globalize.translate(MetaView.Favorites.Name)}
109116
</Button>
110117

118+
{webConfig.menuLinks?.map(link => (
119+
<Button
120+
key={link.name}
121+
variant='text'
122+
color='inherit'
123+
startIcon={<Icon>{link.icon || 'link'}</Icon>}
124+
component='a'
125+
href={link.url}
126+
target='_blank'
127+
rel='noopener noreferrer'
128+
>
129+
{link.name}
130+
</Button>
131+
))}
132+
111133
{primaryViews?.map(view => (
112134
<Button
113135
key={view.Id}

0 commit comments

Comments
 (0)