An ATproto social media client -- with an independent Appview.

cache fix for search post results (#3520)

authored by hailey.at and committed by

GitHub 93731e6d 7d01ff90

+36 -21
+4
src/state/queries/post-thread.ts
··· 8 8 9 9 import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types' 10 10 import {getAgent} from '#/state/session' 11 + import {findAllPostsInQueryData as findAllPostsInSearchQueryData} from 'state/queries/search-posts' 11 12 import {findAllPostsInQueryData as findAllPostsInNotifsQueryData} from './notifications/feed' 12 13 import {findAllPostsInQueryData as findAllPostsInFeedQueryData} from './post-feed' 13 14 import {precacheThreadPostProfiles} from './profile' ··· 258 259 yield postViewToPlaceholderThread(post) 259 260 } 260 261 for (let post of findAllPostsInNotifsQueryData(queryClient, uri)) { 262 + yield postViewToPlaceholderThread(post) 263 + } 264 + for (let post of findAllPostsInSearchQueryData(queryClient, uri)) { 261 265 yield postViewToPlaceholderThread(post) 262 266 } 263 267 }
+32 -21
src/view/com/post/Post.tsx
··· 1 - import React, {useState, useMemo} from 'react' 1 + import React, {useMemo, useState} from 'react' 2 2 import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' 3 3 import { 4 4 AppBskyFeedDefs, ··· 7 7 ModerationDecision, 8 8 RichText as RichTextAPI, 9 9 } from '@atproto/api' 10 + import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' 11 + import {msg, Trans} from '@lingui/macro' 12 + import {useLingui} from '@lingui/react' 13 + import {useQueryClient} from '@tanstack/react-query' 14 + 10 15 import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 11 - import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' 16 + import {POST_TOMBSTONE, Shadow, usePostShadow} from '#/state/cache/post-shadow' 17 + import {useModerationOpts} from '#/state/queries/preferences' 18 + import {useComposerControls} from '#/state/shell/composer' 19 + import {MAX_POST_LINES} from 'lib/constants' 20 + import {usePalette} from 'lib/hooks/usePalette' 21 + import {makeProfileLink} from 'lib/routes/links' 22 + import {countLines} from 'lib/strings/helpers' 23 + import {colors, s} from 'lib/styles' 24 + import {RQKEY as RQKEY_URI} from 'state/queries/resolve-uri' 25 + import {atoms as a} from '#/alf' 26 + import {RichText} from '#/components/RichText' 27 + import {ContentHider} from '../../../components/moderation/ContentHider' 28 + import {LabelsOnMyPost} from '../../../components/moderation/LabelsOnMe' 29 + import {PostAlerts} from '../../../components/moderation/PostAlerts' 12 30 import {Link, TextLink} from '../util/Link' 13 - import {UserInfoText} from '../util/UserInfoText' 14 - import {PostMeta} from '../util/PostMeta' 31 + import {PostCtrls} from '../util/post-ctrls/PostCtrls' 15 32 import {PostEmbeds} from '../util/post-embeds' 16 - import {PostCtrls} from '../util/post-ctrls/PostCtrls' 17 - import {ContentHider} from '../../../components/moderation/ContentHider' 18 - import {PostAlerts} from '../../../components/moderation/PostAlerts' 19 - import {LabelsOnMyPost} from '../../../components/moderation/LabelsOnMe' 33 + import {PostMeta} from '../util/PostMeta' 20 34 import {Text} from '../util/text/Text' 21 - import {RichText} from '#/components/RichText' 22 35 import {PreviewableUserAvatar} from '../util/UserAvatar' 23 - import {s, colors} from 'lib/styles' 24 - import {usePalette} from 'lib/hooks/usePalette' 25 - import {makeProfileLink} from 'lib/routes/links' 26 - import {MAX_POST_LINES} from 'lib/constants' 27 - import {countLines} from 'lib/strings/helpers' 28 - import {useModerationOpts} from '#/state/queries/preferences' 29 - import {useComposerControls} from '#/state/shell/composer' 30 - import {Shadow, usePostShadow, POST_TOMBSTONE} from '#/state/cache/post-shadow' 31 - import {Trans, msg} from '@lingui/macro' 32 - import {useLingui} from '@lingui/react' 33 - import {atoms as a} from '#/alf' 36 + import {UserInfoText} from '../util/UserInfoText' 34 37 35 38 export function Post({ 36 39 post, ··· 98 101 showReplyLine?: boolean 99 102 style?: StyleProp<ViewStyle> 100 103 }) { 104 + const queryClient = useQueryClient() 101 105 const pal = usePalette('default') 102 106 const {_} = useLingui() 103 107 const {openComposer} = useComposerControls() ··· 129 133 setLimitLines(false) 130 134 }, [setLimitLines]) 131 135 136 + const onBeforePress = React.useCallback(() => { 137 + queryClient.setQueryData(RQKEY_URI(post.author.handle), post.author.did) 138 + }, [queryClient, post.author.handle, post.author.did]) 139 + 132 140 return ( 133 - <Link href={itemHref} style={[styles.outer, pal.border, style]}> 141 + <Link 142 + href={itemHref} 143 + style={[styles.outer, pal.border, style]} 144 + onBeforePress={onBeforePress}> 134 145 {showReplyLine && <View style={styles.replyLine} />} 135 146 <View style={styles.layout}> 136 147 <View style={styles.layoutAvi}>