diff --git a/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx b/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx index 7f3acd1678..2f9cb360b7 100644 --- a/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx @@ -39,6 +39,8 @@ const CancelSeriesTimerButton: FC = ({ navigate('/livetv.html'); }, onError: (err: unknown) => { + loading.hide(); + toast(globalize.translate('MessageCancelSeriesTimerError')); console.error( '[cancelSeriesTimer] failed to cancel series timer', err diff --git a/src/apps/experimental/features/details/components/buttons/CancelTimerButton.tsx b/src/apps/experimental/features/details/components/buttons/CancelTimerButton.tsx index 0687df7f5d..0745bc204e 100644 --- a/src/apps/experimental/features/details/components/buttons/CancelTimerButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/CancelTimerButton.tsx @@ -35,6 +35,8 @@ const CancelTimerButton: FC = ({ }, onError: (err: unknown) => { + loading.hide(); + toast(globalize.translate('MessageCancelTimerError')); console.error( '[cancelTimer] failed to cancel timer', err diff --git a/src/apps/experimental/features/details/components/buttons/MoreCommandsButton.tsx b/src/apps/experimental/features/details/components/buttons/MoreCommandsButton.tsx index e679f9e772..e767712364 100644 --- a/src/apps/experimental/features/details/components/buttons/MoreCommandsButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/MoreCommandsButton.tsx @@ -82,7 +82,6 @@ export interface ContextMenuOpts { } interface MoreCommandsButtonProps { - className?: string; itemType: ItemKind; selectedItemId?: string; itemId?: string; @@ -96,7 +95,6 @@ interface MoreCommandsButtonProps { } const MoreCommandsButton: FC = ({ - className, itemType, selectedItemId, itemId, @@ -112,7 +110,7 @@ const MoreCommandsButton: FC = ({ const queryClient = useQueryClient(); const { data: item } = useGetItemByType({ itemType, - itemId: selectedItemId || itemId + itemId: selectedItemId || itemId || '' }); const parentId = item?.SeasonId || item?.SeriesId || item?.ParentId; @@ -206,7 +204,7 @@ const MoreCommandsButton: FC = ({ ) { return ( diff --git a/src/apps/experimental/features/details/components/buttons/PlayOrResumeButton.tsx b/src/apps/experimental/features/details/components/buttons/PlayOrResumeButton.tsx index faed1104cc..a52453656f 100644 --- a/src/apps/experimental/features/details/components/buttons/PlayOrResumeButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/PlayOrResumeButton.tsx @@ -70,7 +70,7 @@ const PlayOrResumeButton: FC = ({ return ( = ({ item }) => { return ( diff --git a/src/apps/experimental/features/details/components/buttons/SplitVersionsButton.tsx b/src/apps/experimental/features/details/components/buttons/SplitVersionsButton.tsx index b7bb101693..6754281be0 100644 --- a/src/apps/experimental/features/details/components/buttons/SplitVersionsButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/SplitVersionsButton.tsx @@ -6,6 +6,7 @@ import { useDeleteAlternateSources } from 'hooks/api/videosHooks'; import globalize from 'lib/globalize'; import confirm from 'components/confirm/confirm'; import loading from 'components/loading/loading'; +import toast from 'components/toast/toast'; interface SplitVersionsButtonProps { paramId: string; @@ -38,8 +39,10 @@ const SplitVersionsButton: FC = ({ }); }, onError: (err: unknown) => { + loading.hide(); + toast(globalize.translate('MessageSplitVersionsError')); console.error( - '[splitVersions] failed to delete Videos', + '[splitVersions] failed to split versions', err ); } diff --git a/src/apps/experimental/features/details/hooks/api/useGetItemByType.ts b/src/apps/experimental/features/details/hooks/api/useGetItemByType.ts index dc72771b40..3cb2a9c716 100644 --- a/src/apps/experimental/features/details/hooks/api/useGetItemByType.ts +++ b/src/apps/experimental/features/details/hooks/api/useGetItemByType.ts @@ -4,19 +4,17 @@ import { getLiveTvApi } from '@jellyfin/sdk/lib/utils/api/live-tv-api'; import { useQuery } from '@tanstack/react-query'; import { type JellyfinApiContext, useApi } from 'hooks/useApi'; import type { ItemDto } from 'types/base/models/item-dto'; -import type{ NullableString } from 'types/base/common/shared/types'; import { ItemKind } from 'types/base/models/item-kind'; const getItemByType = async ( apiContext: JellyfinApiContext, itemType: ItemKind, - itemId: NullableString, + itemId: string, options?: AxiosRequestConfig ) => { const { api, user } = apiContext; if (!api) throw new Error('No API instance available'); if (!user?.Id) throw new Error('No User ID provided'); - if (!itemId) throw new Error('No item ID provided'); let response; switch (itemType) { @@ -46,7 +44,7 @@ const getItemByType = async ( interface UseGetItemByTypeProps { itemType: ItemKind; - itemId: NullableString; + itemId: string; } export const useGetItemByType = ({ diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 560b469b90..f75735aa21 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1045,6 +1045,9 @@ "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", "MessageBrowsePluginCatalog": "Browse our plugin catalog to view available plugins.", + "MessageCancelSeriesTimerError": "An error occurred while cancel series timer", + "MessageCancelTimerError": "An error occurred while cancel timer", + "MessageSplitVersionsError": "An error occurred while split versions", "MessageChangeRecordingPath": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired.", "MessageConfirmAppExit": "Do you want to exit?", "MessageConfirmDeleteGuideProvider": "Are you sure you wish to delete this guide provider?",