diff --git a/src/renderer/components/FullScreenLoader.tsx b/src/renderer/components/FullScreenLoader.tsx
new file mode 100644
index 0000000..b0b0542
--- /dev/null
+++ b/src/renderer/components/FullScreenLoader.tsx
@@ -0,0 +1,59 @@
+import Box from '@mui/material/Box';
+import Typography from '@mui/material/Typography';
+
+export const FullScreenLoader = ({ message }: { message?: string }) => (
+
+ {/* Градиентное вращающееся кольцо */}
+
+
+ {message && (
+
+ {message}
+
+ )}
+
+);
diff --git a/src/renderer/pages/Login.tsx b/src/renderer/pages/Login.tsx
index 2786fc6..888e0fc 100644
--- a/src/renderer/pages/Login.tsx
+++ b/src/renderer/pages/Login.tsx
@@ -5,12 +5,15 @@ import MemorySlider from '../components/Login/MemorySlider';
import { useNavigate } from 'react-router-dom';
import PopaPopa from '../components/popa-popa';
import useConfig from '../hooks/useConfig';
+import { useState } from 'react';
+import { FullScreenLoader } from '../components/FullScreenLoader';
const Login = () => {
const navigate = useNavigate();
const { config, setConfig, saveConfig, handleInputChange } = useConfig();
const { status, validateSession, refreshSession, authenticateWithElyBy } =
useAuth();
+ const [loading, setLoading] = useState(false);
const authorization = async () => {
console.log('Начинаем процесс авторизации...');
@@ -21,6 +24,7 @@ const Login = () => {
return;
}
+ setLoading(true);
try {
// Проверяем, есть ли сохранённый токен
if (config.accessToken && config.clientToken) {
@@ -85,24 +89,31 @@ const Login = () => {
console.log('Авторизация успешно завершена');
navigate('/');
- } catch (error) {
+ } catch (error: any) {
console.log(`ОШИБКА при авторизации: ${error.message}`);
- // Очищаем недействительные токены при ошибке
saveConfig({
accessToken: '',
clientToken: '',
});
+ } finally {
+ setLoading(false);
}
};
return (
-
-
+ {loading ? (
+
+ ) : (
+ <>
+
+
+ >
+ )}
);
};