/* eslint-disable @next/next/no-html-link-for-pages */ import React from 'react' import Link from 'next/link' import { useRouter } from 'next/router' import { AiOutlineArrowLeft } from 'react-icons/ai' import { useEffect } from 'react' import { useDispatch, useSelector } from 'react-redux' import { setBlackjackGame, setPlayer } from '../../redux/reducers/playerSlice' import { setBlackjack, setStyle } from '../../redux/reducers/styleSlice' import axios from 'axios'; const BlackjackHeader = () => { const dispatch = useDispatch(); const router = useRouter(); const playerState = useSelector(state => state.player); const styleState = useSelector(state => state.style); useEffect(() => { // display loading screen dispatch(setStyle({ ...styleState.style, displayLoadingScreen: true, })); let interval = null; axios.get(`/api/blackjack?action=get_player_info_on_enter&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(res => { if (res.data?.success) { dispatch(setPlayer({ ...playerState.player, displayName: res.data?.displayName, session_id: res.data?.session_id, credits: res.data?.credits, })) dispatch(setBlackjack({ ...styleState.blackjack, inputControls: { ...styleState.blackjack.inputControls, initialBet: { ...styleState.blackjack.inputControls.initialBet, chosenCredits: parseInt(playerState.player.credits/2), }, sideBet: { ...styleState.blackjack.inputControls.sideBet, chosenCredits: parseInt(playerState.player.credits/2), } }, })) if (interval !== null) clearInterval(interval); interval = setInterval(() => { axios.get(`/api/blackjack?action=update_state&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(newRes => { if (newRes.data?.success) { dispatch(setBlackjackGame(newRes.data?.blackjackGame)) if (newRes.data?.blackjackGame?.credits !== playerState.player.credits && parseInt(newRes.data?.blackjackGame?.credits) >= 0) { dispatch(setPlayer({ ...playerState.player, displayName: res.data?.displayName, session_id: res.data?.session_id, credits: newRes.data?.blackjackGame?.credits, })) } dispatch(setStyle({ ...styleState.style, displayLoadingScreen: false, notification: { ...styleState.style.notification, show: false, }, lostConnectionInfo: { show: false, message: '' }, alert: (newRes.data?.blackjackGame?.status?.includes('_5_') && !newRes.data?.blackjackGame?.betOutcomeMessageShown) ? { show: true, title: newRes.data?.blackjackGame?.messageTitle, subtitle: newRes.data?.blackjackGame?.messageDescription, button: { text: 'Play Again', action: 'play_again', } } : (newRes.data?.blackjackGame?.status?.includes('_4_') && !newRes.data?.blackjackGame?.sideBetOutcomeMessageShown && newRes.data?.blackjackGame?.sideBet > 0) ? { show: true, title: newRes.data?.blackjackGame?.messageTitle, subtitle: newRes.data?.blackjackGame?.messageDescription, button: { text: 'Continue', action: 'continue_from_side_bet', } } : { ...styleState.style.alert, show: false, }, })) } }).catch(error => { dispatch(setStyle({ ...styleState.style, displayLoadingScreen: false, lostConnectionInfo: { show: true, message: 'Game will resume upon reconnection to the server.' } })) }); }, 1000); } else { dispatch(setStyle({ ...styleState.style, notification: { show: true, text: 'Please login in order to play blackjack.', status: 'error', }, displayLoadingScreen: false, })) router.push('/'); } }); return () => { if (interval !== null) clearInterval(interval); }; }, []); return (

) } export default BlackjackHeader