1
0
mirror of https://github.com/tooot-app/app synced 2025-06-05 22:19:13 +02:00

Update typing for new react-redux

This commit is contained in:
Zhiyuan Zheng 2022-04-30 23:47:52 +02:00
parent 546847fd9a
commit dc91f3edeb
20 changed files with 70 additions and 56 deletions

View File

@ -27,8 +27,9 @@ import { addScreenshotListener } from 'expo-screen-capture'
import React, { useCallback, useEffect, useRef, useState } from 'react' import React, { useCallback, useEffect, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { Alert, Platform, StatusBar } from 'react-native' import { Alert, Platform, StatusBar } from 'react-native'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import * as Sentry from 'sentry-expo' import * as Sentry from 'sentry-expo'
import { useAppDispatch } from './store'
const Stack = createNativeStackNavigator<RootStackParamList>() const Stack = createNativeStackNavigator<RootStackParamList>()
@ -38,7 +39,7 @@ export interface Props {
const Screens: React.FC<Props> = ({ localCorrupt }) => { const Screens: React.FC<Props> = ({ localCorrupt }) => {
const { t } = useTranslation('screens') const { t } = useTranslation('screens')
const dispatch = useDispatch() const dispatch = useAppDispatch()
const instanceActive = useSelector(getInstanceActive) const instanceActive = useSelector(getInstanceActive)
const { colors, theme } = useTheme() const { colors, theme } = useTheme()

View File

@ -1,3 +1,4 @@
import { useAppDispatch } from '@root/store'
import { useAccessibility } from '@utils/accessibility/AccessibilityManager' import { useAccessibility } from '@utils/accessibility/AccessibilityManager'
import { countInstanceEmoji } from '@utils/slices/instancesSlice' import { countInstanceEmoji } from '@utils/slices/instancesSlice'
import { StyleConstants } from '@utils/styles/constants' import { StyleConstants } from '@utils/styles/constants'
@ -15,13 +16,12 @@ import {
View View
} from 'react-native' } from 'react-native'
import FastImage from 'react-native-fast-image' import FastImage from 'react-native-fast-image'
import { useDispatch } from 'react-redux'
import validUrl from 'valid-url' import validUrl from 'valid-url'
import EmojisContext from './helpers/EmojisContext' import EmojisContext from './helpers/EmojisContext'
const EmojisList = React.memo( const EmojisList = React.memo(
() => { () => {
const dispatch = useDispatch() const dispatch = useAppDispatch()
const { reduceMotionEnabled } = useAccessibility() const { reduceMotionEnabled } = useAccessibility()
const { t } = useTranslation() const { t } = useTranslation()

View File

@ -1,11 +1,12 @@
import { useNavigation } from '@react-navigation/native' import { useNavigation } from '@react-navigation/native'
import { useAppDispatch } from '@root/store'
import { TabMeStackNavigationProp } from '@utils/navigation/navigators' import { TabMeStackNavigationProp } from '@utils/navigation/navigators'
import addInstance from '@utils/slices/instances/add' import addInstance from '@utils/slices/instances/add'
import { checkInstanceFeature, Instance } from '@utils/slices/instancesSlice' import { checkInstanceFeature, Instance } from '@utils/slices/instancesSlice'
import * as AuthSession from 'expo-auth-session' import * as AuthSession from 'expo-auth-session'
import React, { useEffect } from 'react' import React, { useEffect } from 'react'
import { useQueryClient } from 'react-query' import { useQueryClient } from 'react-query'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
export interface Props { export interface Props {
instanceDomain: string instanceDomain: string
@ -25,7 +26,7 @@ const InstanceAuth = React.memo(
const navigation = const navigation =
useNavigation<TabMeStackNavigationProp<'Tab-Me-Root' | 'Tab-Me-Switch'>>() useNavigation<TabMeStackNavigationProp<'Tab-Me-Root' | 'Tab-Me-Switch'>>()
const queryClient = useQueryClient() const queryClient = useQueryClient()
const dispatch = useDispatch() const dispatch = useAppDispatch()
const deprecateAuthFollow = useSelector( const deprecateAuthFollow = useSelector(
checkInstanceFeature('deprecate_auth_follow') checkInstanceFeature('deprecate_auth_follow')

View File

@ -1,5 +1,6 @@
import ComponentSeparator from '@components/Separator' import ComponentSeparator from '@components/Separator'
import { useScrollToTop } from '@react-navigation/native' import { useScrollToTop } from '@react-navigation/native'
import { useAppDispatch } from '@root/store'
import { QueryKeyTimeline, useTimelineQuery } from '@utils/queryHooks/timeline' import { QueryKeyTimeline, useTimelineQuery } from '@utils/queryHooks/timeline'
import { import {
getInstanceActive, getInstanceActive,
@ -20,7 +21,7 @@ import Animated, {
useAnimatedScrollHandler, useAnimatedScrollHandler,
useSharedValue useSharedValue
} from 'react-native-reanimated' } from 'react-native-reanimated'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import TimelineEmpty from './Timeline/Empty' import TimelineEmpty from './Timeline/Empty'
import TimelineFooter from './Timeline/Footer' import TimelineFooter from './Timeline/Footer'
import TimelineRefresh, { import TimelineRefresh, {
@ -127,7 +128,7 @@ const Timeline: React.FC<Props> = ({
} }
}) })
const dispatch = useDispatch() const dispatch = useAppDispatch()
const viewabilityPairs = useRef<ViewabilityConfigCallbackPairs>([ const viewabilityPairs = useRef<ViewabilityConfigCallbackPairs>([
{ {
viewabilityConfig: { viewabilityConfig: {

View File

@ -11,9 +11,10 @@ import { StyleConstants } from '@utils/styles/constants'
import React, { useMemo } from 'react' import React, { useMemo } from 'react'
import { StyleSheet } from 'react-native' import { StyleSheet } from 'react-native'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import { useQueryClient } from 'react-query' import { useQueryClient } from 'react-query'
import { QueryKeyTimeline } from '@utils/queryHooks/timeline' import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
import { useAppDispatch } from '@root/store'
const ActionsNotificationsFilter: React.FC = () => { const ActionsNotificationsFilter: React.FC = () => {
const navigation = useNavigation() const navigation = useNavigation()
@ -22,7 +23,7 @@ const ActionsNotificationsFilter: React.FC = () => {
const queryKey: QueryKeyTimeline = ['Timeline', { page: 'Notifications' }] const queryKey: QueryKeyTimeline = ['Timeline', { page: 'Notifications' }]
const queryClient = useQueryClient() const queryClient = useQueryClient()
const dispatch = useDispatch() const dispatch = useAppDispatch()
const instanceNotificationsFilter = useSelector( const instanceNotificationsFilter = useSelector(
getInstanceNotificationsFilter getInstanceNotificationsFilter
) )
@ -35,21 +36,23 @@ const ActionsNotificationsFilter: React.FC = () => {
const options = useMemo(() => { const options = useMemo(() => {
return ( return (
instanceNotificationsFilter && instanceNotificationsFilter &&
([ (
'follow', [
'favourite', 'follow',
'reblog', 'favourite',
'mention', 'reblog',
'poll', 'mention',
'follow_request' 'poll',
] as [ 'follow_request'
'follow', ] as [
'favourite', 'follow',
'reblog', 'favourite',
'mention', 'reblog',
'poll', 'mention',
'follow_request' 'poll',
]).map(type => ( 'follow_request'
]
).map(type => (
<MenuRow <MenuRow
key={type} key={type}
title={t(`content.notificationsFilter.content.${type}`)} title={t(`content.notificationsFilter.content.${type}`)}

View File

@ -2,6 +2,7 @@ import analytics from '@components/analytics'
import { HeaderLeft, HeaderRight } from '@components/Header' import { HeaderLeft, HeaderRight } from '@components/Header'
import { createNativeStackNavigator } from '@react-navigation/native-stack' import { createNativeStackNavigator } from '@react-navigation/native-stack'
import haptics from '@root/components/haptics' import haptics from '@root/components/haptics'
import { useAppDispatch } from '@root/store'
import formatText from '@screens/Compose/formatText' import formatText from '@screens/Compose/formatText'
import ComposeRoot from '@screens/Compose/Root' import ComposeRoot from '@screens/Compose/Root'
import { RootStackScreenProps } from '@utils/navigation/navigators' import { RootStackScreenProps } from '@utils/navigation/navigators'
@ -36,7 +37,7 @@ import {
} from 'react-native' } from 'react-native'
import { SafeAreaView } from 'react-native-safe-area-context' import { SafeAreaView } from 'react-native-safe-area-context'
import { useQueryClient } from 'react-query' import { useQueryClient } from 'react-query'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import * as Sentry from 'sentry-expo' import * as Sentry from 'sentry-expo'
import ComposeDraftsList from './Compose/DraftsList' import ComposeDraftsList from './Compose/DraftsList'
import ComposeEditAttachment from './Compose/EditAttachment' import ComposeEditAttachment from './Compose/EditAttachment'
@ -253,7 +254,7 @@ const ScreenCompose: React.FC<RootStackScreenProps<'Screen-Compose'>> = ({
), ),
[composeState] [composeState]
) )
const dispatch = useDispatch() const dispatch = useAppDispatch()
const headerRightDisabled = useMemo(() => { const headerRightDisabled = useMemo(() => {
if (totalTextCount > maxTootChars) { if (totalTextCount > maxTootChars) {
return true return true

View File

@ -3,6 +3,7 @@ import Icon from '@components/Icon'
import ComponentSeparator from '@components/Separator' import ComponentSeparator from '@components/Separator'
import HeaderSharedCreated from '@components/Timeline/Shared/HeaderShared/Created' import HeaderSharedCreated from '@components/Timeline/Shared/HeaderShared/Created'
import { useNavigation } from '@react-navigation/native' import { useNavigation } from '@react-navigation/native'
import { useAppDispatch } from '@root/store'
import { import {
getInstanceDrafts, getInstanceDrafts,
removeInstanceDraft removeInstanceDraft
@ -23,7 +24,7 @@ import {
} from 'react-native' } from 'react-native'
import { PanGestureHandler } from 'react-native-gesture-handler' import { PanGestureHandler } from 'react-native-gesture-handler'
import { SwipeListView } from 'react-native-swipe-list-view' import { SwipeListView } from 'react-native-swipe-list-view'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import formatText from '../formatText' import formatText from '../formatText'
import ComposeContext from '../utils/createContext' import ComposeContext from '../utils/createContext'
import { ComposeStateDraft, ExtendedAttachment } from '../utils/types' import { ComposeStateDraft, ExtendedAttachment } from '../utils/types'
@ -36,7 +37,7 @@ const ComposeDraftsListRoot: React.FC<Props> = ({ timestamp }) => {
const { composeDispatch } = useContext(ComposeContext) const { composeDispatch } = useContext(ComposeContext)
const { t } = useTranslation('screenCompose') const { t } = useTranslation('screenCompose')
const navigation = useNavigation() const navigation = useNavigation()
const dispatch = useDispatch() const dispatch = useAppDispatch()
const { colors, theme } = useTheme() const { colors, theme } = useTheme()
const instanceDrafts = useSelector(getInstanceDrafts)?.filter( const instanceDrafts = useSelector(getInstanceDrafts)?.filter(
draft => draft.timestamp !== timestamp draft => draft.timestamp !== timestamp

View File

@ -1,4 +1,5 @@
import haptics from '@components/haptics' import haptics from '@components/haptics'
import { useAppDispatch } from '@root/store'
import { useAccessibility } from '@utils/accessibility/AccessibilityManager' import { useAccessibility } from '@utils/accessibility/AccessibilityManager'
import { countInstanceEmoji } from '@utils/slices/instancesSlice' import { countInstanceEmoji } from '@utils/slices/instancesSlice'
import { StyleConstants } from '@utils/styles/constants' import { StyleConstants } from '@utils/styles/constants'
@ -15,7 +16,6 @@ import {
View View
} from 'react-native' } from 'react-native'
import FastImage from 'react-native-fast-image' import FastImage from 'react-native-fast-image'
import { useDispatch } from 'react-redux'
import validUrl from 'valid-url' import validUrl from 'valid-url'
import updateText from '../../updateText' import updateText from '../../updateText'
import ComposeContext from '../../utils/createContext' import ComposeContext from '../../utils/createContext'
@ -29,7 +29,7 @@ const ComposeEmojis: React.FC<Props> = ({ accessibleRefEmojis }) => {
const { reduceMotionEnabled } = useAccessibility() const { reduceMotionEnabled } = useAccessibility()
const { colors } = useTheme() const { colors } = useTheme()
const { t } = useTranslation() const { t } = useTranslation()
const dispatch = useDispatch() const dispatch = useAppDispatch()
useEffect(() => { useEffect(() => {
const tagEmojis = findNodeHandle(accessibleRefEmojis.current) const tagEmojis = findNodeHandle(accessibleRefEmojis.current)

View File

@ -5,6 +5,7 @@ import {
BottomTabNavigationOptions, BottomTabNavigationOptions,
createBottomTabNavigator createBottomTabNavigator
} from '@react-navigation/bottom-tabs' } from '@react-navigation/bottom-tabs'
import { useAppDispatch } from '@root/store'
import { import {
RootStackScreenProps, RootStackScreenProps,
ScreenTabsStackParamList ScreenTabsStackParamList
@ -21,7 +22,7 @@ import {
import { useTheme } from '@utils/styles/ThemeManager' import { useTheme } from '@utils/styles/ThemeManager'
import React, { useCallback, useEffect, useMemo } from 'react' import React, { useCallback, useEffect, useMemo } from 'react'
import { Platform } from 'react-native' import { Platform } from 'react-native'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import TabLocal from './Tabs/Local' import TabLocal from './Tabs/Local'
import TabMe from './Tabs/Me' import TabMe from './Tabs/Me'
import TabNotifications from './Tabs/Notifications' import TabNotifications from './Tabs/Notifications'
@ -118,7 +119,7 @@ const ScreenTabs = React.memo(
const previousTab = useSelector(getPreviousTab, () => true) const previousTab = useSelector(getPreviousTab, () => true)
const versionUpdate = useSelector(getVersionUpdate) const versionUpdate = useSelector(getVersionUpdate)
const dispatch = useDispatch() const dispatch = useAppDispatch()
useEffect(() => { useEffect(() => {
dispatch(retriveVersionLatest()) dispatch(retriveVersionLatest())
}, []) }, [])

View File

@ -1,6 +1,7 @@
import analytics from '@components/analytics' import analytics from '@components/analytics'
import { MenuContainer, MenuRow } from '@components/Menu' import { MenuContainer, MenuRow } from '@components/Menu'
import { useActionSheet } from '@expo/react-native-action-sheet' import { useActionSheet } from '@expo/react-native-action-sheet'
import { useAppDispatch } from '@root/store'
import { TabMeProfileStackScreenProps } from '@utils/navigation/navigators' import { TabMeProfileStackScreenProps } from '@utils/navigation/navigators'
import { useProfileMutation, useProfileQuery } from '@utils/queryHooks/profile' import { useProfileMutation, useProfileQuery } from '@utils/queryHooks/profile'
import { updateAccountPreferences } from '@utils/slices/instances/updateAccountPreferences' import { updateAccountPreferences } from '@utils/slices/instances/updateAccountPreferences'
@ -9,7 +10,6 @@ import React, { RefObject, useCallback } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import FlashMessage from 'react-native-flash-message' import FlashMessage from 'react-native-flash-message'
import { ScrollView } from 'react-native-gesture-handler' import { ScrollView } from 'react-native-gesture-handler'
import { useDispatch } from 'react-redux'
import ProfileAvatarHeader from './Root/AvatarHeader' import ProfileAvatarHeader from './Root/AvatarHeader'
const TabMeProfileRoot: React.FC< const TabMeProfileRoot: React.FC<
@ -24,7 +24,7 @@ const TabMeProfileRoot: React.FC<
const { data, isLoading } = useProfileQuery({}) const { data, isLoading } = useProfileQuery({})
const { mutateAsync } = useProfileMutation() const { mutateAsync } = useProfileMutation()
const dispatch = useDispatch() const dispatch = useAppDispatch()
const onPressVisibility = useCallback(() => { const onPressVisibility = useCallback(() => {
showActionSheetWithOptions( showActionSheetWithOptions(

View File

@ -2,6 +2,7 @@ import analytics from '@components/analytics'
import Button from '@components/Button' import Button from '@components/Button'
import Icon from '@components/Icon' import Icon from '@components/Icon'
import { MenuContainer, MenuRow } from '@components/Menu' import { MenuContainer, MenuRow } from '@components/Menu'
import { useAppDispatch } from '@root/store'
import { isDevelopment } from '@utils/checkEnvironment' import { isDevelopment } from '@utils/checkEnvironment'
import { updateInstancePush } from '@utils/slices/instances/updatePush' import { updateInstancePush } from '@utils/slices/instances/updatePush'
import { updateInstancePushAlert } from '@utils/slices/instances/updatePushAlert' import { updateInstancePushAlert } from '@utils/slices/instances/updatePushAlert'
@ -20,7 +21,7 @@ import * as WebBrowser from 'expo-web-browser'
import React, { useState, useEffect, useMemo } from 'react' import React, { useState, useEffect, useMemo } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { AppState, Linking, ScrollView, Text, View } from 'react-native' import { AppState, Linking, ScrollView, Text, View } from 'react-native'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
const TabMePush: React.FC = () => { const TabMePush: React.FC = () => {
const { colors } = useTheme() const { colors } = useTheme()
@ -31,7 +32,7 @@ const TabMePush: React.FC = () => {
) )
const instanceUri = useSelector(getInstanceUri) const instanceUri = useSelector(getInstanceUri)
const dispatch = useDispatch() const dispatch = useAppDispatch()
const instancePush = useSelector(getInstancePush) const instancePush = useSelector(getInstancePush)
const [pushAvailable, setPushAvailable] = useState<boolean | undefined>( const [pushAvailable, setPushAvailable] = useState<boolean | undefined>(

View File

@ -1,5 +1,6 @@
import { MenuContainer, MenuRow } from '@components/Menu' import { MenuContainer, MenuRow } from '@components/Menu'
import { useNavigation } from '@react-navigation/native' import { useNavigation } from '@react-navigation/native'
import { useAppDispatch } from '@root/store'
import { useAnnouncementQuery } from '@utils/queryHooks/announcement' import { useAnnouncementQuery } from '@utils/queryHooks/announcement'
import { useListsQuery } from '@utils/queryHooks/lists' import { useListsQuery } from '@utils/queryHooks/lists'
import { import {
@ -9,13 +10,13 @@ import {
import { getInstancePush } from '@utils/slices/instancesSlice' import { getInstancePush } from '@utils/slices/instancesSlice'
import React, { useEffect } from 'react' import React, { useEffect } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
const Collections: React.FC = () => { const Collections: React.FC = () => {
const { t } = useTranslation('screenTabs') const { t } = useTranslation('screenTabs')
const navigation = useNavigation<any>() const navigation = useNavigation<any>()
const dispatch = useDispatch() const dispatch = useAppDispatch()
const mePage = useSelector(getInstanceMePage) const mePage = useSelector(getInstanceMePage)
const listsQuery = useListsQuery({ const listsQuery = useListsQuery({

View File

@ -1,5 +1,6 @@
import Button from '@components/Button' import Button from '@components/Button'
import haptics from '@root/components/haptics' import haptics from '@root/components/haptics'
import { useAppDispatch } from '@root/store'
import removeInstance from '@utils/slices/instances/remove' import removeInstance from '@utils/slices/instances/remove'
import { getInstance } from '@utils/slices/instancesSlice' import { getInstance } from '@utils/slices/instancesSlice'
import { StyleConstants } from '@utils/styles/constants' import { StyleConstants } from '@utils/styles/constants'
@ -7,11 +8,11 @@ import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { Alert } from 'react-native' import { Alert } from 'react-native'
import { useQueryClient } from 'react-query' import { useQueryClient } from 'react-query'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
const Logout: React.FC = () => { const Logout: React.FC = () => {
const { t } = useTranslation('screenTabs') const { t } = useTranslation('screenTabs')
const dispatch = useDispatch() const dispatch = useAppDispatch()
const queryClient = useQueryClient() const queryClient = useQueryClient()
const instance = useSelector(getInstance) const instance = useSelector(getInstance)

View File

@ -1,4 +1,5 @@
import { MenuContainer, MenuRow } from '@components/Menu' import { MenuContainer, MenuRow } from '@components/Menu'
import { useAppDispatch } from '@root/store'
import { import {
changeAnalytics, changeAnalytics,
getSettingsAnalytics getSettingsAnalytics
@ -9,10 +10,10 @@ import Constants from 'expo-constants'
import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { StyleSheet, Text } from 'react-native' import { StyleSheet, Text } from 'react-native'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
const SettingsAnalytics: React.FC = () => { const SettingsAnalytics: React.FC = () => {
const dispatch = useDispatch() const dispatch = useAppDispatch()
const { colors } = useTheme() const { colors } = useTheme()
const { t } = useTranslation('screenTabs') const { t } = useTranslation('screenTabs')

View File

@ -4,6 +4,7 @@ import { MenuContainer, MenuRow } from '@components/Menu'
import { useActionSheet } from '@expo/react-native-action-sheet' import { useActionSheet } from '@expo/react-native-action-sheet'
import { useNavigation } from '@react-navigation/native' import { useNavigation } from '@react-navigation/native'
import { LOCALES } from '@root/i18n/locales' import { LOCALES } from '@root/i18n/locales'
import { useAppDispatch } from '@root/store'
import androidDefaults from '@utils/slices/instances/push/androidDefaults' import androidDefaults from '@utils/slices/instances/push/androidDefaults'
import { getInstances } from '@utils/slices/instancesSlice' import { getInstances } from '@utils/slices/instancesSlice'
import { import {
@ -21,12 +22,12 @@ import * as Notifications from 'expo-notifications'
import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { Platform } from 'react-native' import { Platform } from 'react-native'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import { mapFontsizeToName } from '../SettingsFontsize' import { mapFontsizeToName } from '../SettingsFontsize'
const SettingsApp: React.FC = () => { const SettingsApp: React.FC = () => {
const navigation = useNavigation<any>() const navigation = useNavigation<any>()
const dispatch = useDispatch() const dispatch = useAppDispatch()
const { showActionSheetWithOptions } = useActionSheet() const { showActionSheetWithOptions } = useActionSheet()
const { mode } = useTheme() const { mode } = useTheme()
const { t, i18n } = useTranslation('screenTabs') const { t, i18n } = useTranslation('screenTabs')

View File

@ -2,6 +2,7 @@ import Button from '@components/Button'
import haptics from '@components/haptics' import haptics from '@components/haptics'
import ComponentSeparator from '@components/Separator' import ComponentSeparator from '@components/Separator'
import TimelineDefault from '@components/Timeline/Default' import TimelineDefault from '@components/Timeline/Default'
import { useAppDispatch } from '@root/store'
import { TabMeStackScreenProps } from '@utils/navigation/navigators' import { TabMeStackScreenProps } from '@utils/navigation/navigators'
import { import {
changeFontsize, changeFontsize,
@ -15,7 +16,7 @@ import React, { useMemo } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { StyleSheet, Text, View } from 'react-native' import { StyleSheet, Text, View } from 'react-native'
import { ScrollView } from 'react-native-gesture-handler' import { ScrollView } from 'react-native-gesture-handler'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
export const mapFontsizeToName = (size: SettingsState['fontsize']) => { export const mapFontsizeToName = (size: SettingsState['fontsize']) => {
switch (size) { switch (size) {
@ -38,7 +39,7 @@ const TabMeSettingsFontsize: React.FC<
const { colors, theme } = useTheme() const { colors, theme } = useTheme()
const { t } = useTranslation('screenTabs') const { t } = useTranslation('screenTabs')
const initialSize = useSelector(getSettingsFontsize) const initialSize = useSelector(getSettingsFontsize)
const dispatch = useDispatch() const dispatch = useAppDispatch()
const item = { const item = {
id: 'demo', id: 'demo',

View File

@ -8,6 +8,7 @@ import contextsSlice, { ContextsState } from '@utils/slices/contextsSlice'
import instancesSlice, { InstancesState } from '@utils/slices/instancesSlice' import instancesSlice, { InstancesState } from '@utils/slices/instancesSlice'
import settingsSlice, { SettingsState } from '@utils/slices/settingsSlice' import settingsSlice, { SettingsState } from '@utils/slices/settingsSlice'
import versionSlice from '@utils/slices/versionSlice' import versionSlice from '@utils/slices/versionSlice'
import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'
import { createMigrate, persistReducer, persistStore } from 'redux-persist' import { createMigrate, persistReducer, persistStore } from 'redux-persist'
const secureStorage = createSecureStore() const secureStorage = createSecureStore()
@ -69,3 +70,7 @@ let persistor = persistStore(store)
export { store, persistor } export { store, persistor }
export type RootState = ReturnType<typeof store.getState> export type RootState = ReturnType<typeof store.getState>
type AppDispatch = typeof store.dispatch
export const useAppDispatch = () => useDispatch<AppDispatch>()
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector

View File

@ -2,13 +2,13 @@ import apiGeneral from '@api/general'
import apiTooot from '@api/tooot' import apiTooot from '@api/tooot'
import { displayMessage } from '@components/Message' import { displayMessage } from '@components/Message'
import navigationRef from '@helpers/navigationRef' import navigationRef from '@helpers/navigationRef'
import { useAppDispatch } from '@root/store'
import { isDevelopment } from '@utils/checkEnvironment' import { isDevelopment } from '@utils/checkEnvironment'
import { disableAllPushes, Instance } from '@utils/slices/instancesSlice' import { disableAllPushes, Instance } from '@utils/slices/instancesSlice'
import { useTheme } from '@utils/styles/ThemeManager' import { useTheme } from '@utils/styles/ThemeManager'
import * as Notifications from 'expo-notifications' import * as Notifications from 'expo-notifications'
import { useEffect } from 'react' import { useEffect } from 'react'
import { TFunction } from 'react-i18next' import { TFunction } from 'react-i18next'
import { useDispatch } from 'react-redux'
export interface Params { export interface Params {
t: TFunction<'screens'> t: TFunction<'screens'>
@ -16,7 +16,7 @@ export interface Params {
} }
const pushUseConnect = ({ t, instances }: Params) => { const pushUseConnect = ({ t, instances }: Params) => {
const dispatch = useDispatch() const dispatch = useAppDispatch()
const { theme } = useTheme() const { theme } = useTheme()
return useEffect(() => { return useEffect(() => {

View File

@ -2,10 +2,9 @@ import { displayMessage } from '@components/Message'
import queryClient from '@helpers/queryClient' import queryClient from '@helpers/queryClient'
import initQuery from '@utils/initQuery' import initQuery from '@utils/initQuery'
import { QueryKeyTimeline } from '@utils/queryHooks/timeline' import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
import { Instance, updateInstanceActive } from '@utils/slices/instancesSlice' import { Instance } from '@utils/slices/instancesSlice'
import * as Notifications from 'expo-notifications' import * as Notifications from 'expo-notifications'
import { useEffect } from 'react' import { useEffect } from 'react'
import { useDispatch } from 'react-redux'
import pushUseNavigate from './useNavigate' import pushUseNavigate from './useNavigate'
export interface Params { export interface Params {
@ -13,8 +12,6 @@ export interface Params {
} }
const pushUseReceive = ({ instances }: Params) => { const pushUseReceive = ({ instances }: Params) => {
const dispatch = useDispatch()
return useEffect(() => { return useEffect(() => {
const subscription = Notifications.addNotificationReceivedListener( const subscription = Notifications.addNotificationReceivedListener(
notification => { notification => {

View File

@ -4,7 +4,6 @@ import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
import { Instance } from '@utils/slices/instancesSlice' import { Instance } from '@utils/slices/instancesSlice'
import * as Notifications from 'expo-notifications' import * as Notifications from 'expo-notifications'
import { useEffect } from 'react' import { useEffect } from 'react'
import { useDispatch } from 'react-redux'
import pushUseNavigate from './useNavigate' import pushUseNavigate from './useNavigate'
export interface Params { export interface Params {
@ -12,8 +11,6 @@ export interface Params {
} }
const pushUseRespond = ({ instances }: Params) => { const pushUseRespond = ({ instances }: Params) => {
const dispatch = useDispatch()
return useEffect(() => { return useEffect(() => {
const subscription = Notifications.addNotificationResponseReceivedListener( const subscription = Notifications.addNotificationResponseReceivedListener(
({ notification }) => { ({ notification }) => {