import { LinearGradient } from 'expo-linear-gradient' import { StatusBar } from 'expo-status-bar' import { useEffect, useState } from 'react' import { Pressable, ScrollView, StatusBar as RNStatusBar, StyleSheet, Text, View } from 'react-native' import { SafeAreaView } from 'react-native-safe-area-context' import { useActivities } from '@/hooks/data/use-activities' type MessageType = 'all' | 'notice' | 'other' export default function MessageScreen() { const [activeTab, setActiveTab] = useState('all') const { load, loading, error, data } = useActivities() useEffect(() => { load({ page: 1, limit: 20, orderBy: 'createdAt', order: 'desc' }) }, []) const activities = data?.activities || [] const filteredActivities = activities.filter((activity) => { if (activeTab === 'all') return true return activeTab === 'notice' }) return ( {/* 固定在顶部的标签选择器 */} setActiveTab('all')}> {activeTab === 'all' ? ( 全部 ) : ( 全部 )} setActiveTab('notice')}> {activeTab === 'notice' ? ( 活动通知 ) : ( 活动通知 )} setActiveTab('other')}> {activeTab === 'other' ? ( 其他 ) : ( 其他 )} {loading ? ( 加载中... ) : error ? ( 加载失败 ) : filteredActivities.length > 0 ? ( filteredActivities.map((activity) => ( {activity.title} {activity.titleEn || activity.desc} {activity.desc} {new Date(activity.createdAt) .toLocaleString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false, }) .replace(/\//g, '-')} )) ) : ( 💭 暂无消息 )} ) } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#090A0B', }, scrollView: { flex: 1, backgroundColor: '#090A0B', }, scrollContent: { paddingHorizontal: 4, paddingTop: 12, paddingBottom: 24, }, segment: { flexDirection: 'row', paddingHorizontal: 8, paddingTop: 19, paddingBottom: 12, backgroundColor: '#090A0B', gap: 16, }, segmentText: { fontSize: 14, color: '#FFFFFF', }, segmentTextActiveWrapper: { position: 'relative', paddingBottom: 2, justifyContent: 'flex-end', alignSelf: 'flex-start', }, segmentTextActiveBg: { position: 'absolute', left: 0, right: 0, bottom: 0, height: 10, backgroundColor: '#FF9966', }, segmentTextActiveText: { zIndex: 1, }, cardContainer: { backgroundColor: '#16181B', borderRadius: 16, padding: 16, marginBottom: 12, marginHorizontal: 4, }, cardTitle: { color: '#FFFFFF', fontSize: 15, fontWeight: '600', marginBottom: 8, }, cardSubtitle: { color: '#ABABAB', fontSize: 11, marginBottom: 16, }, cardBody: { backgroundColor: '#26292E', borderRadius: 12, height: 100, marginBottom: 12, }, cardBodyText: { color: '#FFFFFF', fontSize: 12, opacity: 0.8, }, cardTime: { color: '#8A8A8A', fontSize: 10, }, emptyContainer: { flex: 1, alignItems: 'center', justifyContent: 'center', paddingTop: 200, }, emptyText: { color: '#8A8A8A', fontSize: 12, marginTop: 16, }, })