diff --git a/apps/expo/modules/check-ios-certificate/android/src/main/java/expo/modules/checkioscertificate/CheckIosCertificateModule.kt b/apps/expo/modules/check-ios-certificate/android/src/main/java/expo/modules/checkioscertificate/CheckIosCertificateModule.kt index abc55e9..ce0c3d3 100644 --- a/apps/expo/modules/check-ios-certificate/android/src/main/java/expo/modules/checkioscertificate/CheckIosCertificateModule.kt +++ b/apps/expo/modules/check-ios-certificate/android/src/main/java/expo/modules/checkioscertificate/CheckIosCertificateModule.kt @@ -12,10 +12,5 @@ class CheckIosCertificateModule : Module() { // Can be inferred from module's class name, but it's recommended to set it explicitly for clarity. // The module will be accessible from `requireNativeModule('CheckIosCertificate')` in JavaScript. Name("CheckIosCertificate") - - // Defines a JavaScript synchronous function that runs the native code on the JavaScript thread. - Function("hello") { - return null - } } } diff --git a/apps/expo/src/app/(tabs)/downloads.tsx b/apps/expo/src/app/(tabs)/downloads.tsx index 35a167f..ab7964d 100644 --- a/apps/expo/src/app/(tabs)/downloads.tsx +++ b/apps/expo/src/app/(tabs)/downloads.tsx @@ -64,8 +64,6 @@ const DownloadsScreen: React.FC = () => { }, }; - console.log(isDevelopmentProvisioningProfile()); - return ( diff --git a/apps/expo/src/app/(tabs)/search.tsx b/apps/expo/src/app/(tabs)/search.tsx index 5d75ae6..6ced355 100644 --- a/apps/expo/src/app/(tabs)/search.tsx +++ b/apps/expo/src/app/(tabs)/search.tsx @@ -150,6 +150,9 @@ async function fetchSearchResults(query: string): Promise { id: result.id.toString(), title: result.media_type === "tv" ? result.name : result.title, posterUrl: getMediaPoster(result.poster_path), + release_date: new Date( + result.media_type === "tv" ? result.first_air_date : result.release_date, + ), year: new Date( result.media_type === "tv" ? result.first_air_date : result.release_date, ).getFullYear(), diff --git a/apps/expo/src/components/item/item.tsx b/apps/expo/src/components/item/item.tsx index 702b1a8..9d26840 100644 --- a/apps/expo/src/components/item/item.tsx +++ b/apps/expo/src/components/item/item.tsx @@ -1,5 +1,6 @@ import type { NativeSyntheticEvent } from "react-native"; import type { ContextMenuOnPressNativeEvent } from "react-native-context-menu-view"; +import { useCallback } from "react"; import { Keyboard, TouchableOpacity } from "react-native"; import ContextMenu from "react-native-context-menu-view"; import { useRouter } from "expo-router"; @@ -14,9 +15,31 @@ export interface ItemData { title: string; type: "movie" | "tv"; year: number; + release_date?: Date; posterUrl: string; } +enum ContextMenuActions { + Bookmark = "Bookmark", + RemoveBookmark = "Remove Bookmark", + Download = "Download", + RemoveWatchHistoryItem = "Remove from Continue Watching", +} + +function checkReleased(media: ItemData): boolean { + const isReleasedYear = Boolean( + media.year && media.year <= new Date().getFullYear(), + ); + const isReleasedDate = Boolean( + media.release_date && media.release_date <= new Date(), + ); + + // If the media has a release date, use that, otherwise use the year + const isReleased = media.release_date ? isReleasedDate : isReleasedYear; + + return isReleased; +} + export default function Item({ data }: { data: ItemData }) { const resetVideo = usePlayerStore((state) => state.resetVideo); const router = useRouter(); @@ -27,7 +50,17 @@ export default function Item({ data }: { data: ItemData }) { const { title, type, year, posterUrl } = data; + const isReleased = useCallback(() => checkReleased(data), [data]); + const handlePress = () => { + if (!isReleased()) { + toastController.show("This media is not released yet", { + burntOptions: { preset: "error" }, + native: true, + duration: 500, + }); + return; + } resetVideo(); Keyboard.dismiss(); router.push({ @@ -36,13 +69,6 @@ export default function Item({ data }: { data: ItemData }) { }); }; - enum ContextMenuActions { - Bookmark = "Bookmark", - RemoveBookmark = "Remove Bookmark", - Download = "Download", - RemoveWatchHistoryItem = "Remove from Continue Watching", - } - const contextMenuActions = [ { title: isBookmarked(data) @@ -112,12 +138,17 @@ export default function Item({ data }: { data: ItemData }) { {title} - + {type === "tv" ? "Show" : "Movie"} - - - {year} + + + {isReleased() ? year : "Unreleased"} diff --git a/apps/expo/src/components/ui/Input.tsx b/apps/expo/src/components/ui/Input.tsx index 7754737..01cc7ae 100644 --- a/apps/expo/src/components/ui/Input.tsx +++ b/apps/expo/src/components/ui/Input.tsx @@ -1,6 +1,8 @@ import { Input, styled } from "tamagui"; export const MWInput = styled(Input, { + fontWeight: "$semibold", + variants: { type: { default: { diff --git a/apps/expo/src/constants/.gitkeep b/apps/expo/src/constants/.gitkeep deleted file mode 100644 index e69de29..0000000