Skip to content

Commit 17f01b1

Browse files
authored
Merge branch 'master' into tc/ref_prefer_dataset_over_get_attribute
2 parents f80e2de + 68d6935 commit 17f01b1

27 files changed

Lines changed: 234 additions & 77 deletions

File tree

src/RootAppRouter.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import Backdrop from 'components/Backdrop';
1616
import BangRedirect from 'components/router/BangRedirect';
1717
import { createRouterHistory } from 'components/router/routerHistory';
1818
import appTheme from 'themes/themes';
19+
import { ThemeStorageManager } from 'themes/themeStorageManager';
1920

2021
const layoutMode = localStorage.getItem('layout');
2122
const isExperimentalLayout = layoutMode === 'experimental';
@@ -54,8 +55,7 @@ function RootAppLayout() {
5455
<ThemeProvider
5556
theme={appTheme}
5657
defaultMode='dark'
57-
// Disable mui's default saving to local storage
58-
storageManager={null}
58+
storageManager={ThemeStorageManager}
5959
>
6060
<Backdrop />
6161
<AppHeader isHidden={isExperimentalLayout || isNewLayoutPath} />

src/apps/dashboard/components/AppTabs.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import isEqual from 'lodash-es/isEqual';
77
import React, { FC, useCallback, useEffect, useRef, useState } from 'react';
88
import { Link } from 'react-router-dom';
99

10-
import { EventType } from 'types/eventType';
10+
import { EventType } from 'constants/eventType';
1111
import Events, { type Event } from 'utils/events';
1212

1313
interface AppTabsParams {

src/apps/dashboard/components/table/TablePage.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import Box from '@mui/material/Box/Box';
22
import Stack from '@mui/material/Stack/Stack';
3+
import type {} from '@mui/material/themeCssVarsAugmentation';
34
import Typography from '@mui/material/Typography/Typography';
4-
import { type MRT_RowData, type MRT_TableInstance, MaterialReactTable } from 'material-react-table';
5+
import { type MRT_RowData, type MRT_TableInstance, type MRT_TableOptions, MaterialReactTable } from 'material-react-table';
56
import React from 'react';
67

78
import Page, { type PageProps } from 'components/Page';
@@ -12,7 +13,7 @@ interface TablePageProps<T extends MRT_RowData> extends PageProps {
1213
table: MRT_TableInstance<T>
1314
}
1415

15-
export const DEFAULT_TABLE_OPTIONS = {
16+
export const DEFAULT_TABLE_OPTIONS: Partial<MRT_TableOptions<MRT_RowData>> = {
1617
// Enable custom features
1718
enableColumnPinning: true,
1819
enableColumnResizing: true,

src/apps/dashboard/routes/activity/index.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import parseISO from 'date-fns/parseISO';
22
import React, { useCallback, useEffect, useMemo, useState } from 'react';
33
import type { ActivityLogEntry } from '@jellyfin/sdk/lib/generated-client/models/activity-log-entry';
44
import { LogLevel } from '@jellyfin/sdk/lib/generated-client/models/log-level';
5+
import { useTheme } from '@mui/material/styles';
56
import ToggleButton from '@mui/material/ToggleButton';
67
import ToggleButtonGroup from '@mui/material/ToggleButtonGroup';
7-
import { type MRT_ColumnDef, useMaterialReactTable } from 'material-react-table';
8+
import { type MRT_ColumnDef, type MRT_Theme, useMaterialReactTable } from 'material-react-table';
89
import { useSearchParams } from 'react-router-dom';
910

1011
import DateTimeCell from 'apps/dashboard/components/table/DateTimeCell';
@@ -53,6 +54,8 @@ export const Component = () => {
5354

5455
const { usersById: users, names: userNames, isLoading: isUsersLoading } = useUsersDetails();
5556

57+
const theme = useTheme();
58+
5659
const UserCell = getUserCell(users);
5760

5861
const activityParams = useMemo(() => ({
@@ -156,8 +159,15 @@ export const Component = () => {
156159
}
157160
}, [ activityView, searchParams, setSearchParams ]);
158161

162+
// NOTE: We need to provide a custom theme due to a MRT bug causing the initial theme to always be used
163+
// https://github.com/KevinVandy/material-react-table/issues/1429
164+
const mrtTheme = useMemo<Partial<MRT_Theme>>(() => ({
165+
baseBackgroundColor: theme.palette.background.paper
166+
}), [ theme ]);
167+
159168
const table = useMaterialReactTable({
160169
...DEFAULT_TABLE_OPTIONS,
170+
mrtTheme,
161171

162172
columns,
163173
data: logEntries,

src/apps/dashboard/routes/devices/index.tsx

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ import Edit from '@mui/icons-material/Edit';
44
import Box from '@mui/material/Box/Box';
55
import Button from '@mui/material/Button/Button';
66
import IconButton from '@mui/material/IconButton';
7+
import { useTheme } from '@mui/material/styles';
78
import Tooltip from '@mui/material/Tooltip/Tooltip';
89
import parseISO from 'date-fns/parseISO';
9-
import { type MRT_ColumnDef, useMaterialReactTable } from 'material-react-table';
10+
import { type MRT_ColumnDef, type MRT_Theme, useMaterialReactTable } from 'material-react-table';
1011
import React, { useCallback, useMemo, useState } from 'react';
1112

1213
import DateTimeCell from 'apps/dashboard/components/table/DateTimeCell';
@@ -41,6 +42,7 @@ export const Component = () => {
4142
data?.Items || []
4243
), [ data ]);
4344
const { usersById: users, names: userNames, isLoading: isUsersLoading } = useUsersDetails();
45+
const theme = useTheme();
4446

4547
const [ isDeleteConfirmOpen, setIsDeleteConfirmOpen ] = useState(false);
4648
const [ isDeleteAllConfirmOpen, setIsDeleteAllConfirmOpen ] = useState(false);
@@ -137,8 +139,15 @@ export const Component = () => {
137139
}
138140
], [ UserCell, userNames ]);
139141

142+
// NOTE: We need to provide a custom theme due to a MRT bug causing the initial theme to always be used
143+
// https://github.com/KevinVandy/material-react-table/issues/1429
144+
const mrtTheme = useMemo<Partial<MRT_Theme>>(() => ({
145+
baseBackgroundColor: theme.palette.background.paper
146+
}), [ theme ]);
147+
140148
const mrTable = useMaterialReactTable({
141149
...DEFAULT_TABLE_OPTIONS,
150+
mrtTheme,
142151

143152
columns,
144153
data: devices,
@@ -190,10 +199,18 @@ export const Component = () => {
190199
renderRowActions: ({ row, table }) => {
191200
const isDeletable = api && row.original.Id && api.deviceInfo.id === row.original.Id;
192201
return (
193-
<Box sx={{ display: 'flex', gap: 1 }}>
202+
<Box
203+
sx={{
204+
display: 'flex',
205+
gap: 1,
206+
'&&': {
207+
backgroundColor: 'transparent !important'
208+
}
209+
}}
210+
>
194211
<Tooltip title={globalize.translate('Edit')}>
195212
<IconButton
196-
// eslint-disable-next-line react/jsx-no-bind
213+
// eslint-disable-next-line react/jsx-no-bind
197214
onClick={() => table.setEditingRow(row)}
198215
>
199216
<Edit />

src/apps/dashboard/routes/keys/index.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ import type { AuthenticationInfo } from '@jellyfin/sdk/lib/generated-client/mode
22
import Box from '@mui/material/Box';
33
import Button from '@mui/material/Button';
44
import IconButton from '@mui/material/IconButton';
5+
import { useTheme } from '@mui/material/styles';
56
import Tooltip from '@mui/material/Tooltip';
67
import AddIcon from '@mui/icons-material/Add';
78
import DeleteIcon from '@mui/icons-material/Delete';
89
import parseISO from 'date-fns/parseISO';
9-
import { type MRT_ColumnDef, useMaterialReactTable } from 'material-react-table';
10+
import { type MRT_ColumnDef, type MRT_Theme, useMaterialReactTable } from 'material-react-table';
1011
import React, { useCallback, useMemo } from 'react';
1112

1213
import DateTimeCell from 'apps/dashboard/components/table/DateTimeCell';
@@ -27,6 +28,7 @@ export const Component = () => {
2728
), [ data ]);
2829
const revokeKey = useRevokeKey();
2930
const createKey = useCreateKey();
31+
const theme = useTheme();
3032

3133
const columns = useMemo<MRT_ColumnDef<AuthenticationInfo>[]>(() => [
3234
{
@@ -49,8 +51,15 @@ export const Component = () => {
4951
}
5052
], []);
5153

54+
// NOTE: We need to provide a custom theme due to a MRT bug causing the initial theme to always be used
55+
// https://github.com/KevinVandy/material-react-table/issues/1429
56+
const mrtTheme = useMemo<Partial<MRT_Theme>>(() => ({
57+
baseBackgroundColor: theme.palette.background.paper
58+
}), [ theme ]);
59+
5260
const table = useMaterialReactTable({
5361
...DEFAULT_TABLE_OPTIONS,
62+
mrtTheme,
5463

5564
columns,
5665
data: keys,

src/apps/dashboard/routes/tasks/task.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ import Stack from '@mui/material/Stack';
77
import Typography from '@mui/material/Typography';
88
import AddIcon from '@mui/icons-material/Add';
99
import IconButton from '@mui/material/IconButton';
10+
import { useTheme } from '@mui/material/styles';
1011
import Tooltip from '@mui/material/Tooltip';
1112
import RemoveCircleIcon from '@mui/icons-material/RemoveCircle';
1213
import Loading from 'components/loading/LoadingComponent';
13-
import { MRT_ColumnDef, MRT_Table, useMaterialReactTable } from 'material-react-table';
14+
import { type MRT_ColumnDef, MRT_Table, type MRT_Theme, useMaterialReactTable } from 'material-react-table';
1415
import type { TaskTriggerInfo } from '@jellyfin/sdk/lib/generated-client/models/task-trigger-info';
1516
import globalize from '../../../../lib/globalize';
1617
import { useTask } from 'apps/dashboard/features/tasks/api/useTask';
@@ -26,6 +27,7 @@ export const Component = () => {
2627
const [ isAddTriggerDialogOpen, setIsAddTriggerDialogOpen ] = useState(false);
2728
const [ isRemoveConfirmOpen, setIsRemoveConfirmOpen ] = useState(false);
2829
const [ pendingDeleteTrigger, setPendingDeleteTrigger ] = useState<TaskTriggerInfo | null>(null);
30+
const theme = useTheme();
2931

3032
const onCloseRemoveConfirmDialog = useCallback(() => {
3133
setPendingDeleteTrigger(null);
@@ -80,7 +82,15 @@ export const Component = () => {
8082
}
8183
], []);
8284

85+
// NOTE: We need to provide a custom theme due to a MRT bug causing the initial theme to always be used
86+
// https://github.com/KevinVandy/material-react-table/issues/1429
87+
const mrtTheme = useMemo<Partial<MRT_Theme>>(() => ({
88+
baseBackgroundColor: theme.palette.background.paper
89+
}), [ theme ]);
90+
8391
const table = useMaterialReactTable({
92+
mrtTheme,
93+
8494
columns,
8595
data: task?.Triggers || [],
8696

src/apps/experimental/components/AppToolbar/RemotePlayButton.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Box from '@mui/material/Box';
44
import Button from '@mui/material/Button';
55
import Cast from '@mui/icons-material/Cast';
66
import IconButton from '@mui/material/IconButton';
7-
import { useTheme } from '@mui/material/styles';
7+
import type {} from '@mui/material/themeCssVarsAugmentation';
88
import Tooltip from '@mui/material/Tooltip';
99

1010
import { playbackManager } from 'components/playback/playbackmanager';
@@ -15,7 +15,6 @@ import RemotePlayMenu, { ID } from './menus/RemotePlayMenu';
1515
import RemotePlayActiveMenu, { ID as ACTIVE_ID } from './menus/RemotePlayActiveMenu';
1616

1717
const RemotePlayButton = () => {
18-
const theme = useTheme();
1918
const [ playerInfo, setPlayerInfo ] = useState(playbackManager.getPlayerInfo());
2019

2120
const updatePlayerInfo = useCallback(() => {
@@ -70,9 +69,10 @@ const RemotePlayButton = () => {
7069
aria-haspopup='true'
7170
onClick={onRemotePlayActiveButtonClick}
7271
color='inherit'
73-
sx={{
74-
color: theme.palette.primary.main
75-
}}
72+
// eslint-disable-next-line react/jsx-no-bind
73+
sx={(theme) => ({
74+
color: theme.vars.palette.primary.main
75+
})}
7676
>
7777
{playerInfo.deviceName || playerInfo.name}
7878
</Button>

src/apps/experimental/routes/home.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import globalize from '../../../lib/globalize';
55
import { clearBackdrop } from '../../../components/backdrop/backdrop';
66
import layoutManager from '../../../components/layoutManager';
77
import Page from '../../../components/Page';
8-
import { EventType } from 'types/eventType';
8+
import { EventType } from 'constants/eventType';
99
import Events from 'utils/events';
1010

1111
import '../../../elements/emby-tabs/emby-tabs';

src/apps/experimental/routes/video/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import RemotePlayButton from 'apps/experimental/components/AppToolbar/RemotePlay
66
import SyncPlayButton from 'apps/experimental/components/AppToolbar/SyncPlayButton';
77
import AppToolbar from 'components/toolbar/AppToolbar';
88
import ViewManagerPage from 'components/viewManager/ViewManagerPage';
9-
import { EventType } from 'types/eventType';
9+
import { EventType } from 'constants/eventType';
1010
import Events, { type Event } from 'utils/events';
1111

1212
/**

0 commit comments

Comments
 (0)