about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/hooks/useOTAUpdate.ts56
-rw-r--r--src/view/com/pager/PagerWithHeader.tsx7
-rw-r--r--src/view/com/util/Views.web.tsx3
-rw-r--r--src/view/screens/LanguageSettings.tsx36
-rw-r--r--src/view/screens/Search/Search.tsx2
5 files changed, 26 insertions, 78 deletions
diff --git a/src/lib/hooks/useOTAUpdate.ts b/src/lib/hooks/useOTAUpdate.ts
deleted file mode 100644
index d35179256..000000000
--- a/src/lib/hooks/useOTAUpdate.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import * as Updates from 'expo-updates'
-import {useCallback, useEffect} from 'react'
-import {AppState} from 'react-native'
-import {logger} from '#/logger'
-
-export function useOTAUpdate() {
-  // HELPER FUNCTIONS
-  const checkForUpdate = useCallback(async () => {
-    logger.debug('useOTAUpdate: Checking for update...')
-    try {
-      // Check if new OTA update is available
-      const update = await Updates.checkForUpdateAsync()
-      // If updates aren't available stop the function execution
-      if (!update.isAvailable) {
-        return
-      }
-      // Otherwise fetch the update in the background, so even if the user rejects switching to latest version it will be done automatically on next relaunch.
-      await Updates.fetchUpdateAsync()
-    } catch (e) {
-      logger.error('useOTAUpdate: Error while checking for update', {
-        message: e,
-      })
-    }
-  }, [])
-  const updateEventListener = useCallback((event: Updates.UpdateEvent) => {
-    logger.debug('useOTAUpdate: Listening for update...')
-    if (event.type === Updates.UpdateEventType.ERROR) {
-      logger.error('useOTAUpdate: Error while listening for update', {
-        message: event.message,
-      })
-    } else if (event.type === Updates.UpdateEventType.NO_UPDATE_AVAILABLE) {
-      // Handle no update available
-      // do nothing
-    } else if (event.type === Updates.UpdateEventType.UPDATE_AVAILABLE) {
-      // Handle update available
-      // open modal, ask for user confirmation, and reload the app
-    }
-  }, [])
-
-  useEffect(() => {
-    // ADD EVENT LISTENERS
-    const updateEventSubscription = Updates.addListener(updateEventListener)
-    const appStateSubscription = AppState.addEventListener('change', state => {
-      if (state === 'active' && !__DEV__) {
-        checkForUpdate()
-      }
-    })
-
-    // REMOVE EVENT LISTENERS (CLEANUP)
-    return () => {
-      updateEventSubscription.remove()
-      appStateSubscription.remove()
-    }
-  }, []) // eslint-disable-line react-hooks/exhaustive-deps
-  // disable exhaustive deps because we don't want to run this effect again
-}
diff --git a/src/view/com/pager/PagerWithHeader.tsx b/src/view/com/pager/PagerWithHeader.tsx
index 2d604d104..61e2a4096 100644
--- a/src/view/com/pager/PagerWithHeader.tsx
+++ b/src/view/com/pager/PagerWithHeader.tsx
@@ -109,7 +109,7 @@ export const PagerWithHeader = React.forwardRef<PagerRef, PagerWithHeaderProps>(
       ],
     )
 
-    const scrollRefs = useSharedValue<AnimatedRef<any>[]>([])
+    const scrollRefs = useSharedValue<Array<AnimatedRef<any> | null>>([])
     const registerRef = React.useCallback(
       (scrollRef: AnimatedRef<any> | null, atIndex: number) => {
         scrollRefs.modify(refs => {
@@ -130,8 +130,9 @@ export const PagerWithHeader = React.forwardRef<PagerRef, PagerWithHeaderProps>(
         lastForcedScrollY.value = forcedScrollY
         const refs = scrollRefs.value
         for (let i = 0; i < refs.length; i++) {
-          if (i !== currentPage && refs[i] != null) {
-            scrollTo(refs[i], 0, forcedScrollY, false)
+          const scollRef = refs[i]
+          if (i !== currentPage && scollRef != null) {
+            scrollTo(scollRef, 0, forcedScrollY, false)
           }
         }
       }
diff --git a/src/view/com/util/Views.web.tsx b/src/view/com/util/Views.web.tsx
index 04891806c..792ace140 100644
--- a/src/view/com/util/Views.web.tsx
+++ b/src/view/com/util/Views.web.tsx
@@ -14,6 +14,7 @@
 
 import React from 'react'
 import {
+  FlatList,
   FlatListProps,
   ScrollViewProps,
   StyleSheet,
@@ -67,7 +68,7 @@ export const FlatList_INTERNAL = React.forwardRef(function FlatListImpl<ItemT>(
     desktopFixedHeight,
     ...props
   }: React.PropsWithChildren<FlatListProps<ItemT> & AddedProps>,
-  ref: React.Ref<Animated.FlatList<ItemT>>,
+  ref: React.Ref<FlatList<ItemT>>,
 ) {
   const pal = usePalette('default')
   const {isMobile} = useWebMediaQueries()
diff --git a/src/view/screens/LanguageSettings.tsx b/src/view/screens/LanguageSettings.tsx
index b86cd46e1..390d2807b 100644
--- a/src/view/screens/LanguageSettings.tsx
+++ b/src/view/screens/LanguageSettings.tsx
@@ -1,27 +1,28 @@
 import React from 'react'
 import {StyleSheet, View} from 'react-native'
-import {Text} from '../com/util/text/Text'
-import {s} from 'lib/styles'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
-import {CommonNavigatorParams, NativeStackScreenProps} from 'lib/routes/types'
-import {ViewHeader} from 'view/com/util/ViewHeader'
-import {CenteredView} from 'view/com/util/Views'
-import {Button} from 'view/com/util/forms/Button'
+import RNPickerSelect, {PickerSelectProps} from 'react-native-picker-select'
 import {
   FontAwesomeIcon,
   FontAwesomeIconStyle,
 } from '@fortawesome/react-native-fontawesome'
-import {useAnalytics} from 'lib/analytics/analytics'
+import {msg, Trans} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
 import {useFocusEffect} from '@react-navigation/native'
-import {APP_LANGUAGES, LANGUAGES} from 'lib/../locale/languages'
-import RNPickerSelect, {PickerSelectProps} from 'react-native-picker-select'
-import {useSetMinimalShellMode} from '#/state/shell'
+
+import {sanitizeAppLanguageSetting} from '#/locale/helpers'
 import {useModalControls} from '#/state/modals'
 import {useLanguagePrefs, useLanguagePrefsApi} from '#/state/preferences'
-import {Trans, msg} from '@lingui/macro'
-import {useLingui} from '@lingui/react'
-import {sanitizeAppLanguageSetting} from '#/locale/helpers'
+import {useSetMinimalShellMode} from '#/state/shell'
+import {APP_LANGUAGES, LANGUAGES} from 'lib/../locale/languages'
+import {useAnalytics} from 'lib/analytics/analytics'
+import {usePalette} from 'lib/hooks/usePalette'
+import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
+import {CommonNavigatorParams, NativeStackScreenProps} from 'lib/routes/types'
+import {s} from 'lib/styles'
+import {Button} from 'view/com/util/forms/Button'
+import {ViewHeader} from 'view/com/util/ViewHeader'
+import {CenteredView} from 'view/com/util/Views'
+import {Text} from '../com/util/text/Text'
 
 type Props = NativeStackScreenProps<CommonNavigatorParams, 'LanguageSettings'>
 
@@ -132,9 +133,10 @@ export function LanguageSettingsScreen(_props: Props) {
                   paddingVertical: 8,
                   borderRadius: 24,
                 },
+
                 inputWeb: {
-                  // @ts-ignore web only
                   cursor: 'pointer',
+                  // @ts-ignore web only
                   '-moz-appearance': 'none',
                   '-webkit-appearance': 'none',
                   appearance: 'none',
@@ -224,8 +226,8 @@ export function LanguageSettingsScreen(_props: Props) {
                   borderRadius: 24,
                 },
                 inputWeb: {
-                  // @ts-ignore web only
                   cursor: 'pointer',
+                  // @ts-ignore web only
                   '-moz-appearance': 'none',
                   '-webkit-appearance': 'none',
                   appearance: 'none',
diff --git a/src/view/screens/Search/Search.tsx b/src/view/screens/Search/Search.tsx
index 9dd1c397f..b6680176b 100644
--- a/src/view/screens/Search/Search.tsx
+++ b/src/view/screens/Search/Search.tsx
@@ -739,8 +739,8 @@ let SearchInputBox = ({
       style={[
         {backgroundColor: pal.colors.backgroundLight},
         styles.headerSearchContainer,
+        // @ts-expect-error web only
         isWeb && {
-          // @ts-ignore web only
           cursor: 'default',
         },
       ]}