@@ -17,6 +17,7 @@ import '#/app/styles/globals.css' import '#/app/styles/styles-pages/system.scss' import { NextPage } from 'next' import { pingFangFont } from '#/shared/lib/constants/font/font' +import { useBlockTelegram } from '#/shared/lib/hooks/use-block-telegram' axios.defaults.httpsAgent = new https.Agent({ rejectUnauthorized: false, @@ -36,16 +37,20 @@ export interface AppPropsWithLayout extends AppProps { } function App({ Component, pageProps: { session, ...pageProps } }: AppPropsWithLayout) { + useBlockTelegram() const getLayout = Component.getLayout ?? ((page) => page) if ('serviceWorker' in navigator) { - navigator.serviceWorker.getRegistrations().then(function (registrations) { - for (let registration of registrations) { - registration.unregister(); - } - }).catch(function (error) { - console.error('Ошибка при размонтировании service worker:', error); - }); + navigator.serviceWorker + .getRegistrations() + .then(function (registrations) { + for (let registration of registrations) { + registration.unregister() + } + }) + .catch(function (error) { + console.error('Ошибка при размонтировании service worker:', error) + }) } return ( @@ -0,0 +1,6 @@ +import TelegramBlockedPage from '#/views/telegram-blocked/ui/telegram-blocked' +import { getLayout, LayoutWithoutSideMenu } from '#/widgets/layouts' + +TelegramBlockedPage.getLayout = getLayout(LayoutWithoutSideMenu) + +export default TelegramBlockedPage @@ -0,0 +1,26 @@ +import { useEffect } from 'react' +import { useRouter } from 'next/router' + +// этот хук проверяет используется ли Telegram Web App + +export const useBlockTelegram = () => { + const router = useRouter() + + useEffect(() => { + if (typeof window === 'undefined') return + + try { + if ( + typeof window !== 'undefined' && + 'Telegram' in window && + (window as any).Telegram?.WebApp && + router.pathname !== '/telegram-blocked' + ) { + router.replace('/telegram-blocked') + } else { + } + } catch (err) { + console.error('Ошибка при проверке WebApp:', err) + } + }, [router]) +} @@ -8,7 +8,7 @@ import Image from 'next/image' import { Router, useRouter } from 'next/router' import Script from 'next/script' import { signIn } from 'next-auth/react' -import { authTelegram } from '#/features/auth-telegram' +// import { authTelegram } from '#/features/auth-telegram' import { PasswordOptions } from '#/features/register-by-email/lib/constants' import { IEmailForms } from '#/features/register-by-email/model/types' import { useAppSelector } from '#/app/store/store' @@ -60,12 +60,12 @@ const Login: NextPageWithLayout = () => { async function onSubmit(data: any) { setLoading(true) - if (window.sessionStorage.__telegram__initParams !== '{}') { - await authTelegram(data.email, data.password) - setLoading(false) - reset() - return - } + // if (window.sessionStorage.__telegram__initParams !== '{}') { + // await authTelegram(data.email, data.password) + // setLoading(false) + // reset() + // return + // } const resp = await signIn('credentials', { username: data.email, @@ -103,7 +103,7 @@ const Login: NextPageWithLayout = () => { return ( <> -