@@ -0,0 +1 @@
+export * from './use-loading-logs'
\ No newline at end of file
@@ -0,0 +1,18 @@
+import { captureMessage } from '@sentry/nextjs'
+import { useSession } from 'next-auth/react'
+
+export function useLoadingLogs() {
+ const { data } = useSession()
+
+ function onMounted() {
+ if (!data) return captureMessage(`long time loading - session not defined`)
+
+ const { user } = data
+
+ captureMessage(`long time loading - ${user ? user.email : 'unknown email'} - ${new Date().toDateString()} - ${JSON.stringify(data)}`)
+ }
+
+ return {
+ onMounted
+ }
+}
@@ -0,0 +1 @@
+export * from './slow-loading'
\ No newline at end of file
@@ -0,0 +1,33 @@
+.loading {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100dvh;
+
+ &__loader {
+ margin-bottom: 20px;
+ }
+
+ &__box {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ max-width: 300px;
+
+ p {
+ font-weight: 600;
+ font-size: 26px;
+ color: var(--air-color);
+ letter-spacing: 0.06rem;
+ margin-bottom: 5px;
+ }
+
+ span {
+ font-weight: 500;
+ text-align: center;
+ font-size: 14px;
+ color: var(--new-ui-gray-color);
+ margin-bottom: 20px;
+ }
+ }
+}
@@ -0,0 +1,28 @@
+import React, { useEffect } from 'react'
+import styles from './slow-loading.module.scss'
+import { Loader } from '#/shared'
+import { CommonButton } from '#/shared/ui/button'
+import { signOut, useSession } from 'next-auth/react'
+import { captureMessage } from '@sentry/nextjs'
+import { useLoadingLogs } from '../model'
+
+interface SlowLoadingProps {}
+
+export const SlowLoading = ({}: SlowLoadingProps) => {
+ const { onMounted } = useLoadingLogs()
+
+ useEffect(() => {
+ onMounted()
+ }, [])
+
+ return (
+
+
+
Долгая загрузка
+
Предлагаем перезайти
+
signOut()} variant='primary'>
+ Выйти
+
+
+ )
+}
@@ -0,0 +1 @@
+export * from './ui'
\ No newline at end of file
@@ -27,14 +27,9 @@ import { ErrorReportPlate } from '#/features/error-report'
import { CSSTransition, SwitchTransition } from 'react-transition-group'
import { CommonButton } from '#/shared/ui/button'
import styles from './default.module.scss'
+import { SlowLoading } from '#/features/slow-loading'
-export const Layout: React.FC = ({
- children,
- titlePage,
- title = titlePage,
- isLoader,
- device = getDeviceType(),
-}) => {
+export const Layout: React.FC = ({ children, titlePage, title = titlePage, isLoader, device = getDeviceType() }) => {
const { data: sessionData } = useSession()
const appState = useAppSelector((state) => state)
const dispatch = useAppDispatch()
@@ -74,8 +69,7 @@ export const Layout: React.FC = ({
useEffect(() => {
if (!data) return
- if (!data.user || Object.values(data.user).length === 0 || !data.access || !data.refresh)
- logout()
+ if (!data.user || Object.values(data.user).length === 0 || !data.access || !data.refresh) logout()
}, [data])
useEffect(() => {
@@ -84,10 +78,7 @@ export const Layout: React.FC = ({
}, [data])
useEffect(() => {
- if (
- (sessionData && !sessionStorage.getItem('firstRender')) ||
- (sessionData && !localStorage.getItem('global_settings'))
- ) {
+ if ((sessionData && !sessionStorage.getItem('firstRender')) || (sessionData && !localStorage.getItem('global_settings'))) {
dispatch(getUserAccountSettings(sessionData.access))
sessionStorage.setItem('firstRender', 'true')
}
@@ -112,10 +103,7 @@ export const Layout: React.FC = ({
targetDevice: device,
targetType: 'sidemenu',
})
- if (setting)
- setting?.value?.sidemenu_state === 'opened'
- ? setSidemenuDefaultOpen(true)
- : setSidemenuDefaultOpen(false)
+ if (setting) setting?.value?.sidemenu_state === 'opened' ? setSidemenuDefaultOpen(true) : setSidemenuDefaultOpen(false)
}
}, [appState.settings.state])
@@ -124,20 +112,7 @@ export const Layout: React.FC = ({
const transitionRef = useRef(null)
useEffect(() => {
- setTimeout(() => {
- setRequestDelay(true)
- if (userLoading || isLoader || status === 'loading') {
- if (!sessionData)
- return Sentry.captureMessage(`long time loading - session not defined`)
-
- const { user } = sessionData
-
- Sentry.captureMessage(`long time loading
- - ${user ? user.email : 'unknown email'}
- - ${new Date().toDateString()}
- - ${JSON.stringify(sessionData)}`)
- }
- }, 5000)
+ setTimeout(() => setRequestDelay(true), 5000)
}, [])
if (userLoading || isLoader || status === 'loading') {
@@ -151,18 +126,7 @@ export const Layout: React.FC = ({
in={requestDelay}
>
- {requestDelay ? (
-
-
-
Долгая загрузка
-
Предлагаем перезайти
-
- Выйти
-
-
- ) : (
-
- )}
+ {requestDelay ?
:
}
@@ -195,10 +159,7 @@ export const Layout: React.FC = ({
>
{desktop ? (
-
+