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 dayjs from "dayjs"; 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 { BottomButtons } from "./JRSTraInfo/BottomButtons"; export const JRSTraInfo = () => { const { getTime, delayData, loadingDelayData, setLoadingDelayData } = useTrainDelayData(); const timeData = dayjs(getTime).format("HH:mm"); const actionSheetRef = useRef(null); const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); const insets = useSafeAreaInsets(); const viewShot = useRef(null); const onCapture = async () => { const url = await viewShot.current.capture(); const ok = await Sharing.isAvailableAsync(); if (ok) { await Sharing.shareAsync( "file://" + url, (options = { mimeType: "image/jpeg", dialogTitle: "Share this image" }) ); } }; return ( } ref={actionSheetRef} isModal={Platform.OS == "ios"} containerStyle={ Platform.OS == "android" ? { paddingBottom: insets.bottom } : {} } useBottomSafeAreaPadding={Platform.OS == "android"} > 列車遅延速報EX {timeData} { LayoutAnimation.easeInEaseOut(), setLoadingDelayData(true); }} /> {loadingDelayData ? ( ) : delayData ? ( delayData.map((d) => { let data = d.split(" "); return ( {data[0].replace("\n", "")} {data[1]} {data[3]} ); }) ) : ( 現在、5分以上の遅れはありません。 )} 列車遅延情報EXについて 列車遅延情報をJR四国公式列車運行情報より5分毎に取得します。Twitterにて投稿している内容と同一のものとなります。 ); }; const Handler = () => { useEffect(() => { const backAction = () => { SheetManager.hide("JRSTraInfo"); return true; }; const backHandler = BackHandler.addEventListener( "hardwareBackPress", backAction ); return () => backHandler.remove(); }, []); return <>; };