* add basic profile page * apps/web: detect telegram/browser support browser (dev only) * apps/web: add dark mode * apps/web: support dark theme in tma * apps/web: add loading spinner remove dev info from page * apps\web\app\(auth)\page.tsx: remove useState * app/web: handle update profile name * move debounce functional to hook * add role checkbox
32 lines
870 B
TypeScript
32 lines
870 B
TypeScript
/* eslint-disable promise/prefer-await-to-then */
|
|
'use client';
|
|
import { getTelegramUser } from '@/mocks/get-telegram-user';
|
|
import { LoadingSpinner } from '@repo/ui/components/ui/spinner';
|
|
import { signIn, useSession } from 'next-auth/react';
|
|
import { useTheme } from 'next-themes';
|
|
import { redirect } from 'next/navigation';
|
|
import { useEffect } from 'react';
|
|
|
|
export default function Auth() {
|
|
const { status } = useSession();
|
|
useTheme();
|
|
|
|
useEffect(() => {
|
|
if (status === 'authenticated') {
|
|
redirect('/profile');
|
|
}
|
|
|
|
if (status === 'unauthenticated' && process.env.NODE_ENV === 'development') {
|
|
getTelegramUser().then((user) => {
|
|
signIn('telegram', {
|
|
callbackUrl: '/profile',
|
|
redirect: false,
|
|
telegramId: String(user?.id),
|
|
});
|
|
});
|
|
}
|
|
}, [status]);
|
|
|
|
return <LoadingSpinner />;
|
|
}
|