Files
Stardream eace48732d
Build and Push Docker Images / build (push) Successful in 17s
Initial release
2026-06-02 12:02:02 +10:00

42 lines
1.4 KiB
TypeScript

import { Component, type ReactNode } from 'react'
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom'
import Home from './pages/Home'
import CreateLottery from './pages/CreateLottery'
import LotteryDetail from './pages/LotteryDetail'
import EditLottery from './pages/EditLottery'
class ErrorBoundary extends Component<{ children: ReactNode }, { error: string | null }> {
state = { error: null }
static getDerivedStateFromError(e: Error) { return { error: e.message } }
render() {
if (this.state.error) {
return (
<div style={{ padding: 20, fontFamily: 'monospace', color: '#c00' }}>
<b>Render Error</b>
<pre style={{ whiteSpace: 'pre-wrap', fontSize: 12 }}>{this.state.error}</pre>
<p style={{ fontSize: 11, color: '#666' }}>
initData: {window.Telegram?.WebApp?.initData?.slice(0, 60) || '(empty)'}
</p>
</div>
)
}
return this.props.children
}
}
export default function App() {
return (
<ErrorBoundary>
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/create" element={<CreateLottery />} />
<Route path="/lottery/:id" element={<LotteryDetail />} />
<Route path="/lottery/:id/edit" element={<EditLottery />} />
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
</BrowserRouter>
</ErrorBoundary>
)
}