mirror of
https://github.com/pezkuwichain/pezkuwi-telegram-miniapp.git
synced 2026-06-20 01:01:11 +00:00
9da348bdf3
- Add translation system with useTranslation hook and LanguageProvider - Auto-detect language from Telegram user settings - Update all components and sections to use translation keys - Support English, Turkish, Kurdish, Arabic, Persian, Sorani
110 lines
3.0 KiB
TypeScript
110 lines
3.0 KiB
TypeScript
import { StrictMode } from 'react';
|
|
import { createRoot } from 'react-dom/client';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import { AuthProvider } from './contexts/AuthContext';
|
|
import { WalletProvider } from './contexts/WalletContext';
|
|
import { ReferralProvider } from './contexts/ReferralContext';
|
|
import { ErrorBoundary } from './components/ErrorBoundary';
|
|
import { LanguageProvider } from './i18n';
|
|
import App from './App';
|
|
import './index.css';
|
|
|
|
// Suppress console logs in production
|
|
if (import.meta.env.PROD) {
|
|
const noop = () => {};
|
|
console.log = noop;
|
|
console.debug = noop;
|
|
console.info = noop;
|
|
// Keep console.warn and console.error for critical issues
|
|
}
|
|
|
|
// Initialize Telegram WebApp
|
|
const tg = window.Telegram?.WebApp;
|
|
if (tg) {
|
|
tg.ready();
|
|
tg.expand();
|
|
tg.setHeaderColor('#030712');
|
|
tg.setBackgroundColor('#030712');
|
|
}
|
|
|
|
const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
staleTime: 30000,
|
|
retry: 2,
|
|
},
|
|
},
|
|
});
|
|
|
|
const rootElement = document.getElementById('root');
|
|
if (!rootElement) {
|
|
throw new Error('Root element not found');
|
|
}
|
|
createRoot(rootElement).render(
|
|
<StrictMode>
|
|
<ErrorBoundary>
|
|
<LanguageProvider>
|
|
<QueryClientProvider client={queryClient}>
|
|
<AuthProvider>
|
|
<WalletProvider>
|
|
<ReferralProvider>
|
|
<App />
|
|
</ReferralProvider>
|
|
</WalletProvider>
|
|
</AuthProvider>
|
|
</QueryClientProvider>
|
|
</LanguageProvider>
|
|
</ErrorBoundary>
|
|
</StrictMode>
|
|
);
|
|
|
|
// Type declarations for Telegram WebApp
|
|
declare global {
|
|
interface Window {
|
|
Telegram?: {
|
|
WebApp: {
|
|
ready: () => void;
|
|
expand: () => void;
|
|
close: () => void;
|
|
setHeaderColor: (color: string) => void;
|
|
setBackgroundColor: (color: string) => void;
|
|
showAlert: (message: string) => void;
|
|
showConfirm: (message: string, callback: (confirmed: boolean) => void) => void;
|
|
HapticFeedback: {
|
|
impactOccurred: (style: 'light' | 'medium' | 'heavy' | 'rigid' | 'soft') => void;
|
|
notificationOccurred: (type: 'error' | 'success' | 'warning') => void;
|
|
selectionChanged: () => void;
|
|
};
|
|
initDataUnsafe: {
|
|
user?: {
|
|
id: number;
|
|
first_name: string;
|
|
last_name?: string;
|
|
username?: string;
|
|
language_code?: string;
|
|
};
|
|
start_param?: string;
|
|
};
|
|
openLink: (url: string) => void;
|
|
openTelegramLink: (url: string) => void;
|
|
showScanQrPopup: (
|
|
params: { text?: string },
|
|
callback: (text: string) => boolean | void
|
|
) => void;
|
|
closeScanQrPopup: () => void;
|
|
initData: string;
|
|
version: string;
|
|
platform: string;
|
|
themeParams: {
|
|
bg_color?: string;
|
|
text_color?: string;
|
|
hint_color?: string;
|
|
link_color?: string;
|
|
button_color?: string;
|
|
button_text_color?: string;
|
|
};
|
|
};
|
|
};
|
|
}
|
|
}
|