[Clipclops] Refactor message list (#3832)

* rework the list for accessibility

* Reverse reverse

* progress

* good to start testing

* memo `MessageItem`

* small hack

* use our custom `List` impl

* use `ScrollProvider` for `onScroll` event

* remove use of `runOnJS`

* actually, let's keep it

* add some comments

---------

Co-authored-by: Eric Bailey <git@esb.lol>
This commit is contained in:
Hailey 2024-05-03 14:18:01 -07:00 committed by GitHub
parent 6a4199febb
commit 876816675e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 160 additions and 97 deletions

View file

@ -10,7 +10,7 @@ import {atoms as a, useTheme} from '#/alf'
import {ActionsWrapper} from '#/components/dms/ActionsWrapper'
import {Text} from '#/components/Typography'
export function MessageItem({
export let MessageItem = ({
item,
next,
pending,
@ -21,7 +21,7 @@ export function MessageItem({
| ChatBskyConvoDefs.DeletedMessageView
| null
pending?: boolean
}) {
}): React.ReactNode => {
const t = useTheme()
const {currentAccount} = useSession()
@ -97,7 +97,9 @@ export function MessageItem({
)
}
export function MessageItemMetadata({
MessageItem = React.memo(MessageItem)
let MessageItemMetadata = ({
message,
isLastInGroup,
style,
@ -105,7 +107,7 @@ export function MessageItemMetadata({
message: ChatBskyConvoDefs.MessageView
isLastInGroup: boolean
style: StyleProp<TextStyle>
}) {
}): React.ReactNode => {
const t = useTheme()
const {_} = useLingui()
@ -174,6 +176,8 @@ export function MessageItemMetadata({
)
}
MessageItemMetadata = React.memo(MessageItemMetadata)
function localDateString(date: Date) {
// can't use toISOString because it should be in local time
const mm = date.getMonth()