import React, { useEffect, useRef } from "react"; import { View, LayoutAnimation, ScrollView, Linking, Text, TouchableOpacity, Platform, BackHandler, } from "react-native"; import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; import ActionSheet, { SheetManager, useScrollHandlers, } from "react-native-actions-sheet"; import LottieView from "lottie-react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import ViewShot from "react-native-view-shot"; import * as Sharing from "expo-sharing"; import { useTrainDelayData } from "../../stateBox/useTrainDelayData"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; import lineColorList from "../../assets/originData/lineColorList"; import { stationIDPair } from "../../lib/getStationList2"; import { lineListPair } from "../../lib/getStationList"; export const TrainMenuLineSelector = () => { const { getTime, delayData, loadingDelayData, setLoadingDelayData } = useTrainDelayData(); const { selectedLine, setSelectedLine, mapsStationData: stationData, setMapsStationData, } = useTrainMenu(); const actionSheetRef = useRef(null); const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); const insets = useSafeAreaInsets(); const viewShot = useRef(null); const platformIs = Platform.OS == "android"; return ( } ref={actionSheetRef} isModal={Platform.OS == "ios"} containerStyle={platformIs ? { paddingBottom: insets.bottom } : {}} useBottomSafeAreaPadding={platformIs} > {Object.keys(stationData).map((d) => ( { SheetManager.hide("TrainMenuLineSelector"); setSelectedLine(selectedLine == d ? undefined : d); }} > {stationIDPair[d]} {lineListPair[stationIDPair[d]]} ))} ); }; const Handler = () => { useEffect(() => { const backAction = () => { SheetManager.hide("TrainMenuLineSelector"); return true; }; const backHandler = BackHandler.addEventListener( "hardwareBackPress", backAction ); return () => backHandler.remove(); }, []); return <>; };