2024-12-13 15:26:27 +03:00
import React , { useEffect , useState } from 'react' ;
2024-11-18 16:33:44 +03:00
import styles from './routepage.module.css' ;
import { WrongSourcePage } from '../WrongSourcePage' ;
import { ClickerPage } from '../ClickerPage' ;
import { RatingPage } from '../RatingPage' ;
import { AuctionPage } from '../AuctionPage' ;
import { StoragePage } from '../StoragePage' ;
import { useTgData } from '../../hooks/useTgData' ;
import { StylesPage } from '../StylesPage' ;
import { updateStyles } from '../../../utils/updateStyles' ;
import { useUserData } from '../../hooks/useUserData' ;
import { Spinner } from '../../Elements/Spinner' ;
import { updateBackground } from '../../../utils/updateBackground' ;
import { ErrorPage } from '../ErrorPage' ;
2024-12-11 05:02:21 +03:00
import { useNavigate } from 'react-router-dom' ;
2024-12-12 15:21:19 +03:00
import { DevPage } from '../DevPage' ;
2024-12-12 23:01:22 +03:00
import { useRankData } from '../../hooks/useRankData' ;
2024-12-13 15:26:27 +03:00
import { useDispatch } from 'react-redux' ;
import { loadWinAuction } from '../../../store/auction/actions' ;
import { useAppSelector } from '../../hooks/useAppSelector' ;
import { checkMobile } from '../../../utils/checkMobile' ;
2024-11-18 16:33:44 +03:00
interface IRoutePage {
page : string
}
export function RoutePage ( { page } : IRoutePage ) {
const verified = useTgData ( ) ;
const { dataUser , loadingUser , errorUser } = useUserData ( ) ;
2024-12-13 15:26:27 +03:00
const token = useAppSelector < string > ( state = > state . token ) ;
const [ mobile , setMobile ] = useState ( false ) ;
2024-12-12 23:01:22 +03:00
useRankData ( ) ;
2024-12-11 05:02:21 +03:00
const navigate = useNavigate ( ) ;
2024-12-13 15:26:27 +03:00
const dispatch = useDispatch ( ) ;
2024-12-11 05:02:21 +03:00
//@ts-ignore
const tg = window . Telegram . WebApp ;
var BackButton = tg . BackButton ;
2024-11-18 16:33:44 +03:00
2024-12-13 15:26:27 +03:00
useEffect ( ( ) = > {
dispatch < any > ( loadWinAuction ( ) ) ;
} , [ token ] ) ;
2024-11-18 16:33:44 +03:00
useEffect ( ( ) = > {
updateBackground ( page ) ;
updateStyles ( ) ;
2024-12-11 05:02:21 +03:00
if ( page === 'main' ) {
BackButton . hide ( ) ;
} else {
BackButton . show ( ) ;
}
2024-11-18 16:33:44 +03:00
} , [ page ] ) ;
2024-12-11 05:02:21 +03:00
BackButton . onClick ( function ( ) {
navigate ( - 1 ) ;
} ) ;
2024-11-24 21:12:26 +03:00
2024-12-13 15:26:27 +03:00
useEffect ( ( ) = > {
setMobile ( checkMobile ( ) ) ;
} , [ ] ) ;
2024-11-18 16:33:44 +03:00
return (
< div >
2024-12-13 15:26:27 +03:00
{ ! mobile ? < ErrorPage title = 'Войдите через мобильное устройство' text = 'Приложение доступно только в мобильном приложении Telegram.' isBtn = { false } detail = { '' } / > :
< div >
{ ! verified ? < WrongSourcePage / > : < div >
{ //@ts-ignore
page === 'main' && ( ! loadingUser || dataUser . username ) && ! errorUser && dataUser . name && < ClickerPage name = { dataUser . name } points = { Number ( dataUser . points ) } img = { dataUser . avatar } energy = { Number ( dataUser . energy ) } / > }
{ page === 'rating' && ( ! loadingUser || dataUser . username ) && ! errorUser && < RatingPage / > }
{ page === 'referral' && ( ! loadingUser || dataUser . username ) && ! errorUser && < StoragePage / > }
{ page === 'auction' && ( ! loadingUser || dataUser . username ) && ! errorUser && < AuctionPage / > }
{ page === 'styles' && ( ! loadingUser || dataUser . username ) && ! errorUser && < StylesPage / > }
{ page === 'dev' && < DevPage / > }
{ ( loadingUser ) && < div className = { styles . spinnerContainer } > < Spinner color = '#FFFFFF' size = '50px' thickness = '6px' className = { styles . spinner } / > < / div > }
{ errorUser && ! loadingUser && < ErrorPage detail = { errorUser } / > }
< / div > }
< / div > }
2024-11-18 16:33:44 +03:00
< / div >
) ;
}