import dayjs from 'dayjs'; import { customColor } from '@/constants/Colors'; import { Ionicons } from '@expo/vector-icons'; import { LinearGradient } from 'expo-linear-gradient'; import { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native'; import ChoicesGroup from '../Selection/ChoicesGroup'; import CustomButton from '../UI/Button'; import UserResults from '../modal/UserResults'; import { memo, useEffect, useState } from 'react'; import { minigameApi } from '@/axios/minigame'; import { useSelector } from 'react-redux'; import { State } from '@/redux'; import convertDatas from '@/converter/dataConverter'; import { useSnackbar } from '@/contexts'; import ChoicesModal from '../Selection/ChoiceModal'; const allVoteStatus = [ { status: 'Không chọn', colors: [customColor.status.notVote.start, customColor.status.notVote.middle, customColor.status.notVote.end], borderColor: customColor.status.notVote.border, }, { status: 'Chưa chọn', colors: [customColor.card.backgroundStart, customColor.card.backgroundMiddle, customColor.card.backgroundEnd], borderColor: customColor.card.border, }, { status: 'Đúng', colors: [customColor.status.correct.start, customColor.status.correct.middle, customColor.status.correct.end], borderColor: customColor.status.correct.border, }, { status: 'Sai', colors: [customColor.status.incorrect.start, customColor.status.incorrect.middle, customColor.status.incorrect.end], borderColor: customColor.status.incorrect.border, }, { status: 'Chờ kết quả', colors: [customColor.status.waiting.start, customColor.status.waiting.middle, customColor.status.waiting.end], borderColor: customColor.status.waiting.border, }, ]; function MinigameItem({ onRefresh, minigame, isNewMatch, onIsFocus, isLoadingTab, }: { onRefresh: any; minigame: any; onIsFocus: any; isNewMatch: boolean; isLoadingTab: boolean; }) { const start_date = dayjs(minigame.minigame_start).format('DD/MM/YYYY HH:mm'); const end_date = dayjs(minigame.minigame_end).format('DD/MM/YYYY HH:mm'); const result = minigame.minigame_correct_option ? minigame.minigame_correct_option : ' '; const [userVoteStatus, setUserVoteStatus] = useState(); const { showSnackbar } = useSnackbar(); const options = [ 'Tất cả', ...minigame.options .sort((a: any, b: any) => a.option_name.trim().localeCompare(b.option_name.trim())) .map((i: any) => { return i.option_name; }), ]; const fetchResult = async () => { try { let vote_status = allVoteStatus.find((val) => val.status === minigame.vote_status); setUserVoteStatus({ status: vote_status?.status, colors: vote_status?.colors, borderColor: vote_status?.borderColor }); } catch (err: any) { console.log('Result error', err.response.data.detail); showSnackbar(err.response.data.detail, 'error'); } }; const fetchColor = () => { const vote_status = allVoteStatus.find((val) => val.status === 'Chờ kết quả'); setUserVoteStatus({ status: vote_status?.status, colors: vote_status?.colors, borderColor: vote_status?.borderColor }); }; useEffect(() => { fetchResult(); }, [isLoadingTab]); return ( { onIsFocus(false); }} > {!isLoadingTab && ( { } {start_date.toString()} {'-'} {end_date.toString()} {`${minigame.minigame_name}`} {isNewMatch && ( )} {!isNewMatch ? ( {'Đáp án: ' + result + ' (KQ:' + minigame.minigame_result + ')'} ) : ( <> )} )} ); } const MinigameDetail = ({ isNewMatch, minigame, onRefresh, options, onUserVoteStatus, }: { onUserVoteStatus: any; isNewMatch: boolean; minigame: any; onRefresh: any; onChoose?: any; options: Array; }) => { const [showVotes, setShowVotes] = useState(false); return ( {`Tiền cược: ${minigame.minigame_money.toLocaleString() + 'đ'}`} setShowVotes(true)}> setShowVotes(false)} /> ); }; const styles = StyleSheet.create({ brightText: { color: customColor.card.brightText, }, darkText: { color: customColor.card.darkText, }, title: { fontSize: 16, fontWeight: '800', color: customColor.card.title, textAlign: 'center', }, container: { flex: 1, borderRadius: 20, borderWidth: 1.5, paddingHorizontal: 10, paddingBottom: 6, marginVertical: 10, justifyContent: 'center', }, rowContainer: { flex: 1, flexDirection: 'row', justifyContent: 'space-around', }, verticalDevider: { marginVertical: 8, }, horizontailDevider: { marginHorizontal: 8, }, }); export default memo(MinigameItem);