Estoy trabajando en un chat nativo de reacción con el backend de laravel (estoy usando Laravel Websockets/Pusher).
En el backend, mi modelo de mensajes tiene un campo booleano isRead, tengo problemas para encontrar una manera de marcar correctamente los mensajes de chat como leídos, por ejemplo, cuando un usuario navega a la pantalla de chat, disparo axios para obtener mensajes y verifico si hay mensajes sin leer. mensajes, luego los marco como leídos si es necesario.
Pero, ¿cómo puedo marcar como leídos los mensajes que se enviaron cuando el usuario receptor estaba mirando la pantalla de chat? ¿Hay un evento de cliente para eso? ¿Cómo puedo lidiar con esto?
Mi pantalla de chat es una simple Flatlist.
<FlatList ref={flatListRef} vertical={true} onScroll={handleScroll} onEndReachedThreshold={0.5} onEndReached={markChatMessagesAsRead} showsVerticalScrollIndicator={false} style={{ flex:1,padding:15}} data={messages} keyExtractor={item => item.id.toString()} renderItem={({ message, index }) => <View style={{width:'100%',flexDirection:'row', ...index == messages.length-1 ? {marginBottom:100} : {marginBottom:5}}}> <Text>{ message.body}</Text> <Text>{ message.isRead }</Text> </View>} />