import React, { useState, useEffect } from "react"; import { View, Linking, Text, TouchableOpacity, BackHandler, Platform, } from "react-native"; import AutoHeightImage from "react-native-auto-height-image"; import { FontAwesome, Foundation, Ionicons } from "@expo/vector-icons"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import ActionSheet, { SheetManager } from "react-native-actions-sheet"; import Sign from "../../components/駅名表/Sign"; import { TicketBox } from "../atom/TicketBox"; import { widthPercentageToDP as wp } from "react-native-responsive-screen"; import { getPDFViewURL } from "../../lib/getPdfViewURL"; import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; import { AS } from "../../storageControl"; import { StationMapButton } from "./StationDeteilView/StationMapButton"; import { TrainBusButton } from "./StationDeteilView/TrainBusButton"; import { 駅構内図 } from "./StationDeteilView/StationInsideMapButton"; import { WebSiteButton } from "./StationDeteilView/WebSiteButton"; import { StationTimeTableButton } from "./StationDeteilView/StationTimeTableButton"; export const StationDeteilView = (props) => { if (!props.payload) return <>; const { currentStation, navigate, onExit, goTo, useShow } = props.payload; const { busAndTrainData } = useBusAndTrainData(); const [trainBus, setTrainBus] = useState(); useEffect(() => { if (!currentStation) return () => {}; const data = busAndTrainData.filter((d) => d.name === currentStation[0].Station_JP ); if (data.length == 0) { setTrainBus(); } setTrainBus(data[0]); }, [currentStation]); const [usePDFView, setUsePDFView] = useState(undefined); useEffect(() => { AS.getItem("usePDFView").then(setUsePDFView); }, []); const info = currentStation && (currentStation[0].StationTimeTable.match(".pdf") ? getPDFViewURL(currentStation[0].StationTimeTable) : currentStation[0].StationTimeTable); const insets = useSafeAreaInsets(); return ( } isModal={Platform.OS == "ios"} containerStyle={ Platform.OS == "android" ? { paddingBottom: insets.bottom, } : {} } useBottomSafeAreaPadding={Platform.OS == "android"} > {currentStation && ( { usePDFView == "true" ? Linking.openURL(currentStation[0].StationTimeTable) : navigate("howto", { info, goTo, useShow, }); onExit(); }} oLP={() => Linking.openURL(currentStation[0].StationTimeTable)} /> )} {currentStation && currentStation[0].JrHpUrl && currentStation[0].StationNumber != "M12" && ( <駅構内図 //児島例外/ navigate={navigate} goTo={goTo} useShow={useShow} address={currentStation[0].JrHpUrl} onExit={onExit} /> )} {currentStation && ( {!currentStation[0].JrHpUrl || ( )} {!currentStation[0].StationTimeTable || ( )} {!currentStation[0].StationMap || ( )} {!trainBus || ( { navigate("howto", { info: trainBus.address, goTo, useShow, }); onExit(); }} /> )} )} ); }; const Handler = () => { useEffect(() => { const backAction = () => { SheetManager.hide("StationDetailView"); return true; }; const backHandler = BackHandler.addEventListener( "hardwareBackPress", backAction ); return () => backHandler.remove(); }, []); return <>; };