[🐴] Minor nits (#4102)

* set a better size for `initialNumToRender`

* memo list items

* scroll to end on both platforms

* rev
zio/stable
Hailey 2024-05-18 16:45:46 -07:00 committed by GitHub
parent 5343910570
commit 1ac13abf4d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 6 deletions

View File

@ -1,8 +1,8 @@
import React, {useCallback, useRef} from 'react'
import {FlatList, View} from 'react-native'
import Animated, {
dispatchCommand,
runOnJS,
scrollTo,
useAnimatedKeyboard,
useAnimatedReaction,
useAnimatedRef,
@ -229,9 +229,14 @@ export function MessagesList({
return
}
// Only call this on every frame while _opening_ the keyboard
// We are setting some arbitrarily high number here to ensure that we end up scrolling to the bottom. There is not
// any other way to synchronously scroll to the bottom of the list, since we cannot get the content size of the
// scrollview synchronously.
// On iOS we could have used `dispatchCommand('scrollToEnd', [])` since the underlying view has a `scrollToEnd`
// method. It doesn't exist on Android though. That's probably why `scrollTo` which is implemented in Reanimated
// doesn't support a `scrollToEnd`.
if (prev && now > 0 && now >= prev) {
dispatchCommand(flatListRef, 'scrollToEnd', [false])
scrollTo(flatListRef, 0, 1e7, false)
}
// We want to store the full keyboard height after it fully opens so we can make some

View File

@ -25,12 +25,17 @@ import {Bell2Off_Filled_Corner0_Rounded as BellStroke} from '#/components/icons/
import {useMenuControl} from '#/components/Menu'
import {Text} from '#/components/Typography'
export function ChatListItem({convo}: {convo: ChatBskyConvoDefs.ConvoView}) {
export let ChatListItem = ({
convo,
}: {
convo: ChatBskyConvoDefs.ConvoView
}): React.ReactNode => {
const {currentAccount} = useSession()
const moderationOpts = useModerationOpts()
const otherUser = convo.members.find(
member => member.did !== currentAccount?.did,
)
const moderationOpts = useModerationOpts()
if (!otherUser || !moderationOpts) {
return null
@ -45,6 +50,8 @@ export function ChatListItem({convo}: {convo: ChatBskyConvoDefs.ConvoView}) {
)
}
ChatListItem = React.memo(ChatListItem)
function ChatListItemReady({
convo,
profile: profileUnshadowed,

View File

@ -73,7 +73,7 @@ export function MessagesScreen({navigation, route}: Props) {
)
}, [_, t])
const initialNumToRender = useInitialNumToRender()
const initialNumToRender = useInitialNumToRender(80)
const [isPTRing, setIsPTRing] = useState(false)
const {