Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Store QP authors in the DID cache (#3509)

* store qp author in did cache

* organize

* this seems nicer

* move outside of jsx

authored by

Hailey and committed by
GitHub
44039c68 835f2e65

+26 -17
+26 -17
src/view/com/util/post-embeds/QuoteEmbed.tsx
··· 1 1 import React from 'react' 2 2 import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' 3 3 import { 4 + AppBskyEmbedExternal, 5 + AppBskyEmbedImages, 6 + AppBskyEmbedRecord, 7 + AppBskyEmbedRecordWithMedia, 4 8 AppBskyFeedDefs, 5 - AppBskyEmbedRecord, 6 9 AppBskyFeedPost, 7 - AppBskyEmbedImages, 8 - AppBskyEmbedRecordWithMedia, 9 - AppBskyEmbedExternal, 10 - RichText as RichTextAPI, 11 10 moderatePost, 12 11 ModerationDecision, 12 + RichText as RichTextAPI, 13 13 } from '@atproto/api' 14 14 import {AtUri} from '@atproto/api' 15 - import {PostMeta} from '../PostMeta' 15 + import {Trans} from '@lingui/macro' 16 + import {useQueryClient} from '@tanstack/react-query' 17 + 18 + import {useModerationOpts} from '#/state/queries/preferences' 19 + import {RQKEY as RQKEY_URI} from '#/state/queries/resolve-uri' 20 + import {usePalette} from 'lib/hooks/usePalette' 21 + import {InfoCircleIcon} from 'lib/icons' 22 + import {makeProfileLink} from 'lib/routes/links' 23 + import {ComposerOptsQuote} from 'state/shell/composer' 24 + import {atoms as a} from '#/alf' 25 + import {RichText} from '#/components/RichText' 26 + import {ContentHider} from '../../../../components/moderation/ContentHider' 27 + import {PostAlerts} from '../../../../components/moderation/PostAlerts' 16 28 import {Link} from '../Link' 29 + import {PostMeta} from '../PostMeta' 17 30 import {Text} from '../text/Text' 18 - import {usePalette} from 'lib/hooks/usePalette' 19 - import {ComposerOptsQuote} from 'state/shell/composer' 20 31 import {PostEmbeds} from '.' 21 - import {PostAlerts} from '../../../../components/moderation/PostAlerts' 22 - import {makeProfileLink} from 'lib/routes/links' 23 - import {InfoCircleIcon} from 'lib/icons' 24 - import {Trans} from '@lingui/macro' 25 - import {useModerationOpts} from '#/state/queries/preferences' 26 - import {ContentHider} from '../../../../components/moderation/ContentHider' 27 - import {RichText} from '#/components/RichText' 28 - import {atoms as a} from '#/alf' 29 32 30 33 export function MaybeQuoteEmbed({ 31 34 embed, ··· 107 110 moderation?: ModerationDecision 108 111 style?: StyleProp<ViewStyle> 109 112 }) { 113 + const queryClient = useQueryClient() 110 114 const pal = usePalette('default') 111 115 const itemUrip = new AtUri(quote.uri) 112 116 const itemHref = makeProfileLink(quote.author, 'post', itemUrip.rkey) ··· 134 138 } 135 139 }, [quote.embeds]) 136 140 141 + const onBeforePress = React.useCallback(() => { 142 + queryClient.setQueryData(RQKEY_URI(quote.author.handle), quote.author.did) 143 + }, [queryClient, quote.author.did, quote.author.handle]) 144 + 137 145 return ( 138 146 <ContentHider modui={moderation?.ui('contentList')}> 139 147 <Link 140 148 style={[styles.container, pal.borderDark, style]} 141 149 hoverStyle={{borderColor: pal.colors.borderLinkHover}} 142 150 href={itemHref} 143 - title={itemTitle}> 151 + title={itemTitle} 152 + onBeforePress={onBeforePress}> 144 153 <View pointerEvents="none"> 145 154 <PostMeta 146 155 author={quote.author}