@@ -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 ( <> - + {/* */} { borderRadius: '13px', textTransform: 'none', width: '100%', - transition: 'all 0.3s ease-in-out', + transition: 'all 0.3s ease-in-out', boxShadow: 'none', height: 50, '&:hover': { @@ -0,0 +1 @@ +export { default as TelegramBlockedPage } from './telegram-blocked' @@ -0,0 +1,34 @@ +.box { + display: flex; + flex-direction: column; + align-items: center; + + &__messagebox { + margin-top: 40vh; + display: flex; + flex-direction: column; + align-items: center; + gap: 35px; + } + &__message { + font-size: 18px; + font-weight: 600; + max-width: 500px; + text-align: center; + } + &__button { + padding: 15px 25px; + cursor: pointer; + box-sizing: content-box; + background-color: var(--air-color); + color: var(--new-ui-text-color); + border-radius: 12px; + font-weight: 500; + font-size: 15px; + transition: color 0.3s ease-in-out, background-color 0.3s ease-in-out; + &:hover { + background-color: var(--text-color-purple); + color: var(--new-ui-text-color); + } + } +} @@ -0,0 +1,37 @@ +import { NextPageWithLayout } from '#/pages/_app' +import Image from 'next/image' +import Link from 'next/link' +import styles from './telegram-blocked.module.scss' + +const TelegramBlockedPage: NextPageWithLayout = () => { + return ( + + + + + + Работа Telegram WebApp приостановлена, но вы можете воспользоваться + веб-версией + + + + + Открыть в браузере + + + + ) +} + +export default TelegramBlockedPage @@ -0,0 +1 @@ +export * from './ui'
+ Работа Telegram WebApp приостановлена, но вы можете воспользоваться + веб-версией +