apps/web: support dark theme in tma

This commit is contained in:
vchikalkin 2024-12-27 11:54:38 +03:00
parent d8704aa4b5
commit f3cb557ab0
3 changed files with 8 additions and 3 deletions

View File

@ -2,11 +2,13 @@
'use client';
import { getTelegramUser } from '@/mocks/get-telegram-user';
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 { data: session, status } = useSession();
useTheme();
useEffect(() => {
if (status === 'authenticated') {

View File

@ -1,6 +1,7 @@
'use client';
import { initData, isMiniAppDark, useSignal } from '@telegram-apps/sdk-react';
import { signIn, useSession } from 'next-auth/react';
import { useTheme } from 'next-themes';
import { redirect } from 'next/navigation';
import { useEffect } from 'react';
@ -8,8 +9,11 @@ export default function Auth() {
const initDataUser = useSignal(initData.user);
const isDark = isMiniAppDark();
const { data: session, status } = useSession();
const { setTheme } = useTheme();
useEffect(() => {
setTheme(isDark ? 'dark' : 'light');
if (status === 'authenticated') {
redirect('/profile');
}
@ -21,7 +25,7 @@ export default function Auth() {
telegramId: String(initDataUser.id),
});
}
}, [initDataUser, status]);
}, [initDataUser, isDark, setTheme, status]);
if (status === 'loading') {
return <div>Loading Auth...</div>;

View File

@ -1,5 +1,5 @@
'use client';
import { ThemeProvider as NextThemesProvider, useTheme } from 'next-themes';
import { ThemeProvider as NextThemesProvider } from 'next-themes';
import { type ComponentProps, useEffect, useState } from 'react';
/**
@ -10,7 +10,6 @@ export function ThemeProvider({
...props
}: Readonly<ComponentProps<typeof NextThemesProvider>>) {
const [mounted, setMounted] = useState(false);
useTheme();
useEffect(() => {
setMounted(true);