When clearing queryClient, we may want to create a global function to refetch last read position
This commit is contained in:
Zhiyuan Zheng 2022-01-29 16:37:58 +01:00
parent 0cbf08ed82
commit 45ba984ea3
5 changed files with 41 additions and 5 deletions

View File

@ -8,6 +8,7 @@ export default (): ExpoConfig => ({
name: 'tooot',
description: 'tooot for Mastodon',
slug: 'tooot',
scheme: 'tooot',
version: toootVersion,
privacy: 'hidden',
assetBundlePatterns: ['assets/*'],

View File

@ -17,12 +17,17 @@ import { updatePreviousTab } from '@utils/slices/contextsSlice'
import { updateAccountPreferences } from '@utils/slices/instances/updateAccountPreferences'
import { updateConfiguration } from '@utils/slices/instances/updateConfiguration'
import { updateFilters } from '@utils/slices/instances/updateFilters'
import { getInstanceActive, getInstances } from '@utils/slices/instancesSlice'
import {
getInstanceActive,
getInstances,
updateInstanceActive
} from '@utils/slices/instancesSlice'
import { useTheme } from '@utils/styles/ThemeManager'
import { themes } from '@utils/styles/themes'
import * as Analytics from 'expo-firebase-analytics'
import * as Linking from 'expo-linking'
import { addScreenshotListener } from 'expo-screen-capture'
import React, { useCallback, useEffect, useRef } from 'react'
import React, { useCallback, useEffect, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { Alert, Platform, StatusBar } from 'react-native'
import { useQueryClient } from 'react-query'
@ -144,6 +149,37 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
routeRef.current = currentRoute
}, [])
// Deep linking for compose
const [deeplinked, setDeeplinked] = useState(false)
useEffect(() => {
const getUrlAsync = async () => {
setDeeplinked(true)
const initialUrl = await Linking.parseInitialURLAsync()
if (initialUrl.path) {
const paths = initialUrl.path.split('/')
if (paths && paths.length) {
const instanceIndex = instances.findIndex(
instance => paths[0] === `@${instance.account.acct}@${instance.uri}`
)
if (instanceIndex !== -1 && instanceActive !== instanceIndex) {
dispatch(updateInstanceActive(instances[instanceIndex]))
queryClient.clear()
}
}
}
if (initialUrl.hostname === 'compose') {
navigationRef.navigate('Screen-Compose')
}
}
if (!deeplinked) {
getUrlAsync()
}
}, [instanceActive, instances, deeplinked])
return (
<>
<StatusBar

View File

@ -95,6 +95,3 @@ const styles = StyleSheet.create({
})
export default AccountInformationFields
function htmlToText (note: string): any {
throw new Error('Function not implemented.')
}

View File

@ -43,6 +43,7 @@ const pushUseReceive = ({ queryClient, instances }: Params) => {
onPress: () => {
if (notificationIndex !== -1) {
dispatch(updateInstanceActive(instances[notificationIndex]))
queryClient.clear()
}
pushUseNavigate(payloadData.notification_id)
}

View File

@ -36,6 +36,7 @@ const pushUseRespond = ({ queryClient, instances, dispatch }: Params) => {
)
if (notificationIndex !== -1) {
dispatch(updateInstanceActive(instances[notificationIndex]))
queryClient.clear()
}
pushUseNavigate(payloadData.notification_id)
}