1
0
mirror of https://github.com/tooot-app/app synced 2025-06-05 22:19:13 +02:00
Cannot use pure component in this case after refresh
This commit is contained in:
Zhiyuan Zheng
2021-03-25 00:25:37 +01:00
parent 3727f0e252
commit f3852025ba
10 changed files with 274 additions and 285 deletions

View File

@ -29,7 +29,7 @@ audio()
push() push()
log('log', 'react-query', 'initializing') log('log', 'react-query', 'initializing')
const queryClient = new QueryClient() export const queryClient = new QueryClient()
log('log', 'react-native-screens', 'initializing') log('log', 'react-native-screens', 'initializing')
enableScreens() enableScreens()

View File

@ -23,18 +23,21 @@ export interface Props {
reblog: boolean reblog: boolean
} }
const TimelineActions = React.memo( const TimelineActions: React.FC<Props> = ({
({ queryKey, rootQueryKey, highlighted, status, accts, reblog }: Props) => { queryKey,
rootQueryKey,
highlighted,
status,
accts,
reblog
}) => {
const navigation = useNavigation() const navigation = useNavigation()
const { t } = useTranslation('componentTimeline') const { t } = useTranslation('componentTimeline')
const { mode, theme } = useTheme() const { mode, theme } = useTheme()
const iconColor = theme.secondary const iconColor = theme.secondary
const iconColorAction = (state: boolean) =>
state ? theme.primaryDefault : theme.secondary
const queryClient = useQueryClient() const queryClient = useQueryClient()
const mutation = useTimelineMutation({ const mutation = useTimelineMutation({
queryClient,
onMutate: true, onMutate: true,
onSuccess: (_, params) => { onSuccess: (_, params) => {
const theParams = params as MutationVarsTimelineUpdateStatusProperty const theParams = params as MutationVarsTimelineUpdateStatusProperty
@ -294,9 +297,7 @@ const TimelineActions = React.memo(
</View> </View>
</View> </View>
) )
}, }
() => true
)
const styles = StyleSheet.create({ const styles = StyleSheet.create({
actions: { actions: {

View File

@ -54,7 +54,6 @@ const HeaderConversation = React.memo(
const queryClient = useQueryClient() const queryClient = useQueryClient()
const mutation = useTimelineMutation({ const mutation = useTimelineMutation({
queryClient,
onMutate: true, onMutate: true,
onError: (err: any, _, oldData) => { onError: (err: any, _, oldData) => {
displayMessage({ displayMessage({

View File

@ -45,7 +45,6 @@ const TimelinePoll: React.FC<Props> = ({
const queryClient = useQueryClient() const queryClient = useQueryClient()
const mutation = useTimelineMutation({ const mutation = useTimelineMutation({
queryClient,
onSuccess: ({ body }, params) => { onSuccess: ({ body }, params) => {
const theParams = params as MutationVarsTimelineUpdateStatusProperty const theParams = params as MutationVarsTimelineUpdateStatusProperty
queryClient.cancelQueries(queryKey) queryClient.cancelQueries(queryKey)
@ -55,7 +54,7 @@ const TimelinePoll: React.FC<Props> = ({
switch (theParams.payload.property) { switch (theParams.payload.property) {
case 'poll': case 'poll':
theParams.payload.data = (body as unknown) as Mastodon.Poll theParams.payload.data = (body as unknown) as Mastodon.Poll
updateStatusProperty({ queryClient, ...theParams }) updateStatusProperty(theParams)
break break
} }
}, },

View File

@ -29,7 +29,6 @@ const ActionsAccount: React.FC<Props> = ({
const queryClient = useQueryClient() const queryClient = useQueryClient()
const mutateion = useTimelineMutation({ const mutateion = useTimelineMutation({
queryClient,
onSuccess: (_, params) => { onSuccess: (_, params) => {
const theParams = params as MutationVarsTimelineUpdateAccountProperty const theParams = params as MutationVarsTimelineUpdateAccountProperty
displayMessage({ displayMessage({

View File

@ -30,7 +30,6 @@ const ActionsDomain: React.FC<Props> = ({
const { t } = useTranslation('componentTimeline') const { t } = useTranslation('componentTimeline')
const queryClient = useQueryClient() const queryClient = useQueryClient()
const mutation = useTimelineMutation({ const mutation = useTimelineMutation({
queryClient,
onSettled: () => { onSettled: () => {
displayMessage({ displayMessage({
mode, mode,

View File

@ -34,7 +34,6 @@ const ActionsStatus: React.FC<Props> = ({
const queryClient = useQueryClient() const queryClient = useQueryClient()
const mutation = useTimelineMutation({ const mutation = useTimelineMutation({
queryClient,
onMutate: true, onMutate: true,
onError: (err: any, params, oldData) => { onError: (err: any, params, oldData) => {
const theFunction = (params as MutationVarsTimelineUpdateStatusProperty) const theFunction = (params as MutationVarsTimelineUpdateStatusProperty)

View File

@ -1,15 +1,12 @@
import apiInstance from '@api/instance' import apiInstance from '@api/instance'
import haptics from '@components/haptics' import haptics from '@components/haptics'
import { queryClient } from '@root/App'
import { store } from '@root/store' import { store } from '@root/store'
import { import { getInstanceNotificationsFilter } from '@utils/slices/instancesSlice'
getInstanceActive,
getInstanceNotificationsFilter
} from '@utils/slices/instancesSlice'
import { AxiosError } from 'axios' import { AxiosError } from 'axios'
import { uniqBy } from 'lodash' import { uniqBy } from 'lodash'
import { import {
MutationOptions, MutationOptions,
QueryClient,
useInfiniteQuery, useInfiniteQuery,
UseInfiniteQueryOptions, UseInfiniteQueryOptions,
useMutation useMutation
@ -356,13 +353,11 @@ type MutationOptionsTimeline = MutationOptions<
> >
const useTimelineMutation = ({ const useTimelineMutation = ({
queryClient,
onError, onError,
onMutate, onMutate,
onSettled, onSettled,
onSuccess onSuccess
}: { }: {
queryClient: QueryClient
onError?: MutationOptionsTimeline['onError'] onError?: MutationOptionsTimeline['onError']
onMutate?: boolean onMutate?: boolean
onSettled?: MutationOptionsTimeline['onSettled'] onSettled?: MutationOptionsTimeline['onSettled']
@ -385,10 +380,10 @@ const useTimelineMutation = ({
haptics('Light') haptics('Light')
switch (params.type) { switch (params.type) {
case 'updateStatusProperty': case 'updateStatusProperty':
updateStatusProperty({ queryClient, ...params }) updateStatusProperty(params)
break break
case 'deleteItem': case 'deleteItem':
deleteItem({ queryClient, ...params }) deleteItem(params)
break break
} }
return oldData return oldData

View File

@ -1,13 +1,12 @@
import { InfiniteData, QueryClient } from 'react-query' import { queryClient } from '@root/App'
import { InfiniteData } from 'react-query'
import { MutationVarsTimelineDeleteItem } from '../timeline' import { MutationVarsTimelineDeleteItem } from '../timeline'
const deleteItem = ({ const deleteItem = ({
queryClient,
queryKey, queryKey,
rootQueryKey, rootQueryKey,
id id
}: { }: {
queryClient: QueryClient
queryKey?: MutationVarsTimelineDeleteItem['queryKey'] queryKey?: MutationVarsTimelineDeleteItem['queryKey']
rootQueryKey?: MutationVarsTimelineDeleteItem['rootQueryKey'] rootQueryKey?: MutationVarsTimelineDeleteItem['rootQueryKey']
id: MutationVarsTimelineDeleteItem['id'] id: MutationVarsTimelineDeleteItem['id']

View File

@ -1,5 +1,6 @@
import { queryClient } from '@root/App'
import { findIndex } from 'lodash' import { findIndex } from 'lodash'
import { InfiniteData, QueryClient } from 'react-query' import { InfiniteData } from 'react-query'
import { import {
MutationVarsTimelineUpdateStatusProperty, MutationVarsTimelineUpdateStatusProperty,
TimelineData TimelineData
@ -9,14 +10,12 @@ import updateNotification from './update/notification'
import updateStatus from './update/status' import updateStatus from './update/status'
const updateStatusProperty = ({ const updateStatusProperty = ({
queryClient,
queryKey, queryKey,
rootQueryKey, rootQueryKey,
id, id,
reblog, reblog,
payload payload
}: { }: {
queryClient: QueryClient
queryKey: MutationVarsTimelineUpdateStatusProperty['queryKey'] queryKey: MutationVarsTimelineUpdateStatusProperty['queryKey']
rootQueryKey?: MutationVarsTimelineUpdateStatusProperty['rootQueryKey'] rootQueryKey?: MutationVarsTimelineUpdateStatusProperty['rootQueryKey']
id: MutationVarsTimelineUpdateStatusProperty['id'] id: MutationVarsTimelineUpdateStatusProperty['id']