diff --git a/App.js b/App.js index 93b348b0..186f2d3c 100644 --- a/App.js +++ b/App.js @@ -18,6 +18,7 @@ import { persistor, store } from '@redux/store'; import AppErrorBoundary from '@components/AppErrorBoundary/AppErrorBoundary'; import Main from './src/navigators/Main'; +import { BottomSheetModalProvider } from '@gorhom/bottom-sheet'; Notifications.setNotificationHandler({ handleNotification: async () => { @@ -42,8 +43,10 @@ const App = () => { - -
+ + +
+ diff --git a/src/components/BottomSheet/BottomSheet.tsx b/src/components/BottomSheet/BottomSheet.tsx index 54d2f63b..79bbe993 100644 --- a/src/components/BottomSheet/BottomSheet.tsx +++ b/src/components/BottomSheet/BottomSheet.tsx @@ -1,49 +1,41 @@ -import React, { ReactElement, Ref, useCallback } from 'react'; -import { overlay } from 'react-native-paper'; -import { default as BS, BottomSheetBackdrop } from '@gorhom/bottom-sheet'; +import React, { Ref, useCallback } from 'react'; +import { + BottomSheetBackdrop, + BottomSheetBackdropProps, + BottomSheetModal, + BottomSheetModalProps, +} from '@gorhom/bottom-sheet'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; -import { ThemeColors } from '@theme/types'; -import { StyleSheet } from 'react-native'; -interface BottomSheetProps { - bottomSheetRef: Ref; - snapPoints: Array; - height: number; - theme: ThemeColors; - children: ReactElement; +interface BottomSheetProps extends Omit { + bottomSheetRef: Ref | null; } -const BottomSheet: React.FC = ({ - bottomSheetRef, - snapPoints, - height, - theme, - children, -}) => { +const BottomSheet: React.FC = props => { const { bottom } = useSafeAreaInsets(); + const renderBackdrop = useCallback( - props => , + (backdropProps: BottomSheetBackdropProps) => ( + + ), [], ); + return ( - - {children} - + {props.children} + ); }; -const styles = StyleSheet.create({ - handle: { - display: 'none', - }, -}); + export default BottomSheet; diff --git a/src/screens/BrowseSourceScreen/BrowseSourceScreen.tsx b/src/screens/BrowseSourceScreen/BrowseSourceScreen.tsx index 93c13d41..005c7a21 100644 --- a/src/screens/BrowseSourceScreen/BrowseSourceScreen.tsx +++ b/src/screens/BrowseSourceScreen/BrowseSourceScreen.tsx @@ -1,11 +1,11 @@ import React, { useCallback, useRef } from 'react'; import { useNavigation } from '@react-navigation/native'; -import { FAB, Portal } from 'react-native-paper'; +import { FAB } from 'react-native-paper'; import { Container, ErrorScreenV2, SearchbarV2 } from '@components/index'; import NovelList from '@components/NovelList'; import NovelCover from '@components/NovelCover'; -import Bottomsheet from '@gorhom/bottom-sheet'; +import { BottomSheetModal } from '@gorhom/bottom-sheet'; import FilterBottomSheet from './components/FilterBottomSheet'; import { useCategorySettings, useSearch } from '@hooks'; @@ -104,7 +104,7 @@ const BrowseSourceScreen: React.FC = ({ route }) => { ); const { bottom } = useSafeAreaInsets(); - const filterSheetRef = useRef(null); + const filterSheetRef = useRef(null); return ( = ({ route }) => { label={'Filter'} uppercase={false} color={theme.onPrimary} - onPress={() => filterSheetRef?.current?.expand()} + onPress={() => filterSheetRef?.current?.present()} + /> + - - - ) : null} diff --git a/src/screens/BrowseSourceScreen/components/FilterBottomSheet.tsx b/src/screens/BrowseSourceScreen/components/FilterBottomSheet.tsx index 1bcb1b68..4d52fa8f 100644 --- a/src/screens/BrowseSourceScreen/components/FilterBottomSheet.tsx +++ b/src/screens/BrowseSourceScreen/components/FilterBottomSheet.tsx @@ -2,7 +2,7 @@ import React, { Ref, useState } from 'react'; import { Pressable, StyleSheet, Text, View } from 'react-native'; import BottomSheet from '../../../components/BottomSheet/BottomSheet'; -import BottomSheetType, { BottomSheetView } from '@gorhom/bottom-sheet'; +import { BottomSheetModal, BottomSheetView } from '@gorhom/bottom-sheet'; import { useTheme } from '@hooks/useTheme'; import { @@ -113,7 +113,7 @@ const FilterItem: React.FC = ({ }; interface BottomSheetProps { - filterSheetRef: Ref | null; + filterSheetRef: Ref | null; filtersValues: SourceFilter[] | undefined; setFilters: (filters?: SelectedFilter) => void; clearFilters: () => void; @@ -131,12 +131,7 @@ const FilterBottomSheet: React.FC = ({ >(); return ( - + { const [index, setIndex] = useState(0); - const bottomSheetRef = useRef(null); + const bottomSheetRef = useRef(null); const renderTabBar = ( props: SceneRendererProps & { navigationState: State }, @@ -176,7 +176,7 @@ const LibraryScreen = () => { } : { iconName: 'filter-variant', - onPress: () => bottomSheetRef.current?.expand(), + onPress: () => bottomSheetRef.current?.present(), }, ]} theme={theme} @@ -275,8 +275,8 @@ const LibraryScreen = () => { refetchLibrary(); }} /> + - 0} actions={[ diff --git a/src/screens/library/components/LibraryBottomSheet/LibraryBottomSheet.tsx b/src/screens/library/components/LibraryBottomSheet/LibraryBottomSheet.tsx index 183a628a..317d459d 100644 --- a/src/screens/library/components/LibraryBottomSheet/LibraryBottomSheet.tsx +++ b/src/screens/library/components/LibraryBottomSheet/LibraryBottomSheet.tsx @@ -18,14 +18,11 @@ import { import { FlashList } from '@shopify/flash-list'; import { RadioButton } from '@components/RadioButton/RadioButton'; import { overlay } from 'react-native-paper'; -import { - default as BottomSheetType, - BottomSheetView, -} from '@gorhom/bottom-sheet'; +import { BottomSheetView, BottomSheetModal } from '@gorhom/bottom-sheet'; import BottomSheet from '@components/BottomSheet/BottomSheet'; interface LibraryBottomSheetProps { - bottomSheetRef: Ref | null; + bottomSheetRef: Ref | null; } const FirstRoute = () => { @@ -207,12 +204,7 @@ const LibraryBottomSheet: React.FC = ({ }); return ( - + { theme={theme} dispatch={dispatch} /> - - + + ); diff --git a/src/screens/novel/components/Info/NovelInfoHeader.js b/src/screens/novel/components/Info/NovelInfoHeader.js index 3f1fe6b8..e9cfbb52 100644 --- a/src/screens/novel/components/Info/NovelInfoHeader.js +++ b/src/screens/novel/components/Info/NovelInfoHeader.js @@ -113,7 +113,7 @@ const NovelInfoHeader = ({ deleteDownloadsSnackbar.setTrue(); } }} - handleTrackerSheet={() => trackerSheetRef.current.expand()} + handleTrackerSheet={() => trackerSheetRef.current.present()} theme={theme} /> novelBottomSheetRef.current.expand()} + onPress={() => novelBottomSheetRef.current.present()} android_ripple={{ color: color(theme.primary).alpha(0.12).string(), }} diff --git a/src/screens/novel/components/NovelBottomSheet.js b/src/screens/novel/components/NovelBottomSheet.js index 9375daaa..cb56247a 100644 --- a/src/screens/novel/components/NovelBottomSheet.js +++ b/src/screens/novel/components/NovelBottomSheet.js @@ -165,12 +165,7 @@ const ChaptersSettingsSheet = ({ ); return ( - + { return ( <> - + { position?.percentage || Math.round(minScroll.current) || 0 } /> - - - + {!hidden && ( <> { ); }; interface ReaderBottomSheetV2Props { - bottomSheetRef: Ref | null; + bottomSheetRef: Ref | null; } const ReaderBottomSheetV2: React.FC = ({ @@ -203,12 +200,7 @@ const ReaderBottomSheetV2: React.FC = ({ ); return ( - + diff --git a/src/screens/reader/components/ReaderFooter.js b/src/screens/reader/components/ReaderFooter.js index e070ffb8..af5000a3 100644 --- a/src/screens/reader/components/ReaderFooter.js +++ b/src/screens/reader/components/ReaderFooter.js @@ -89,7 +89,7 @@ const ChapterFooter = ({ readerSheetRef.current.snapToIndex(1)} + onPress={() => readerSheetRef.current.present()} >