diff --git a/ui/club-detail/club-detail-screen.tsx b/ui/club-detail/club-detail-screen.tsx index af39a52..f67de16 100644 --- a/ui/club-detail/club-detail-screen.tsx +++ b/ui/club-detail/club-detail-screen.tsx @@ -1,19 +1,19 @@ -import { MoaImage } from '@/components/moa-image'; -import { MoaText } from '@/components/moa-text'; -import { PermissionDialog } from '@/components/permission-dialog'; -import { USER_EVENT } from '@/constants/eventname'; -import { useMixpanelContext } from '@/contexts'; -import { useSubscribedClubsContext } from '@/contexts/subscribed-clubs-context'; -import { useMixpanelTrack, useWebViewMessageHandler } from '@/hooks'; -import { Ionicons } from '@expo/vector-icons'; -import Constants from 'expo-constants'; -import { useLocalSearchParams, useRouter } from 'expo-router'; -import { StatusBar } from 'expo-status-bar'; -import { useMemo, useState } from 'react'; +import { MoaImage } from "@/components/moa-image"; +import { MoaText } from "@/components/moa-text"; +import { PermissionDialog } from "@/components/permission-dialog"; +import { USER_EVENT } from "@/constants/eventname"; +import { useMixpanelContext } from "@/contexts"; +import { useSubscribedClubsContext } from "@/contexts/subscribed-clubs-context"; +import { useMixpanelTrack, useWebViewMessageHandler } from "@/hooks"; +import { Ionicons } from "@expo/vector-icons"; +import Constants from "expo-constants"; +import { useLocalSearchParams, useRouter } from "expo-router"; +import { StatusBar } from "expo-status-bar"; +import { useMemo, useState } from "react"; import { ActivityIndicator, Platform, Share, TouchableOpacity } from 'react-native'; -import { SafeAreaView } from 'react-native-safe-area-context'; -import { WebView } from 'react-native-webview'; -import styled from 'styled-components/native'; +import { SafeAreaView, useSafeAreaInsets } from "react-native-safe-area-context"; +import { WebView } from "react-native-webview"; +import styled from "styled-components/native"; export default function ClubWebViewScreen() { const router = useRouter(); @@ -24,6 +24,7 @@ export default function ClubWebViewScreen() { const { isSubscribed, toggleSubscribe } = useSubscribedClubsContext(); const { sessionId } = useMixpanelContext(); const trackEvent = useMixpanelTrack(); + const insets = useSafeAreaInsets(); const webviewUrl = process.env.EXPO_PUBLIC_WEBVIEW_URL; @@ -142,6 +143,14 @@ export default function ClubWebViewScreen() { }); }, }); + + const injectJS = ` + (function() { + document.documentElement.style.setProperty('--rn-safe-top', '${insets.top}px'); + document.documentElement.style.setProperty('--rn-safe-bottom', '${insets.bottom}px'); + })(); + true; + `; return ( @@ -174,6 +183,9 @@ export default function ClubWebViewScreen() { onLoadEnd={handleLoadEnd} onError={handleError} onMessage={handleMessage} + injectedJavaScript={injectJS} + contentInsetAdjustmentBehavior="never" + automaticallyAdjustContentInsets={false} startInLoadingState={false} scalesPageToFit={true} showsHorizontalScrollIndicator={false}