From 8ea38a3efc65a1b5a7f540d018b9ad974c0372c0 Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Sat, 4 Jan 2025 16:31:41 +0100 Subject: [PATCH] chore: removing deps --- app.json | 6 - app/(auth)/(tabs)/(custom-links)/_layout.tsx | 20 --- app/(auth)/(tabs)/(custom-links)/index.tsx | 73 ---------- app/(auth)/(tabs)/(home)/settings.tsx | 6 - .../collections/[collectionId].tsx | 12 +- app/(auth)/(tabs)/(libraries)/[libraryId].tsx | 13 +- app/(auth)/player/direct-player.tsx | 8 -- app/(auth)/player/music-player.tsx | 7 - app/(auth)/player/transcoding-player.tsx | 8 -- bun.lockb | Bin 600438 -> 617713 bytes components/Button.tsx | 2 - components/ItemContent.tsx | 9 +- components/PlayButton.tsx | 3 - components/RoundButton.tsx | 2 - components/common/JellyseerrItemRouter.tsx | 109 ++++++-------- components/common/TouchableItemRouter.tsx | 84 ++--------- components/home/LargeMovieCarousel.tsx | 2 - components/settings/SettingToggles.tsx | 135 +----------------- components/video-player/controls/Controls.tsx | 13 +- hooks/useCreditSkipper.ts | 2 - hooks/useIntroSkipper.ts | 2 - hooks/useMarkAsPlayed.ts | 3 - hooks/useOrientation.ts | 28 ---- hooks/useOrientationSettings.ts | 25 ---- package.json | 6 +- utils/OrientationLockConverter.ts | 21 --- utils/atoms/orientation.ts | 6 - utils/atoms/settings.ts | 19 --- 28 files changed, 60 insertions(+), 564 deletions(-) delete mode 100644 app/(auth)/(tabs)/(custom-links)/_layout.tsx delete mode 100644 app/(auth)/(tabs)/(custom-links)/index.tsx delete mode 100644 hooks/useOrientation.ts delete mode 100644 hooks/useOrientationSettings.ts delete mode 100644 utils/OrientationLockConverter.ts delete mode 100644 utils/atoms/orientation.ts diff --git a/app.json b/app.json index dc399d04..7b40fa03 100644 --- a/app.json +++ b/app.json @@ -63,12 +63,6 @@ } } ], - [ - "expo-screen-orientation", - { - "initialOrientation": "DEFAULT" - } - ], [ "expo-sensors", { diff --git a/app/(auth)/(tabs)/(custom-links)/_layout.tsx b/app/(auth)/(tabs)/(custom-links)/_layout.tsx deleted file mode 100644 index ed0529d4..00000000 --- a/app/(auth)/(tabs)/(custom-links)/_layout.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import {Stack} from "expo-router"; -import { Platform } from "react-native"; - -export default function CustomMenuLayout() { - return ( - - - - ); -} diff --git a/app/(auth)/(tabs)/(custom-links)/index.tsx b/app/(auth)/(tabs)/(custom-links)/index.tsx deleted file mode 100644 index 76b10fb8..00000000 --- a/app/(auth)/(tabs)/(custom-links)/index.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import {FlatList, TouchableOpacity, View} from "react-native"; -import {useSafeAreaInsets} from "react-native-safe-area-context"; -import React, {useCallback, useEffect, useState} from "react"; -import {useAtom} from "jotai/index"; -import {apiAtom} from "@/providers/JellyfinProvider"; -import {ListItem} from "@/components/ListItem"; -import * as WebBrowser from 'expo-web-browser'; -import Ionicons from '@expo/vector-icons/Ionicons'; -import {Text} from "@/components/common/Text"; - -export interface MenuLink { - name: string, - url: string, - icon: string -} - -export default function menuLinks() { - const [api] = useAtom(apiAtom); - const insets = useSafeAreaInsets() - const [menuLinks, setMenuLinks] = useState([]) - - const getMenuLinks = useCallback(async () => { - try { - const response = await api?.axiosInstance.get(api?.basePath + "/web/config.json") - const config = response?.data; - - if (!config && !config.hasOwnProperty("menuLinks")) { - console.error("Menu links not found"); - return; - } - - setMenuLinks(config?.menuLinks as MenuLink[]) - } catch (error) { - console.error("Failed to retrieve config:", error); - } - }, - [api] - ) - - useEffect(() => { getMenuLinks() }, []); - return ( - ( - WebBrowser.openBrowserAsync(item.url) }> - } - /> - - ) - } - ItemSeparatorComponent={() => ( - - )} - ListEmptyComponent={ - - No links - - } - /> - ); -} \ No newline at end of file diff --git a/app/(auth)/(tabs)/(home)/settings.tsx b/app/(auth)/(tabs)/(home)/settings.tsx index 72b362b3..e19001c5 100644 --- a/app/(auth)/(tabs)/(home)/settings.tsx +++ b/app/(auth)/(tabs)/(home)/settings.tsx @@ -7,7 +7,6 @@ import { clearLogs, useLog } from "@/utils/log"; import { getQuickConnectApi } from "@jellyfin/sdk/lib/utils/api"; import { useQuery } from "@tanstack/react-query"; import * as FileSystem from "expo-file-system"; -import * as Haptics from "expo-haptics"; import { useAtom } from "jotai"; import { Alert, ScrollView, View } from "react-native"; import * as Progress from "react-native-progress"; @@ -35,16 +34,11 @@ export default function settings() { userId: user?.Id, }); if (res.status === 200) { - Haptics.notificationAsync( - Haptics.NotificationFeedbackType.Success - ); Alert.alert("Success", "Quick connect authorized"); } else { - Haptics.notificationAsync(Haptics.NotificationFeedbackType.Error); Alert.alert("Error", "Invalid code"); } } catch (e) { - Haptics.notificationAsync(Haptics.NotificationFeedbackType.Error); Alert.alert("Error", "Invalid code"); } } diff --git a/app/(auth)/(tabs)/(home,libraries,search)/collections/[collectionId].tsx b/app/(auth)/(tabs)/(home,libraries,search)/collections/[collectionId].tsx index 4c2b72ae..63351a59 100644 --- a/app/(auth)/(tabs)/(home,libraries,search)/collections/[collectionId].tsx +++ b/app/(auth)/(tabs)/(home,libraries,search)/collections/[collectionId].tsx @@ -29,7 +29,6 @@ import { import { FlashList } from "@shopify/flash-list"; import { useInfiniteQuery, useQuery } from "@tanstack/react-query"; import { useLocalSearchParams, useNavigation } from "expo-router"; -import * as ScreenOrientation from "expo-screen-orientation"; import { useAtom } from "jotai"; import React, { useCallback, useEffect, useMemo, useState } from "react"; import { FlatList, View } from "react-native"; @@ -41,10 +40,6 @@ const page: React.FC = () => { const [api] = useAtom(apiAtom); const [user] = useAtom(userAtom); const navigation = useNavigation(); - const [orientation, setOrientation] = useState( - ScreenOrientation.Orientation.PORTRAIT_UP - ); - const [selectedGenres, setSelectedGenres] = useAtom(genreFilterAtom); const [selectedYears, setSelectedYears] = useAtom(yearFilterAtom); const [selectedTags, setSelectedTags] = useAtom(tagsFilterAtom); @@ -174,8 +169,7 @@ const page: React.FC = () => { key={item.Id} style={{ width: "100%", - marginBottom: - orientation === ScreenOrientation.Orientation.PORTRAIT_UP ? 4 : 16, + marginBottom: 16, }} item={item} > @@ -389,9 +383,7 @@ const page: React.FC = () => { renderItem={renderItem} keyExtractor={keyExtractor} estimatedItemSize={255} - numColumns={ - orientation === ScreenOrientation.Orientation.PORTRAIT_UP ? 3 : 5 - } + numColumns={5} onEndReached={() => { if (hasNextPage) { fetchNextPage(); diff --git a/app/(auth)/(tabs)/(libraries)/[libraryId].tsx b/app/(auth)/(tabs)/(libraries)/[libraryId].tsx index bd0df182..0d69348c 100644 --- a/app/(auth)/(tabs)/(libraries)/[libraryId].tsx +++ b/app/(auth)/(tabs)/(libraries)/[libraryId].tsx @@ -1,6 +1,5 @@ import { useInfiniteQuery, useQuery } from "@tanstack/react-query"; import { useLocalSearchParams, useNavigation } from "expo-router"; -import * as ScreenOrientation from "expo-screen-orientation"; import { useAtom } from "jotai"; import React, { useCallback, useEffect, useMemo } from "react"; import { FlatList, useWindowDimensions, View } from "react-native"; @@ -12,7 +11,6 @@ import { ResetFiltersButton } from "@/components/filters/ResetFiltersButton"; import { ItemCardText } from "@/components/ItemCardText"; import { Loader } from "@/components/Loader"; import { ItemPoster } from "@/components/posters/ItemPoster"; -import { useOrientation } from "@/hooks/useOrientation"; import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; import { genreFilterAtom, @@ -61,8 +59,6 @@ const Page = () => { sortOrderPreferenceAtom ); - const { orientation } = useOrientation(); - useEffect(() => { const sop = getSortOrderPreference(libraryId, sortOrderPreference); if (sop) { @@ -241,14 +237,7 @@ const Page = () => { > diff --git a/app/(auth)/player/direct-player.tsx b/app/(auth)/player/direct-player.tsx index 22670cf0..0acbff13 100644 --- a/app/(auth)/player/direct-player.tsx +++ b/app/(auth)/player/direct-player.tsx @@ -2,8 +2,6 @@ import { BITRATES } from "@/components/BitrateSelector"; import { Text } from "@/components/common/Text"; import { Loader } from "@/components/Loader"; import { Controls } from "@/components/video-player/controls/Controls"; -import { useOrientation } from "@/hooks/useOrientation"; -import { useOrientationSettings } from "@/hooks/useOrientationSettings"; import { useInvalidatePlaybackProgressCache } from "@/hooks/useRevalidatePlaybackProgressCache"; import { useWebSocket } from "@/hooks/useWebsockets"; import { VlcPlayerView } from "@/modules/vlc-player"; @@ -26,7 +24,6 @@ import { getUserLibraryApi, } from "@jellyfin/sdk/lib/utils/api"; import { useQuery } from "@tanstack/react-query"; -import * as Haptics from "expo-haptics"; import { useFocusEffect, useGlobalSearchParams } from "expo-router"; import { useAtomValue } from "jotai"; import React, { @@ -59,7 +56,6 @@ export default function page() { const setShowControls = useCallback((show: boolean) => { _setShowControls(show); - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); }, []); const { @@ -142,7 +138,6 @@ export default function page() { const togglePlay = useCallback(async () => { if (!api) return; - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); if (isPlaying) { await videoRef.current?.pause(); @@ -254,9 +249,6 @@ export default function page() { [item?.Id, isPlaying, api, isPlaybackStopped, audioIndex, subtitleIndex] ); - useOrientation(); - useOrientationSettings(); - useWebSocket({ isPlaying: isPlaying, togglePlay: togglePlay, diff --git a/app/(auth)/player/music-player.tsx b/app/(auth)/player/music-player.tsx index 13aa4ecc..cdef5a8e 100644 --- a/app/(auth)/player/music-player.tsx +++ b/app/(auth)/player/music-player.tsx @@ -1,8 +1,6 @@ import { Text } from "@/components/common/Text"; import { Loader } from "@/components/Loader"; import { Controls } from "@/components/video-player/controls/Controls"; -import { useOrientation } from "@/hooks/useOrientation"; -import { useOrientationSettings } from "@/hooks/useOrientationSettings"; import { useWebSocket } from "@/hooks/useWebsockets"; import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; import { useSettings } from "@/utils/atoms/settings"; @@ -17,7 +15,6 @@ import { getUserLibraryApi, } from "@jellyfin/sdk/lib/utils/api"; import { useQuery } from "@tanstack/react-query"; -import * as Haptics from "expo-haptics"; import { Image } from "expo-image"; import { useFocusEffect, useLocalSearchParams } from "expo-router"; import { useAtomValue } from "jotai"; @@ -124,7 +121,6 @@ export default function page() { const togglePlay = useCallback( async (ticks: number) => { - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); if (isPlaying) { videoRef.current?.pause(); await getPlaystateApi(api!).onPlaybackProgress({ @@ -261,9 +257,6 @@ export default function page() { }, [play, stop]) ); - useOrientation(); - useOrientationSettings(); - useWebSocket({ isPlaying: isPlaying, pauseVideo: pause, diff --git a/app/(auth)/player/transcoding-player.tsx b/app/(auth)/player/transcoding-player.tsx index 2191e441..6dd88eb2 100644 --- a/app/(auth)/player/transcoding-player.tsx +++ b/app/(auth)/player/transcoding-player.tsx @@ -1,8 +1,6 @@ import { Text } from "@/components/common/Text"; import { Loader } from "@/components/Loader"; import { Controls } from "@/components/video-player/controls/Controls"; -import { useOrientation } from "@/hooks/useOrientation"; -import { useOrientationSettings } from "@/hooks/useOrientationSettings"; import { useInvalidatePlaybackProgressCache } from "@/hooks/useRevalidatePlaybackProgressCache"; import { useWebSocket } from "@/hooks/useWebsockets"; import { TrackInfo } from "@/modules/vlc-player"; @@ -20,7 +18,6 @@ import { getUserLibraryApi, } from "@jellyfin/sdk/lib/utils/api"; import { useQuery } from "@tanstack/react-query"; -import * as Haptics from "expo-haptics"; import { useFocusEffect, useLocalSearchParams } from "expo-router"; import { useAtomValue } from "jotai"; import React, { @@ -58,7 +55,6 @@ const Player = () => { const setShowControls = useCallback((show: boolean) => { _setShowControls(show); - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); }, []); const progress = useSharedValue(0); @@ -167,7 +163,6 @@ const Player = () => { const videoSource = useVideoSource(item, api, poster, stream?.url); const togglePlay = useCallback(async () => { - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); if (isPlaying) { videoRef.current?.pause(); await getPlaystateApi(api!).onPlaybackProgress({ @@ -299,9 +294,6 @@ const Player = () => { ] ); - useOrientation(); - useOrientationSettings(); - useWebSocket({ isPlaying: isPlaying, togglePlay: togglePlay, diff --git a/bun.lockb b/bun.lockb index fd8896ee87c30f191442c6f73cc4872b083e162b..f0112a999b38ef6026b834415c56649b875d740c 100755 GIT binary patch delta 106949 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

kpF0|A#@XRjPtcU7<^kPV&2 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 delta 98982 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 DJjn6q diff --git a/components/Button.tsx b/components/Button.tsx index 1a73ad01..0a46b7ee 100644 --- a/components/Button.tsx +++ b/components/Button.tsx @@ -1,4 +1,3 @@ -import * as Haptics from "expo-haptics"; import React, { PropsWithChildren, ReactNode, useMemo } from "react"; import { Text, TouchableOpacity, View } from "react-native"; import { Loader } from "./Loader"; @@ -54,7 +53,6 @@ export const Button: React.FC> = ({ onPress={() => { if (!loading && !disabled && onPress) { onPress(); - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); } }} disabled={disabled || loading} diff --git a/components/ItemContent.tsx b/components/ItemContent.tsx index a1d82b83..e4c5e820 100644 --- a/components/ItemContent.tsx +++ b/components/ItemContent.tsx @@ -12,7 +12,6 @@ import { CurrentSeries } from "@/components/series/CurrentSeries"; import { SeasonEpisodesCarousel } from "@/components/series/SeasonEpisodesCarousel"; import useDefaultPlaySettings from "@/hooks/useDefaultPlaySettings"; import { useImageColors } from "@/hooks/useImageColors"; -import { useOrientation } from "@/hooks/useOrientation"; import { apiAtom } from "@/providers/JellyfinProvider"; import { SubtitleHelper } from "@/utils/SubtitleHelper"; import { useSettings } from "@/utils/atoms/settings"; @@ -23,7 +22,6 @@ import { } from "@jellyfin/sdk/lib/generated-client/models"; import { Image } from "expo-image"; import { useNavigation } from "expo-router"; -import * as ScreenOrientation from "expo-screen-orientation"; import { useAtom } from "jotai"; import React, { useEffect, useMemo, useState } from "react"; import { View } from "react-native"; @@ -44,7 +42,6 @@ export const ItemContent: React.FC<{ item: BaseItemDto }> = React.memo( ({ item }) => { const [api] = useAtom(apiAtom); const [settings] = useSettings(); - const { orientation } = useOrientation(); const navigation = useNavigation(); const insets = useSafeAreaInsets(); useImageColors({ item }); @@ -94,11 +91,9 @@ export const ItemContent: React.FC<{ item: BaseItemDto }> = React.memo( }, [item]); useEffect(() => { - if (orientation !== ScreenOrientation.OrientationLock.PORTRAIT_UP) - setHeaderHeight(230); - else if (item.Type === "Movie") setHeaderHeight(500); + if (item.Type === "Movie") setHeaderHeight(500); else setHeaderHeight(350); - }, [item.Type, orientation]); + }, [item.Type]); const logoUrl = useMemo(() => getLogoImageUrlById({ api, item }), [item]); diff --git a/components/PlayButton.tsx b/components/PlayButton.tsx index d0c2c227..3804b031 100644 --- a/components/PlayButton.tsx +++ b/components/PlayButton.tsx @@ -5,7 +5,6 @@ import { runtimeTicksToMinutes } from "@/utils/time"; import { useActionSheet } from "@expo/react-native-action-sheet"; import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client"; -import * as Haptics from "expo-haptics"; import { useRouter } from "expo-router"; import { useAtom, useAtomValue } from "jotai"; import { useCallback, useEffect } from "react"; @@ -66,8 +65,6 @@ export const PlayButton: React.FC = ({ const onPress = useCallback(async () => { if (!item) return; - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); - const queryParams = new URLSearchParams({ itemId: item.Id!, audioIndex: selectedOptions.audioIndex?.toString() ?? "", diff --git a/components/RoundButton.tsx b/components/RoundButton.tsx index 7bcecdcb..d78eaf48 100644 --- a/components/RoundButton.tsx +++ b/components/RoundButton.tsx @@ -6,7 +6,6 @@ import { TouchableOpacity, TouchableOpacityProps, } from "react-native"; -import * as Haptics from "expo-haptics"; interface Props extends TouchableOpacityProps { onPress?: () => void; @@ -32,7 +31,6 @@ export const RoundButton: React.FC> = ({ const handlePress = () => { if (hapticFeedback) { - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); } onPress?.(); }; diff --git a/components/common/JellyseerrItemRouter.tsx b/components/common/JellyseerrItemRouter.tsx index 90f9c336..cadc9cf7 100644 --- a/components/common/JellyseerrItemRouter.tsx +++ b/components/common/JellyseerrItemRouter.tsx @@ -1,11 +1,13 @@ -import {useRouter, useSegments} from "expo-router"; -import React, {PropsWithChildren, useCallback, useMemo} from "react"; -import {TouchableOpacity, TouchableOpacityProps} from "react-native"; -import * as ContextMenu from "zeego/context-menu"; -import {MovieResult, TvResult} from "@/utils/jellyseerr/server/models/Search"; -import {useJellyseerr} from "@/hooks/useJellyseerr"; -import {hasPermission, Permission} from "@/utils/jellyseerr/server/lib/permissions"; -import {MediaType} from "@/utils/jellyseerr/server/constants/media"; +import { useRouter, useSegments } from "expo-router"; +import React, { PropsWithChildren, useCallback, useMemo } from "react"; +import { TouchableOpacity, TouchableOpacityProps } from "react-native"; +import { MovieResult, TvResult } from "@/utils/jellyseerr/server/models/Search"; +import { useJellyseerr } from "@/hooks/useJellyseerr"; +import { + hasPermission, + Permission, +} from "@/utils/jellyseerr/server/lib/permissions"; +import { MediaType } from "@/utils/jellyseerr/server/constants/media"; interface Props extends TouchableOpacityProps { result: MovieResult | TvResult; @@ -26,78 +28,49 @@ export const TouchableJellyseerrRouter: React.FC> = ({ }) => { const router = useRouter(); const segments = useSegments(); - const {jellyseerrApi, jellyseerrUser, requestMedia} = useJellyseerr() + const { jellyseerrApi, jellyseerrUser, requestMedia } = useJellyseerr(); const from = segments[2]; const autoApprove = useMemo(() => { - return jellyseerrUser && hasPermission( - Permission.AUTO_APPROVE, - jellyseerrUser.permissions, - {type: 'or'} - ) - }, [jellyseerrApi, jellyseerrUser]) + return ( + jellyseerrUser && + hasPermission(Permission.AUTO_APPROVE, jellyseerrUser.permissions, { + type: "or", + }) + ); + }, [jellyseerrApi, jellyseerrUser]); - const request = useCallback(() => + const request = useCallback( + () => requestMedia(mediaTitle, { mediaId: result.id, - mediaType: result.mediaType - } - ), + mediaType: result.mediaType, + }), [jellyseerrApi, result] - ) + ); if (from === "(home)" || from === "(search)" || from === "(libraries)") return ( <> - - - { - // @ts-ignore - router.push({pathname: `/(auth)/(tabs)/${from}/jellyseerr/page`, params: {...result, mediaTitle, releaseYear, canRequest, posterSrc}}); - }} - {...props} - > - {children} - - - - Actions - {canRequest && result.mediaType === MediaType.MOVIE && ( - { - if (autoApprove) { - request() - } - }} - shouldDismissMenuOnSelect - > - Request - - - )} - - + { + // @ts-ignore + router.push({ + pathname: `/(auth)/(tabs)/${from}/jellyseerr/page`, + params: { + ...result, + mediaTitle, + releaseYear, + canRequest, + posterSrc, + }, + }); + }} + {...props} + > + {children} + ); }; diff --git a/components/common/TouchableItemRouter.tsx b/components/common/TouchableItemRouter.tsx index d50c88bf..a58ce6b3 100644 --- a/components/common/TouchableItemRouter.tsx +++ b/components/common/TouchableItemRouter.tsx @@ -1,6 +1,5 @@ import { useMarkAsPlayed } from "@/hooks/useMarkAsPlayed"; import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; -import * as Haptics from "expo-haptics"; import { useRouter, useSegments } from "expo-router"; import { PropsWithChildren } from "react"; import { TouchableOpacity, TouchableOpacityProps } from "react-native"; @@ -68,78 +67,15 @@ export const TouchableItemRouter: React.FC> = ({ if (from === "(home)" || from === "(search)" || from === "(libraries)") return ( - - - { - const url = itemRouter(item, from); - // @ts-ignore - router.push(url); - }} - {...props} - > - {children} - - - - Actions - { - markAsPlayedStatus(true); - }} - shouldDismissMenuOnSelect - > - - Mark as watched - - - - { - markAsPlayedStatus(false); - }} - shouldDismissMenuOnSelect - destructive - > - - Mark as not watched - - - - - + { + const url = itemRouter(item, from); + // @ts-ignore + router.push(url); + }} + {...props} + > + {children} + ); }; diff --git a/components/home/LargeMovieCarousel.tsx b/components/home/LargeMovieCarousel.tsx index 11676b88..37a0cda2 100644 --- a/components/home/LargeMovieCarousel.tsx +++ b/components/home/LargeMovieCarousel.tsx @@ -22,7 +22,6 @@ import { itemRouter, TouchableItemRouter } from "../common/TouchableItemRouter"; import { Loader } from "../Loader"; import { Gesture, GestureDetector } from "react-native-gesture-handler"; import { useRouter, useSegments } from "expo-router"; -import * as Haptics from "expo-haptics"; interface Props extends ViewProps {} @@ -147,7 +146,6 @@ const RenderItem: React.FC<{ item: BaseItemDto }> = ({ item }) => { const handleRoute = useCallback(() => { if (!from) return; const url = itemRouter(item, from); - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); // @ts-ignore if (url) router.push(url); }, [item, from]); diff --git a/components/settings/SettingToggles.tsx b/components/settings/SettingToggles.tsx index 4368ff15..d828f6d9 100644 --- a/components/settings/SettingToggles.tsx +++ b/components/settings/SettingToggles.tsx @@ -1,8 +1,7 @@ import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; -import { ScreenOrientationEnum, useSettings } from "@/utils/atoms/settings"; +import { useSettings } from "@/utils/atoms/settings"; import { getItemsApi } from "@jellyfin/sdk/lib/utils/api"; import { useQuery, useQueryClient } from "@tanstack/react-query"; -import * as ScreenOrientation from "expo-screen-orientation"; import { useAtom } from "jotai"; import React, { useState } from "react"; import { @@ -98,113 +97,6 @@ export const SettingToggles: React.FC = ({ ...props }) => { /> - - - Video orientation - - Set the full screen video player orientation. - - - - - - - {ScreenOrientationEnum[settings.defaultVideoOrientation]} - - - - - Orientation - { - updateSettings({ - defaultVideoOrientation: - ScreenOrientation.OrientationLock.DEFAULT, - }); - }} - > - - { - ScreenOrientationEnum[ - ScreenOrientation.OrientationLock.DEFAULT - ] - } - - - { - updateSettings({ - defaultVideoOrientation: - ScreenOrientation.OrientationLock.PORTRAIT_UP, - }); - }} - > - - { - ScreenOrientationEnum[ - ScreenOrientation.OrientationLock.PORTRAIT_UP - ] - } - - - { - updateSettings({ - defaultVideoOrientation: - ScreenOrientation.OrientationLock.LANDSCAPE_LEFT, - }); - }} - > - - { - ScreenOrientationEnum[ - ScreenOrientation.OrientationLock.LANDSCAPE_LEFT - ] - } - - - { - updateSettings({ - defaultVideoOrientation: - ScreenOrientation.OrientationLock.LANDSCAPE_RIGHT, - }); - }} - > - - { - ScreenOrientationEnum[ - ScreenOrientation.OrientationLock.LANDSCAPE_RIGHT - ] - } - - - - - - Safe area in controls @@ -377,31 +269,6 @@ export const SettingToggles: React.FC = ({ ...props }) => { )} - - - - Show Custom Menu Links - - Show custom menu links defined inside your Jellyfin web - config.json file - - - Linking.openURL( - "https://jellyfin.org/docs/general/clients/web-config/#custom-menu-links" - ) - } - > - More info - - - - updateSettings({ showCustomMenuLinks: value }) - } - /> - diff --git a/components/video-player/controls/Controls.tsx b/components/video-player/controls/Controls.tsx index 4110a7e5..5b17b184 100644 --- a/components/video-player/controls/Controls.tsx +++ b/components/video-player/controls/Controls.tsx @@ -29,7 +29,6 @@ import { BaseItemDto, MediaSourceInfo, } from "@jellyfin/sdk/lib/generated-client"; -import * as Haptics from "expo-haptics"; import { Image } from "expo-image"; import { useLocalSearchParams, useRouter } from "expo-router"; import { useAtom } from "jotai"; @@ -159,8 +158,6 @@ export const Controls: React.FC = ({ const goToPreviousItem = useCallback(() => { if (!previousItem || !settings) return; - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); - const previousIndexes: previousIndexes = { subtitleIndex: subtitleIndex ? parseInt(subtitleIndex) : undefined, audioIndex: audioIndex ? parseInt(audioIndex) : undefined, @@ -197,8 +194,6 @@ export const Controls: React.FC = ({ const goToNextItem = useCallback(() => { if (!nextItem || !settings) return; - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); - const previousIndexes: previousIndexes = { subtitleIndex: subtitleIndex ? parseInt(subtitleIndex) : undefined, audioIndex: audioIndex ? parseInt(audioIndex) : undefined, @@ -325,7 +320,7 @@ export const Controls: React.FC = ({ const handleSkipBackward = useCallback(async () => { if (!settings?.rewindSkipTime) return; wasPlayingRef.current = isPlaying; - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); + try { const curr = progress.value; if (curr !== undefined) { @@ -343,7 +338,7 @@ export const Controls: React.FC = ({ const handleSkipForward = useCallback(async () => { if (!settings?.forwardSkipTime) return; wasPlayingRef.current = isPlaying; - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); + try { const curr = progress.value; if (curr !== undefined) { @@ -360,7 +355,6 @@ export const Controls: React.FC = ({ const toggleIgnoreSafeAreas = useCallback(() => { setIgnoreSafeAreas((prev) => !prev); - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); }, []); const memoizedRenderBubble = useCallback(() => { @@ -439,8 +433,6 @@ export const Controls: React.FC = ({ const gotoItem = await getItemById(api, itemId); if (!settings || !gotoItem) return; - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); - const previousIndexes: previousIndexes = { subtitleIndex: subtitleIndex ? parseInt(subtitleIndex) : undefined, audioIndex: audioIndex ? parseInt(audioIndex) : undefined, @@ -588,7 +580,6 @@ export const Controls: React.FC = ({ )} { - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); router.back(); }} className="aspect-square flex flex-col bg-neutral-800/90 rounded-xl items-center justify-center p-2" diff --git a/hooks/useCreditSkipper.ts b/hooks/useCreditSkipper.ts index 1430e7c9..5f7a8b34 100644 --- a/hooks/useCreditSkipper.ts +++ b/hooks/useCreditSkipper.ts @@ -5,7 +5,6 @@ import { apiAtom } from "@/providers/JellyfinProvider"; import { getAuthHeaders } from "@/utils/jellyfin/jellyfin"; import { writeToLog } from "@/utils/log"; import { msToSeconds, secondsToMs } from "@/utils/time"; -import * as Haptics from "expo-haptics"; interface CreditTimestamps { Introduction: { @@ -79,7 +78,6 @@ export const useCreditSkipper = ( if (!creditTimestamps) return; console.log(`Skipping credits to ${creditTimestamps.Credits.End}`); try { - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); wrappedSeek(creditTimestamps.Credits.End); setTimeout(() => { play(); diff --git a/hooks/useIntroSkipper.ts b/hooks/useIntroSkipper.ts index 15aaff05..214f4a5a 100644 --- a/hooks/useIntroSkipper.ts +++ b/hooks/useIntroSkipper.ts @@ -5,7 +5,6 @@ import { apiAtom } from "@/providers/JellyfinProvider"; import { getAuthHeaders } from "@/utils/jellyfin/jellyfin"; import { writeToLog } from "@/utils/log"; import { msToSeconds, secondsToMs } from "@/utils/time"; -import * as Haptics from "expo-haptics"; interface IntroTimestamps { EpisodeId: string; @@ -78,7 +77,6 @@ export const useIntroSkipper = ( const skipIntro = useCallback(() => { if (!introTimestamps) return; try { - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); wrappedSeek(introTimestamps.IntroEnd); setTimeout(() => { play(); diff --git a/hooks/useMarkAsPlayed.ts b/hooks/useMarkAsPlayed.ts index ff039cc8..e1b28fe7 100644 --- a/hooks/useMarkAsPlayed.ts +++ b/hooks/useMarkAsPlayed.ts @@ -3,7 +3,6 @@ import { markAsNotPlayed } from "@/utils/jellyfin/playstate/markAsNotPlayed"; import { markAsPlayed } from "@/utils/jellyfin/playstate/markAsPlayed"; import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; import { useQueryClient } from "@tanstack/react-query"; -import * as Haptics from "expo-haptics"; import { useAtom } from "jotai"; export const useMarkAsPlayed = (item: BaseItemDto) => { @@ -29,8 +28,6 @@ export const useMarkAsPlayed = (item: BaseItemDto) => { }; const markAsPlayedStatus = async (played: boolean) => { - Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); - // Optimistic update queryClient.setQueryData( ["item", item.Id], diff --git a/hooks/useOrientation.ts b/hooks/useOrientation.ts deleted file mode 100644 index 1ecb31ac..00000000 --- a/hooks/useOrientation.ts +++ /dev/null @@ -1,28 +0,0 @@ -import orientationToOrientationLock from "@/utils/OrientationLockConverter"; -import * as ScreenOrientation from "expo-screen-orientation"; -import { useEffect, useState } from "react"; - -export const useOrientation = () => { - const [orientation, setOrientation] = useState( - ScreenOrientation.OrientationLock.UNKNOWN - ); - - useEffect(() => { - const orientationSubscription = - ScreenOrientation.addOrientationChangeListener((event) => { - setOrientation( - orientationToOrientationLock(event.orientationInfo.orientation) - ); - }); - - ScreenOrientation.getOrientationAsync().then((orientation) => { - setOrientation(orientationToOrientationLock(orientation)); - }); - - return () => { - orientationSubscription.remove(); - }; - }, []); - - return { orientation, setOrientation }; -}; diff --git a/hooks/useOrientationSettings.ts b/hooks/useOrientationSettings.ts deleted file mode 100644 index 85b8a113..00000000 --- a/hooks/useOrientationSettings.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { useSettings } from "@/utils/atoms/settings"; -import * as ScreenOrientation from "expo-screen-orientation"; -import { useEffect } from "react"; - -export const useOrientationSettings = () => { - const [settings] = useSettings(); - - useEffect(() => { - if (settings?.autoRotate) { - // Don't need to do anything - } else if (settings?.defaultVideoOrientation) { - ScreenOrientation.lockAsync(settings.defaultVideoOrientation); - } - - return () => { - if (settings?.autoRotate) { - ScreenOrientation.unlockAsync(); - } else { - ScreenOrientation.lockAsync( - ScreenOrientation.OrientationLock.PORTRAIT_UP - ); - } - }; - }, [settings]); -}; diff --git a/package.json b/package.json index 952a50f8..9fee217b 100644 --- a/package.json +++ b/package.json @@ -45,20 +45,17 @@ "expo-dev-client": "~4.0.29", "expo-device": "~6.0.2", "expo-font": "~12.0.10", - "expo-haptics": "~13.0.1", "expo-image": "~1.13.0", "expo-keep-awake": "~13.0.2", "expo-linear-gradient": "~13.0.2", "expo-linking": "~6.3.1", "expo-network": "~6.0.1", "expo-router": "~3.5.24", - "expo-screen-orientation": "~7.0.5", "expo-sensors": "~13.0.9", "expo-splash-screen": "~0.27.7", "expo-status-bar": "~1.12.1", "expo-system-ui": "^3.0.7", "expo-updates": "~0.25.27", - "expo-web-browser": "~13.0.3", "ffmpeg-kit-react-native": "^6.0.2", "install": "^0.13.0", "jotai": "^2.10.1", @@ -66,7 +63,7 @@ "nativewind": "^2.0.11", "react": "18.2.0", "react-dom": "18.2.0", - "react-native": "npm:react-native-tvos@latest", + "react-native": "npm:react-native-tvos@0.74.5-0", "react-native-awesome-slider": "^2.5.6", "react-native-bottom-tabs": "0.7.1", "react-native-circular-progress": "^1.4.1", @@ -76,7 +73,6 @@ "react-native-gesture-handler": "~2.16.1", "react-native-get-random-values": "^1.11.0", "react-native-image-colors": "^2.4.0", - "react-native-ios-context-menu": "^2.5.2", "react-native-ios-utilities": "^4.5.1", "react-native-mmkv": "^2.12.2", "react-native-pager-view": "6.3.0", diff --git a/utils/OrientationLockConverter.ts b/utils/OrientationLockConverter.ts deleted file mode 100644 index 748ffcc6..00000000 --- a/utils/OrientationLockConverter.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Orientation, OrientationLock } from "expo-screen-orientation"; - -function orientationToOrientationLock( - orientation: Orientation -): OrientationLock { - switch (orientation) { - case Orientation.PORTRAIT_UP: - return OrientationLock.PORTRAIT_UP; - case Orientation.PORTRAIT_DOWN: - return OrientationLock.PORTRAIT_DOWN; - case Orientation.LANDSCAPE_LEFT: - return OrientationLock.LANDSCAPE_LEFT; - case Orientation.LANDSCAPE_RIGHT: - return OrientationLock.LANDSCAPE_RIGHT; - case Orientation.UNKNOWN: - default: - return OrientationLock.DEFAULT; - } -} - -export default orientationToOrientationLock; diff --git a/utils/atoms/orientation.ts b/utils/atoms/orientation.ts deleted file mode 100644 index e4680fe3..00000000 --- a/utils/atoms/orientation.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as ScreenOrientation from "expo-screen-orientation"; -import { atom } from "jotai"; - -export const orientationAtom = atom( - ScreenOrientation.OrientationLock.PORTRAIT_UP -); diff --git a/utils/atoms/settings.ts b/utils/atoms/settings.ts index f38cee36..a7e77921 100644 --- a/utils/atoms/settings.ts +++ b/utils/atoms/settings.ts @@ -1,6 +1,5 @@ import { atom, useAtom } from "jotai"; import { useEffect } from "react"; -import * as ScreenOrientation from "expo-screen-orientation"; import { storage } from "../mmkv"; import { Platform } from "react-native"; import { @@ -8,22 +7,6 @@ import { SubtitlePlaybackMode, } from "@jellyfin/sdk/lib/generated-client"; -export const ScreenOrientationEnum: Record< - ScreenOrientation.OrientationLock, - string -> = { - [ScreenOrientation.OrientationLock.DEFAULT]: "Default", - [ScreenOrientation.OrientationLock.ALL]: "All", - [ScreenOrientation.OrientationLock.PORTRAIT]: "Portrait", - [ScreenOrientation.OrientationLock.PORTRAIT_UP]: "Portrait Up", - [ScreenOrientation.OrientationLock.PORTRAIT_DOWN]: "Portrait Down", - [ScreenOrientation.OrientationLock.LANDSCAPE]: "Landscape", - [ScreenOrientation.OrientationLock.LANDSCAPE_LEFT]: "Landscape Left", - [ScreenOrientation.OrientationLock.LANDSCAPE_RIGHT]: "Landscape Right", - [ScreenOrientation.OrientationLock.OTHER]: "Other", - [ScreenOrientation.OrientationLock.UNKNOWN]: "Unknown", -}; - export type LibraryOptions = { display: "row" | "list"; cardStyle: "compact" | "detailed"; @@ -54,7 +37,6 @@ export type Settings = { subtitleMode: SubtitlePlaybackMode; rememberSubtitleSelections: boolean; showHomeTitles: boolean; - defaultVideoOrientation: ScreenOrientation.OrientationLock; forwardSkipTime: number; rewindSkipTime: number; optimizedVersionsServerUrl?: string | null; @@ -89,7 +71,6 @@ const loadSettings = (): Settings => { subtitleMode: SubtitlePlaybackMode.Default, rememberSubtitleSelections: true, showHomeTitles: true, - defaultVideoOrientation: ScreenOrientation.OrientationLock.DEFAULT, forwardSkipTime: 30, rewindSkipTime: 10, optimizedVersionsServerUrl: null,