diff --git a/.github/workflows/notification.yaml b/.github/workflows/notification.yaml new file mode 100644 index 00000000..00cab601 --- /dev/null +++ b/.github/workflows/notification.yaml @@ -0,0 +1,18 @@ +name: Discord Pull Request Notification + +on: + pull_request: + types: [opened, reopened] + +jobs: + notify: + runs-on: ubuntu-latest + steps: + - uses: joelwmale/webhook-action@master + with: + url: ${{ secrets.DISCORD_WEBHOOK_URL }} + body: | + { + "content": "New Pull Request: ${{ github.event.pull_request.title }}\nBy: ${{ github.event.pull_request.user.login }}\n\n${{ github.event.pull_request.html_url }}", + "avatar_url": "https://avatars.githubusercontent.com/u/193271640" + } diff --git a/app/(auth)/(tabs)/(favorites)/_layout.tsx b/app/(auth)/(tabs)/(favorites)/_layout.tsx new file mode 100644 index 00000000..f96cd516 --- /dev/null +++ b/app/(auth)/(tabs)/(favorites)/_layout.tsx @@ -0,0 +1,24 @@ +import { nestedTabPageScreenOptions } from "@/components/stacks/NestedTabPageStack"; +import { Stack } from "expo-router"; +import { Platform } from "react-native"; + +export default function SearchLayout() { + return ( + + + {Object.entries(nestedTabPageScreenOptions).map(([name, options]) => ( + + ))} + + ); +} diff --git a/app/(auth)/(tabs)/(favorites)/index.tsx b/app/(auth)/(tabs)/(favorites)/index.tsx new file mode 100644 index 00000000..afeb27a7 --- /dev/null +++ b/app/(auth)/(tabs)/(favorites)/index.tsx @@ -0,0 +1,36 @@ +import { Favorites } from "@/components/home/Favorites"; +import { useInvalidatePlaybackProgressCache } from "@/hooks/useRevalidatePlaybackProgressCache"; +import React, { useCallback, useState } from "react"; +import { RefreshControl, ScrollView, View } from "react-native"; +import { useSafeAreaInsets } from "react-native-safe-area-context"; + +export default function favorites() { + const invalidateCache = useInvalidatePlaybackProgressCache(); + + const [loading, setLoading] = useState(false); + const refetch = useCallback(async () => { + setLoading(true); + await invalidateCache(); + setLoading(false); + }, []); + const insets = useSafeAreaInsets(); + + return ( + + } + contentContainerStyle={{ + paddingLeft: insets.left, + paddingRight: insets.right, + paddingBottom: 16, + }} + > + + + + + ); +} diff --git a/app/(auth)/(tabs)/(home)/_layout.tsx b/app/(auth)/(tabs)/(home)/_layout.tsx index c9b47bc4..c36a3347 100644 --- a/app/(auth)/(tabs)/(home)/_layout.tsx +++ b/app/(auth)/(tabs)/(home)/_layout.tsx @@ -1,6 +1,6 @@ import { Chromecast } from "@/components/Chromecast"; import { nestedTabPageScreenOptions } from "@/components/stacks/NestedTabPageStack"; -import { Feather } from "@expo/vector-icons"; +import { Feather, Ionicons } from "@expo/vector-icons"; import { Stack, useRouter } from "expo-router"; import { Platform, TouchableOpacity, View } from "react-native"; import { useTranslation } from "react-i18next"; diff --git a/app/(auth)/(tabs)/(home)/index.tsx b/app/(auth)/(tabs)/(home)/index.tsx index 262cc249..f8403a38 100644 --- a/app/(auth)/(tabs)/(home)/index.tsx +++ b/app/(auth)/(tabs)/(home)/index.tsx @@ -110,9 +110,9 @@ export default function index() { setIsConnected(state.isConnected); }); - cleanCacheDirectory() - .then(r => console.log("Cache directory cleaned")) - .catch(e => console.error("Something went wrong cleaning cache directory")) + cleanCacheDirectory().catch((e) => + console.error("Something went wrong cleaning cache directory") + ); return () => { unsubscribe(); }; diff --git a/app/(auth)/(tabs)/(home,libraries,search)/actors/[actorId].tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/actors/[actorId].tsx similarity index 100% rename from app/(auth)/(tabs)/(home,libraries,search)/actors/[actorId].tsx rename to app/(auth)/(tabs)/(home,libraries,search,favorites)/actors/[actorId].tsx diff --git a/app/(auth)/(tabs)/(home,libraries,search)/albums/[albumId].tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/albums/[albumId].tsx similarity index 100% rename from app/(auth)/(tabs)/(home,libraries,search)/albums/[albumId].tsx rename to app/(auth)/(tabs)/(home,libraries,search,favorites)/albums/[albumId].tsx diff --git a/app/(auth)/(tabs)/(home,libraries,search)/artists/[artistId].tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/artists/[artistId].tsx similarity index 100% rename from app/(auth)/(tabs)/(home,libraries,search)/artists/[artistId].tsx rename to app/(auth)/(tabs)/(home,libraries,search,favorites)/artists/[artistId].tsx diff --git a/app/(auth)/(tabs)/(home,libraries,search)/artists/index.tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/artists/index.tsx similarity index 100% rename from app/(auth)/(tabs)/(home,libraries,search)/artists/index.tsx rename to app/(auth)/(tabs)/(home,libraries,search,favorites)/artists/index.tsx diff --git a/app/(auth)/(tabs)/(home,libraries,search)/collections/[collectionId].tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/collections/[collectionId].tsx similarity index 100% rename from app/(auth)/(tabs)/(home,libraries,search)/collections/[collectionId].tsx rename to app/(auth)/(tabs)/(home,libraries,search,favorites)/collections/[collectionId].tsx diff --git a/app/(auth)/(tabs)/(home,libraries,search)/items/page.tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/items/page.tsx similarity index 100% rename from app/(auth)/(tabs)/(home,libraries,search)/items/page.tsx rename to app/(auth)/(tabs)/(home,libraries,search,favorites)/items/page.tsx diff --git a/app/(auth)/(tabs)/(home,libraries,search)/jellyseerr/page.tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/page.tsx similarity index 92% rename from app/(auth)/(tabs)/(home,libraries,search)/jellyseerr/page.tsx rename to app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/page.tsx index edf91697..0be85e92 100644 --- a/app/(auth)/(tabs)/(home,libraries,search)/jellyseerr/page.tsx +++ b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/page.tsx @@ -4,7 +4,7 @@ import { MovieResult, TvResult } from "@/utils/jellyseerr/server/models/Search"; import { Text } from "@/components/common/Text"; import { ParallaxScrollView } from "@/components/ParallaxPage"; import { Image } from "expo-image"; -import { TouchableOpacity, View } from "react-native"; +import { TouchableOpacity, View} from "react-native"; import { Ionicons } from "@expo/vector-icons"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import { OverviewText } from "@/components/OverviewText"; @@ -16,7 +16,7 @@ import { Button } from "@/components/Button"; import { BottomSheetBackdrop, BottomSheetBackdropProps, - BottomSheetModal, + BottomSheetModal, BottomSheetTextInput, BottomSheetView, } from "@gorhom/bottom-sheet"; import { @@ -24,7 +24,6 @@ import { IssueTypeName, } from "@/utils/jellyseerr/server/constants/issue"; import * as DropdownMenu from "zeego/dropdown-menu"; -import { Input } from "@/components/common/Input"; import { TvDetails } from "@/utils/jellyseerr/server/models/Tv"; import JellyseerrSeasons from "@/components/series/JellyseerrSeasons"; import { JellyserrRatings } from "@/components/Ratings"; @@ -274,17 +273,22 @@ const Page: React.FC = () => { - + + +