diff --git a/src/components/ServerContentPage.tsx b/src/components/ServerContentPage.tsx index 7473c856e8..e5428269bc 100644 --- a/src/components/ServerContentPage.tsx +++ b/src/components/ServerContentPage.tsx @@ -4,6 +4,7 @@ import { useLocation } from 'react-router-dom'; import ServerConnections from './ServerConnections'; import viewManager from './viewManager/viewManager'; import globalize from '../scripts/globalize'; +import type { RestoreViewFailResponse } from '../types/viewManager'; interface ServerContentPageProps { view: string @@ -29,7 +30,7 @@ const ServerContentPage: FunctionComponent = ({ view }) }; viewManager.tryRestoreView(viewOptions) - .catch(async (result?: any) => { + .catch(async (result?: RestoreViewFailResponse) => { if (!result || !result.cancelled) { const apiClient = ServerConnections.currentApiClient(); diff --git a/src/components/viewManager/ViewManagerPage.tsx b/src/components/viewManager/ViewManagerPage.tsx index 563603e531..511338d1e2 100644 --- a/src/components/viewManager/ViewManagerPage.tsx +++ b/src/components/viewManager/ViewManagerPage.tsx @@ -2,6 +2,7 @@ import React, { FunctionComponent, useEffect } from 'react'; import { useLocation } from 'react-router-dom'; import globalize from '../../scripts/globalize'; +import type { RestoreViewFailResponse } from '../../types/viewManager'; import viewManager from './viewManager'; export interface ViewManagerPageProps { @@ -45,7 +46,7 @@ const ViewManagerPage: FunctionComponent = ({ }; viewManager.tryRestoreView(viewOptions) - .catch(async (result?: any) => { + .catch(async (result?: RestoreViewFailResponse) => { if (!result || !result.cancelled) { const [ controllerFactory, viewHtml ] = await Promise.all([ import(/* webpackChunkName: "[request]" */ `../../controllers/${controller}`), diff --git a/src/elements/emby-scroller/Scroller.tsx b/src/elements/emby-scroller/Scroller.tsx index 36b38cc1fb..773d184c59 100644 --- a/src/elements/emby-scroller/Scroller.tsx +++ b/src/elements/emby-scroller/Scroller.tsx @@ -126,7 +126,7 @@ const Scroller: FC = ({ }, [getScrollPosition, getScrollSize, getScrollWidth]); const initCenterFocus = useCallback((elem: EventTarget, scrollerInstance: scrollerFactory) => { - dom.addEventListener(elem, 'focus', function (e: { target: any; }) { + dom.addEventListener(elem, 'focus', function (e: FocusEvent) { const focused = focusManager.focusableParent(e.target); if (focused) { scrollerInstance.toCenter(focused, false); diff --git a/src/types/viewManager.ts b/src/types/viewManager.ts new file mode 100644 index 0000000000..541bbdbc75 --- /dev/null +++ b/src/types/viewManager.ts @@ -0,0 +1,3 @@ +export interface RestoreViewFailResponse { + cancelled?: boolean +} diff --git a/src/utils/jellyfin-apiclient/getItems.ts b/src/utils/jellyfin-apiclient/getItems.ts index dee681a5d5..4bbe711f81 100644 --- a/src/utils/jellyfin-apiclient/getItems.ts +++ b/src/utils/jellyfin-apiclient/getItems.ts @@ -31,25 +31,26 @@ function getItemsSplit(apiClient: ApiClient, userId: string, options: GetItemsRe function mergeResults(results: BaseItemDtoQueryResult[]) { const merged: BaseItemDtoQueryResult = { Items: [], - TotalRecordCount: 0, StartIndex: 0 }; + // set TotalRecordCount separately so TS knows it is defined + merged.TotalRecordCount = 0; for (const result of results) { - if (result.Items == null) { + if (!result.Items) { console.log('[getItems] Retrieved Items array is invalid', result.Items); continue; } - if (result.TotalRecordCount == null) { + if (!result.TotalRecordCount) { console.log('[getItems] Retrieved TotalRecordCount is invalid', result.TotalRecordCount); continue; } - if (result.StartIndex == null) { + if (typeof result.StartIndex === 'undefined') { console.log('[getItems] Retrieved StartIndex is invalid', result.StartIndex); continue; } merged.Items = merged.Items?.concat(result.Items); - merged.TotalRecordCount! += result.TotalRecordCount; + merged.TotalRecordCount += result.TotalRecordCount; merged.StartIndex = Math.min(merged.StartIndex || 0, result.StartIndex); } return merged;