/
kaws
/
Telegram-Mini-Apps
Обзор
Документация
Войти
/
kaws
/
Telegram-Mini-Apps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/components/Root/Root.tsx
58 строк
2 KB
Vladimir Ilyin
fix: codestyle, useLaunchParams
04 май 2025, 12:54
04 май 2025, 12:54
932575c
Код
Авторство
О чём код?
'use client'; import { type PropsWithChildren, useEffect } from 'react'; import { initData, miniApp, useLaunchParams, useSignal, } from '@telegram-apps/sdk-react'; import { TonConnectUIProvider } from '@tonconnect/ui-react'; import { AppRoot } from '@telegram-apps/telegram-ui'; import { ErrorBoundary } from '@/components/ErrorBoundary'; import { ErrorPage } from '@/components/ErrorPage'; import { useDidMount } from '@/hooks/useDidMount'; import { setLocale } from '@/core/i18n/locale'; import './styles.css'; function RootInner({ children }: PropsWithChildren) { const lp = useLaunchParams(); const isDark = useSignal(miniApp.isDark); const initDataUser = useSignal(initData.user); // Set the user locale. useEffect(() => { initDataUser && setLocale(initDataUser.language_code); }, [initDataUser]); return ( <TonConnectUIProvider manifestUrl="/tonconnect-manifest.json"> <AppRoot appearance={isDark ? 'dark' : 'light'} platform={ ['macos', 'ios'].includes(lp.tgWebAppPlatform) ? 'ios' : 'base' } > {children} </AppRoot> </TonConnectUIProvider> ); } export function Root(props: PropsWithChildren) { // Unfortunately, Telegram Mini Apps does not allow us to use all features of // the Server Side Rendering. That's why we are showing loader on the server // side. const didMount = useDidMount(); return didMount ? ( <ErrorBoundary fallback={ErrorPage}> <RootInner {...props} /> </ErrorBoundary> ) : ( <div className="root__loading">Loading</div> ); }