about summary refs log tree commit diff
path: root/src/view/screens
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/screens')
-rw-r--r--src/view/screens/Home.tsx9
-rw-r--r--src/view/screens/Login.tsx6
-rw-r--r--src/view/screens/Notifications.tsx9
-rw-r--r--src/view/screens/Profile.tsx5
4 files changed, 27 insertions, 2 deletions
diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx
index f48c8cde4..580106850 100644
--- a/src/view/screens/Home.tsx
+++ b/src/view/screens/Home.tsx
@@ -24,6 +24,7 @@ export const Home = observer(function Home({
   )
 
   useEffect(() => {
+    let aborted = false
     if (!visible) {
       return
     }
@@ -33,7 +34,13 @@ export const Home = observer(function Home({
     } else {
       store.nav.setTitle('Home')
       console.log('Fetching home feed')
-      defaultFeedView.setup().then(() => setHasSetup(true))
+      defaultFeedView.setup().then(() => {
+        if (aborted) return
+        setHasSetup(true)
+      })
+    }
+    return () => {
+      aborted = true
     }
   }, [visible, store])
 
diff --git a/src/view/screens/Login.tsx b/src/view/screens/Login.tsx
index 91df7015d..bc40327bd 100644
--- a/src/view/screens/Login.tsx
+++ b/src/view/screens/Login.tsx
@@ -214,21 +214,27 @@ const CreateAccount = ({onPressBack}: {onPressBack: () => void}) => {
   const [username, setUsername] = useState<string>('')
 
   useEffect(() => {
+    let aborted = false
     if (serviceDescription || error) {
       return
     }
     store.session.describeService('http://localhost:2583/').then(
       desc => {
+        if (aborted) return
         setServiceDescription(desc)
         setUserDomain(desc.availableUserDomains[0])
       },
       err => {
+        if (aborted) return
         console.error(err)
         setError(
           'Unable to contact your service. Please check your Internet connection.',
         )
       },
     )
+    return () => {
+      aborted = true
+    }
   }, [])
 
   const onPressNext = async () => {
diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx
index 60627385f..fac39acd2 100644
--- a/src/view/screens/Notifications.tsx
+++ b/src/view/screens/Notifications.tsx
@@ -13,6 +13,7 @@ export const Notifications = ({visible}: ScreenParams) => {
   const store = useStores()
 
   useEffect(() => {
+    let aborted = false
     if (!visible) {
       return
     }
@@ -24,7 +25,13 @@ export const Notifications = ({visible}: ScreenParams) => {
       console.log('Fetching notifications feed')
       const newNotesView = new NotificationsViewModel(store, {})
       setNotesView(newNotesView)
-      newNotesView.setup().then(() => setHasSetup(true))
+      newNotesView.setup().then(() => {
+        if (aborted) return
+        setHasSetup(true)
+      })
+    }
+    return () => {
+      aborted = true
     }
   }, [visible, store])
 
diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx
index 9fe094af1..f5f4f553e 100644
--- a/src/view/screens/Profile.tsx
+++ b/src/view/screens/Profile.tsx
@@ -23,6 +23,7 @@ export const Profile = observer(({visible, params}: ScreenParams) => {
   >()
 
   useEffect(() => {
+    let aborted = false
     if (!visible) {
       return
     }
@@ -36,9 +37,13 @@ export const Profile = observer(({visible, params}: ScreenParams) => {
       const newProfileUiState = new ProfileUiModel(store, {user})
       setProfileUiState(newProfileUiState)
       newProfileUiState.setup().then(() => {
+        if (aborted) return
         setHasSetup(true)
       })
     }
+    return () => {
+      aborted = true
+    }
   }, [visible, params.name, store])
 
   // events