From 8d2a0378ca48733cabe6e8a344ec616db7e3bba5 Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Tue, 20 Aug 2024 22:39:36 +0200 Subject: [PATCH] fix: correct sf collection use --- app.json | 4 +-- app/(auth)/(tabs)/home/index.tsx | 22 ++++-------- components/home/LargeMovieCarousel.tsx | 47 +++++++++++++------------- components/settings/SettingToggles.tsx | 9 ++--- eas.json | 4 +-- providers/JellyfinProvider.tsx | 2 +- 6 files changed, 38 insertions(+), 50 deletions(-) diff --git a/app.json b/app.json index 4c2ad7a2..39e39dfb 100644 --- a/app.json +++ b/app.json @@ -2,7 +2,7 @@ "expo": { "name": "Streamyfin", "slug": "streamyfin", - "version": "0.6.2", + "version": "0.7.0", "orientation": "default", "icon": "./assets/images/icon.png", "scheme": "streamyfin", @@ -30,7 +30,7 @@ }, "android": { "jsEngine": "hermes", - "versionCode": 17, + "versionCode": 19, "adaptiveIcon": { "foregroundImage": "./assets/images/icon.png" }, diff --git a/app/(auth)/(tabs)/home/index.tsx b/app/(auth)/(tabs)/home/index.tsx index ccca5777..3520181e 100644 --- a/app/(auth)/(tabs)/home/index.tsx +++ b/app/(auth)/(tabs)/home/index.tsx @@ -171,30 +171,19 @@ export default function index() { }); const { data: mediaListCollections } = useQuery({ - queryKey: [ - "mediaListCollections-home", - user?.Id, - settings?.mediaListCollectionIds, - ], + queryKey: ["sf_promoted", user?.Id, settings?.usePopularPlugin], queryFn: async () => { if (!api || !user?.Id) return []; const response = await getItemsApi(api).getItems({ userId: user.Id, - tags: ["medialist", "promoted"], + tags: ["sf_promoted"], recursive: true, fields: ["Tags"], includeItemTypes: ["BoxSet"], }); - const ids = - response.data.Items?.filter( - (c) => - c.Name !== "cf_carousel" && - settings?.mediaListCollectionIds?.includes(c.Id!) - ) ?? []; - - return ids; + return response.data.Items || []; }, enabled: !!api && !!user?.Id && settings?.usePopularPlugin === true, staleTime: 0, @@ -208,7 +197,10 @@ export default function index() { await queryClient.refetchQueries({ queryKey: ["recentlyAddedInTVShows"] }); await queryClient.refetchQueries({ queryKey: ["suggestions"] }); await queryClient.refetchQueries({ - queryKey: ["mediaListCollections-home"], + queryKey: ["sf_promoted"], + }); + await queryClient.refetchQueries({ + queryKey: ["sf_carousel"], }); setLoading(false); }, [queryClient, user?.Id]); diff --git a/components/home/LargeMovieCarousel.tsx b/components/home/LargeMovieCarousel.tsx index 70d64814..3fa534f4 100644 --- a/components/home/LargeMovieCarousel.tsx +++ b/components/home/LargeMovieCarousel.tsx @@ -31,6 +31,25 @@ export const LargeMovieCarousel: React.FC = ({ ...props }) => { const [api] = useAtom(apiAtom); const [user] = useAtom(userAtom); + const { data: sf_carousel, isFetching: l1 } = useQuery({ + queryKey: ["sf_carousel", user?.Id, settings?.mediaListCollectionIds], + queryFn: async () => { + if (!api || !user?.Id) return null; + + const response = await getItemsApi(api).getItems({ + userId: user.Id, + tags: ["sf_carousel"], + recursive: true, + fields: ["Tags"], + includeItemTypes: ["BoxSet"], + }); + + return response.data.Items?.[0].Id || null; + }, + enabled: !!api && !!user?.Id && settings?.usePopularPlugin === true, + staleTime: 0, + }); + const onPressPagination = (index: number) => { ref.current?.scrollTo({ /** @@ -42,40 +61,20 @@ export const LargeMovieCarousel: React.FC = ({ ...props }) => { }); }; - const { data: mediaListCollection, isLoading: l1 } = useQuery({ - queryKey: ["mediaListCollection", user?.Id], - queryFn: async () => { - if (!api || !user?.Id) return null; - - const response = await getItemsApi(api).getItems({ - userId: user.Id, - tags: ["medialist", "promoted"], - recursive: true, - fields: ["Tags"], - includeItemTypes: ["BoxSet"], - }); - - const id = response.data.Items?.find((c) => c.Name === "sf_carousel")?.Id; - return id || null; - }, - enabled: !!api && !!user?.Id && settings?.usePopularPlugin === true, - staleTime: 0, - }); - - const { data: popularItems, isLoading: l2 } = useQuery({ + const { data: popularItems, isFetching: l2 } = useQuery({ queryKey: ["popular", user?.Id], queryFn: async () => { - if (!api || !user?.Id || !mediaListCollection) return []; + if (!api || !user?.Id || !sf_carousel) return []; const response = await getItemsApi(api).getItems({ userId: user.Id, - parentId: mediaListCollection, + parentId: sf_carousel, limit: 10, }); return response.data.Items || []; }, - enabled: !!api && !!user?.Id && !!mediaListCollection, + enabled: !!api && !!user?.Id && !!sf_carousel, staleTime: 0, }); diff --git a/components/settings/SettingToggles.tsx b/components/settings/SettingToggles.tsx index 05508818..70819507 100644 --- a/components/settings/SettingToggles.tsx +++ b/components/settings/SettingToggles.tsx @@ -25,22 +25,19 @@ export const SettingToggles: React.FC = () => { data: mediaListCollections, isLoading: isLoadingMediaListCollections, } = useQuery({ - queryKey: ["mediaListCollections", user?.Id], + queryKey: ["sf_promoted", user?.Id, settings?.usePopularPlugin], queryFn: async () => { if (!api || !user?.Id) return []; const response = await getItemsApi(api).getItems({ userId: user.Id, - tags: ["medialist", "promoted"], + tags: ["sf_promoted"], recursive: true, fields: ["Tags"], includeItemTypes: ["BoxSet"], }); - const ids = - response.data.Items?.filter((c) => c.Name !== "sf_carousel") ?? []; - - return ids; + return response.data.Items ?? []; }, enabled: !!api && !!user?.Id && settings?.usePopularPlugin === true, staleTime: 0, diff --git a/eas.json b/eas.json index b4b9f594..a9dd1097 100644 --- a/eas.json +++ b/eas.json @@ -21,13 +21,13 @@ } }, "production": { - "channel": "0.6.2", + "channel": "0.7.0", "android": { "image": "latest" } }, "production-apk": { - "channel": "0.6.2", + "channel": "0.7.0", "android": { "buildType": "apk", "image": "latest" diff --git a/providers/JellyfinProvider.tsx b/providers/JellyfinProvider.tsx index 3a749d03..58427ba5 100644 --- a/providers/JellyfinProvider.tsx +++ b/providers/JellyfinProvider.tsx @@ -63,7 +63,7 @@ export const JellyfinProvider: React.FC<{ children: ReactNode }> = ({ setJellyfin( () => new Jellyfin({ - clientInfo: { name: "Streamyfin", version: "0.6.2" }, + clientInfo: { name: "Streamyfin", version: "0.7.0" }, deviceInfo: { name: Platform.OS === "ios" ? "iOS" : "Android", id }, }) );