From aeea1dff9da6bde935b4ef5d46791eac02cd7174 Mon Sep 17 00:00:00 2001 From: maciek Date: Fri, 24 Feb 2023 14:01:43 +0100 Subject: [PATCH] chore: add pseudo random generator --- apps/trading/components/app-loader/app-loader.tsx | 2 +- apps/trading/pages/_app.page.tsx | 7 ++++--- libs/ui-toolkit/src/components/loader/loader.tsx | 14 ++++++++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/apps/trading/components/app-loader/app-loader.tsx b/apps/trading/components/app-loader/app-loader.tsx index d8f0495c5..caeae848f 100644 --- a/apps/trading/components/app-loader/app-loader.tsx +++ b/apps/trading/components/app-loader/app-loader.tsx @@ -12,7 +12,7 @@ import type { ReactNode } from 'react'; import { AppFailure } from './app-failure'; import { Web3Provider } from './web3-provider'; -const DynamicLoader = dynamic(() => import('../preloader/preloader'), { +export const DynamicLoader = dynamic(() => import('../preloader/preloader'), { loading: () => <>Loading..., }); diff --git a/apps/trading/pages/_app.page.tsx b/apps/trading/pages/_app.page.tsx index 9d0626f03..e6b8a4796 100644 --- a/apps/trading/pages/_app.page.tsx +++ b/apps/trading/pages/_app.page.tsx @@ -25,7 +25,7 @@ import './styles.css'; import './gen-styles.scss'; import { useGlobalStore, usePageTitleStore } from '../stores'; import { Footer } from '../components/footer'; -import { useMemo, useState } from 'react'; +import { useMemo, useState} from 'react'; import DialogsContainer from './dialogs-container'; import ToastsManager from './toasts-manager'; import { HashRouter, useLocation, useSearchParams } from 'react-router-dom'; @@ -33,7 +33,8 @@ import { Connectors } from '../lib/vega-connectors'; import { ViewingBanner } from '../components/viewing-banner'; import { Banner } from '../components/banner'; import classNames from 'classnames'; -import { AppLoader } from '../components/app-loader'; +import { AppLoader, DynamicLoader } from '../components/app-loader'; + const DEFAULT_TITLE = t('Welcome to Vega trading!'); @@ -115,7 +116,7 @@ function VegaTradingApp(props: AppProps) { // Prevent HashRouter from being server side rendered as it // relies on presence of document object if (status === 'default') { - return null; + return ; } return ( diff --git a/libs/ui-toolkit/src/components/loader/loader.tsx b/libs/ui-toolkit/src/components/loader/loader.tsx index 48208a2e7..47b8e6ede 100644 --- a/libs/ui-toolkit/src/components/loader/loader.tsx +++ b/libs/ui-toolkit/src/components/loader/loader.tsx @@ -1,5 +1,13 @@ import classNames from 'classnames'; -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; + +const pseudoRandom = (seed: number) => { + let value = seed; + return () => { + value = (value * 16807) % 2147483647; + return value / 1000000000; + }; +}; export interface LoaderProps { size?: 'small' | 'large'; @@ -35,6 +43,8 @@ export const Loader = ({ size === 'small' ? 'w-[15px] h-[15px]' : 'w-[50px] h-[50px]'; const items = size === 'small' ? 9 : 16; + const generate = useMemo(() => pseudoRandom(1), []); + return (
0.75 ? 1 : 0, + opacity: generate() > 1.5 ? 1 : 0, }} /> );