import React from 'react' import { ActivityIndicator, Linking, StyleSheet, TouchableOpacity, } from 'react-native' import {observer} from 'mobx-react-lite' import {useStores} from 'state/index' import {CenteredView} from '../util/Views' import {LoggedOut} from './LoggedOut' import {Onboarding} from './Onboarding' import {Text} from '../util/text/Text' import {usePalette} from 'lib/hooks/usePalette' import {STATUS_PAGE_URL} from 'lib/constants' export const withAuthRequired =

( Component: React.ComponentType

, ): React.FC

=> observer(function AuthRequired(props: P) { const store = useStores() if (store.session.isResumingSession) { return } if (!store.session.hasSession) { return } if (store.onboarding.isActive) { return } return }) function Loading() { const pal = usePalette('default') const [isTakingTooLong, setIsTakingTooLong] = React.useState(false) React.useEffect(() => { const t = setTimeout(() => setIsTakingTooLong(true), 15e3) // 15 seconds return () => clearTimeout(t) }, [setIsTakingTooLong]) return ( {isTakingTooLong ? "This is taking too long. There may be a problem with your internet or with the service, but we're going to try a couple more times..." : 'Connecting...'} {isTakingTooLong ? ( { Linking.openURL(STATUS_PAGE_URL) }} accessibilityRole="button"> Check Bluesky status page ) : null} ) } const styles = StyleSheet.create({ loading: { height: '100%', alignContent: 'center', justifyContent: 'center', paddingBottom: 100, }, loadingText: { paddingVertical: 20, paddingHorizontal: 20, textAlign: 'center', }, })