diff --git a/app/index.tsx b/app/index.tsx
index 749267b..7076673 100644
--- a/app/index.tsx
+++ b/app/index.tsx
@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react';
+import React, { useEffect, useState } from 'react';
import { Redirect, useRouter } from 'expo-router';
import { useTranslation } from 'react-i18next';
@@ -16,6 +16,8 @@ export default function OnboardStartScreen() {
const { token, isLoading } = useToken();
const { t, i18n } = useTranslation();
const router = useRouter();
+ const [ isConnected, setIsConnected ] = useState( false );
+
const fetchData = async () => {
const response = await Request.post( 'sessions/get', { token: token } );
@@ -34,10 +36,14 @@ export default function OnboardStartScreen() {
};
useEffect( () => {
- if (!isLoading && token) {
+ if (!isLoading && token && isConnected) {
fetchData();
}
- }, [ isLoading, token, router ] );
+ }, [ isLoading, token, isConnected, router ] );
+
+ const handleConnectionChange = () => {
+ setIsConnected( true );
+ };
if (!isLoading && !token) {
return ;
@@ -45,7 +51,7 @@ export default function OnboardStartScreen() {
return (
-
+
)
diff --git a/src/components/NoInternet.tsx b/src/components/NoInternet.tsx
index 1500b91..8320c06 100644
--- a/src/components/NoInternet.tsx
+++ b/src/components/NoInternet.tsx
@@ -11,39 +11,39 @@ import { useTranslation } from 'react-i18next';
const { width, height } = Dimensions.get( 'window' );
interface NoInternetConnectionScreenProps {
- onReconnect?: () => void;
+ connected?: () => void;
}
-const NoInternetConnectionScreen: React.FC = ({ onReconnect }) => {
+const NoInternetConnectionScreen: React.FC = ({ connected }) => {
const colorScheme = useColorScheme() ?? 'light';
const [ isConnected, setIsConnected ] = useState( null );
const { t } = useTranslation();
- useEffect( () => {
- const unsubscribe = NetInfo.addEventListener( state => {
- setIsConnected( state.isConnected );
+ useEffect(() => {
+ // Listener for when connection is back
+ const unsubscribe = NetInfo.addEventListener(state => {
+ setIsConnected(state.isConnected);
+ });
- if (state.isConnected && onReconnect) {
- onReconnect();
- }
- } );
-
- // Check the initial connection status
- NetInfo.fetch().then( state => {
- setIsConnected( state.isConnected );
- } );
+ // Check initial connection state
+ NetInfo.fetch().then(state => {
+ setIsConnected(state.isConnected);
+ });
return () => unsubscribe();
- }, [] );
+ }, []);
+
+ useEffect(() => {
+ // Execute callback when connection is made
+ if (isConnected && connected) {
+ connected();
+ }
+ }, [isConnected, isConnected]);
const retryConnection = () => {
- NetInfo.fetch().then( state => {
- setIsConnected( state.isConnected );
-
- if (state.isConnected && onReconnect) {
- onReconnect();
- }
- } );
+ NetInfo.fetch().then(state => {
+ setIsConnected(state.isConnected);
+ });
};
if (isConnected !== false) {