Precache basic profile from posts for instant future navigations (#2795)
* skeleton for caching
* modify some existing logic
* refactor uri resolution query
* add precache feed posts
* adjustments
* remove prefetch on hover (maybe revert, just example)
* fix
* change arg name to match what we want
* optional infinite stale time
* use `ProfileViewDetailed`
* Revert "remove prefetch on hover (maybe revert, just example)"
This reverts commit 08609deb0d.
* add warning comment back for stale time
* remove comment
* store profile with both the handle and did for query key
* remove extra block from revert
* clarify argument name
* remove QT cache
* structure queries the same (put `enabled` at bottom)
* use both `ProfileViewDetailed` and `ProfileView` for the query return type
* placeholder profile header
* remove logs
* remove a few other things we don't need
* add placeholder
* refactor
* refactor
* we don't need this height adjustment now
* use gray banner while loading
* set background color of image to the loading placeholder color
* reorg imports
* add border to header on loading
* Fix style
* Rm radius
* oops
* Undo edit
* Back out type changes
* Tighten some types and moderate shadow
* Move precaching fns to profile where the cache is
* Rename functions to match what they do now
* Remove anys
---------
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
This commit is contained in:
@@ -66,6 +66,7 @@ export function ProfileScreen({route}: Props) {
|
||||
error: profileError,
|
||||
refetch: refetchProfile,
|
||||
isLoading: isLoadingProfile,
|
||||
isPlaceholderData: isPlaceholderProfile,
|
||||
} = useProfileQuery({
|
||||
did: resolvedDid,
|
||||
})
|
||||
@@ -85,12 +86,13 @@ export function ProfileScreen({route}: Props) {
|
||||
}
|
||||
}, [profile?.viewer?.blockedBy, resolvedDid])
|
||||
|
||||
if (isLoadingDid || isLoadingProfile || !moderationOpts) {
|
||||
// Most pushes will happen here, since we will have only placeholder data
|
||||
if (isLoadingDid || isLoadingProfile || isPlaceholderProfile) {
|
||||
return (
|
||||
<CenteredView>
|
||||
<ProfileHeader
|
||||
profile={null}
|
||||
moderation={null}
|
||||
profile={profile ?? null}
|
||||
moderationOpts={moderationOpts ?? null}
|
||||
isProfilePreview={true}
|
||||
/>
|
||||
</CenteredView>
|
||||
@@ -268,11 +270,11 @@ function ProfileScreenLoaded({
|
||||
return (
|
||||
<ProfileHeader
|
||||
profile={profile}
|
||||
moderation={moderation}
|
||||
moderationOpts={moderationOpts}
|
||||
hideBackButton={hideBackButton}
|
||||
/>
|
||||
)
|
||||
}, [profile, moderation, hideBackButton])
|
||||
}, [profile, moderationOpts, hideBackButton])
|
||||
|
||||
return (
|
||||
<ScreenHider
|
||||
|
||||
Reference in New Issue
Block a user