This commit is contained in:
imeepos
2026-01-29 16:00:21 +08:00
parent 7e6de68891
commit 7c3b3c066c
5 changed files with 183 additions and 24 deletions

View File

@@ -1,4 +1,4 @@
import React, { useState, useEffect, useCallback } from 'react'
import React, { useState, useCallback } from 'react'
import {
View,
Text,
@@ -6,11 +6,12 @@ import {
FlatList,
StatusBar as RNStatusBar,
Pressable,
RefreshControl,
} from 'react-native'
import { StatusBar } from 'expo-status-bar'
import { SafeAreaView } from 'react-native-safe-area-context'
import { useTranslation } from 'react-i18next'
import { useRouter } from 'expo-router'
import { useRouter, useFocusEffect } from 'expo-router'
import { useMessages, type Message } from '@/hooks/use-messages'
import { useMessageActions } from '@/hooks/use-message-actions'
@@ -54,11 +55,11 @@ export default function MessageScreen() {
messages: allMessages,
loading,
loadingMore,
refreshing,
error,
refetch,
loadMore,
hasMore,
execute,
} = useMessages({ limit: 20 })
const {
@@ -75,11 +76,19 @@ export default function MessageScreen() {
// Filter messages based on active tab
const filteredMessages = filterMessagesByTab(allMessages, activeTab)
// Initial data fetch
useEffect(() => {
execute()
// Reload data when tab gains focus
useFocusEffect(
useCallback(() => {
refetch()
executeAnnouncements()
}, [refetch, executeAnnouncements])
)
// Handle pull-to-refresh
const handleRefresh = useCallback(() => {
refetch()
executeAnnouncements()
}, [])
}, [refetch, executeAnnouncements])
// Handle tab change
const handleTabChange = useCallback((type: MessageType) => {
@@ -242,6 +251,14 @@ export default function MessageScreen() {
onEndReachedThreshold={0.5}
ListFooterComponent={renderFooter}
ListEmptyComponent={renderEmptyComponent}
refreshControl={
<RefreshControl
refreshing={refreshing}
onRefresh={handleRefresh}
tintColor="#FFFFFF"
colors={['#FFFFFF']}
/>
}
/>
</SafeAreaView>
)