import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; import { BottomSheetBackdrop, BottomSheetBackdropProps, BottomSheetModal, BottomSheetTextInput, BottomSheetView, } from "@gorhom/bottom-sheet"; import { getQuickConnectApi } from "@jellyfin/sdk/lib/utils/api"; import { useTranslation } from "react-i18next"; import { useHaptic } from "@/hooks/useHaptic"; import { useAtom } from "jotai"; import React, { useCallback, useRef, useState } from "react"; import { Alert, View, ViewProps } from "react-native"; import { Button } from "../Button"; import { Text } from "../common/Text"; import { ListGroup } from "../list/ListGroup"; import { ListItem } from "../list/ListItem"; interface Props extends ViewProps {} export const QuickConnect: React.FC = ({ ...props }) => { const [api] = useAtom(apiAtom); const [user] = useAtom(userAtom); const [quickConnectCode, setQuickConnectCode] = useState(); const bottomSheetModalRef = useRef(null); const successHapticFeedback = useHaptic("success"); const errorHapticFeedback = useHaptic("error"); const { t } = useTranslation(); const renderBackdrop = useCallback( (props: BottomSheetBackdropProps) => ( ), [] ); const authorizeQuickConnect = useCallback(async () => { if (quickConnectCode) { try { const res = await getQuickConnectApi(api!).authorizeQuickConnect({ code: quickConnectCode, userId: user?.Id, }); if (res.status === 200) { successHapticFeedback(); Alert.alert(t("home.settings.quick_connect.success"), t("home.settings.quick_connect.quick_connect_autorized")); setQuickConnectCode(undefined); bottomSheetModalRef?.current?.close(); } else { errorHapticFeedback(); Alert.alert(t("home.settings.quick_connect.error"), t("home.settings.quick_connect.invalid_code")); } } catch (e) { errorHapticFeedback(); Alert.alert(t("home.settings.quick_connect.error"), t("home.settings.quick_connect.invalid_code")); } } }, [api, user, quickConnectCode]); return ( bottomSheetModalRef?.current?.present()} title={t("home.settings.quick_connect.authorize_button")} textColor="blue" /> {t("home.settings.quick_connect.quick_connect_title")} ); };