[Chat] Some tweaks (#10840)
This commit is contained in:
@@ -21,6 +21,7 @@ import {
|
|||||||
type ChatBskyActorDefs,
|
type ChatBskyActorDefs,
|
||||||
ChatBskyConvoDefs,
|
ChatBskyConvoDefs,
|
||||||
ChatBskyEmbedJoinLink,
|
ChatBskyEmbedJoinLink,
|
||||||
|
moderateProfile,
|
||||||
RichText as RichTextAPI,
|
RichText as RichTextAPI,
|
||||||
} from '@atproto/api'
|
} from '@atproto/api'
|
||||||
import {plural} from '@lingui/core/macro'
|
import {plural} from '@lingui/core/macro'
|
||||||
@@ -29,7 +30,6 @@ import {useQueryClient} from '@tanstack/react-query'
|
|||||||
|
|
||||||
import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted'
|
import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted'
|
||||||
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
|
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
|
||||||
import {makeProfileLink} from '#/lib/routes/links'
|
|
||||||
import {sanitizeHandle} from '#/lib/strings/handles'
|
import {sanitizeHandle} from '#/lib/strings/handles'
|
||||||
import {useMaybeProfileShadow} from '#/state/cache/profile-shadow'
|
import {useMaybeProfileShadow} from '#/state/cache/profile-shadow'
|
||||||
import {type Shadow} from '#/state/cache/types'
|
import {type Shadow} from '#/state/cache/types'
|
||||||
@@ -38,12 +38,13 @@ import {useModerationOpts} from '#/state/preferences/moderation-opts'
|
|||||||
import {useProfileBlockMutationQueue} from '#/state/queries/profile'
|
import {useProfileBlockMutationQueue} from '#/state/queries/profile'
|
||||||
import {unstableCacheProfileView} from '#/state/queries/unstable-profile-cache'
|
import {unstableCacheProfileView} from '#/state/queries/unstable-profile-cache'
|
||||||
import {useSession} from '#/state/session'
|
import {useSession} from '#/state/session'
|
||||||
|
import {PreviewableUserAvatar} from '#/view/com/util/UserAvatar'
|
||||||
import {atoms as a, native, platform, useTheme} from '#/alf'
|
import {atoms as a, native, platform, useTheme} from '#/alf'
|
||||||
import {isOnlyEmoji} from '#/alf/typography'
|
import {isOnlyEmoji} from '#/alf/typography'
|
||||||
import {Button} from '#/components/Button'
|
import {Button} from '#/components/Button'
|
||||||
import {ActionsWrapper} from '#/components/dms/ActionsWrapper'
|
import {ActionsWrapper} from '#/components/dms/ActionsWrapper'
|
||||||
import {useMessageDialogs} from '#/components/dms/MessageOverlays'
|
import {useMessageDialogs} from '#/components/dms/MessageOverlays'
|
||||||
import {InlineLinkText, Link} from '#/components/Link'
|
import {InlineLinkText} from '#/components/Link'
|
||||||
import * as ProfileCard from '#/components/ProfileCard'
|
import * as ProfileCard from '#/components/ProfileCard'
|
||||||
import * as Prompt from '#/components/Prompt'
|
import * as Prompt from '#/components/Prompt'
|
||||||
import {RichText} from '#/components/RichText'
|
import {RichText} from '#/components/RichText'
|
||||||
@@ -227,22 +228,13 @@ let MessageItem = ({
|
|||||||
|
|
||||||
const avatar =
|
const avatar =
|
||||||
profile && moderationOpts ? (
|
profile && moderationOpts ? (
|
||||||
<Link
|
<PreviewableUserAvatar
|
||||||
style={[a.rounded_full]}
|
profile={profile}
|
||||||
label={l`${createSanitizedDisplayName(profile)}’s avatar`}
|
size={AVATAR_SIZE}
|
||||||
accessibilityHint={l`Opens this profile`}
|
type={profile.associated?.labeler ? 'labeler' : 'user'}
|
||||||
to={makeProfileLink({
|
onBeforePress={() => unstableCacheProfileView(queryClient, profile)}
|
||||||
did: profile.did,
|
moderation={moderateProfile(profile, moderationOpts).ui('avatar')}
|
||||||
handle: profile.handle,
|
/>
|
||||||
})}
|
|
||||||
onPress={() => unstableCacheProfileView(queryClient, profile)}>
|
|
||||||
<ProfileCard.Avatar
|
|
||||||
profile={profile}
|
|
||||||
size={AVATAR_SIZE}
|
|
||||||
moderationOpts={moderationOpts}
|
|
||||||
disabledPreview
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
) : (
|
) : (
|
||||||
<ProfileCard.AvatarPlaceholder size={AVATAR_SIZE} />
|
<ProfileCard.AvatarPlaceholder size={AVATAR_SIZE} />
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -308,7 +308,13 @@ export function MessagesList({
|
|||||||
} else {
|
} else {
|
||||||
flatListRef.current?.scrollToOffset({
|
flatListRef.current?.scrollToOffset({
|
||||||
offset: height,
|
offset: height,
|
||||||
animated: hasScrolled && height > prevContentHeight.current,
|
// only animate when new items were appended - pure layout growth
|
||||||
|
// (e.g. the composer spacer getting its height on web) should
|
||||||
|
// snap instantly rather than visibly scrolling
|
||||||
|
animated:
|
||||||
|
hasScrolled &&
|
||||||
|
height > prevContentHeight.current &&
|
||||||
|
renderItems.length > prevItemCount.current,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user