diff --git a/.changeset/long-clocks-laugh.md b/.changeset/long-clocks-laugh.md new file mode 100644 index 00000000..4c2c18e5 --- /dev/null +++ b/.changeset/long-clocks-laugh.md @@ -0,0 +1,5 @@ +--- +"@fleek-platform/dashboard": minor +--- + +Added Landinmg Page diff --git a/src/fragments/Home/HomeStyles.ts b/src/fragments/Home/HomeStyles.ts index 7c288055..96261ccb 100644 --- a/src/fragments/Home/HomeStyles.ts +++ b/src/fragments/Home/HomeStyles.ts @@ -23,7 +23,7 @@ export const HomeStyles = { height: '120vh', width: '90vw', - bottom: '-80%', + bottom: '-95%', }), }, Hero: { diff --git a/src/pages/LandingPage/index.tsx b/src/pages/LandingPage/index.tsx index b849ed05..ca594f5c 100644 --- a/src/pages/LandingPage/index.tsx +++ b/src/pages/LandingPage/index.tsx @@ -1,56 +1,58 @@ // TODO: This page can be removed // to favour redirection to website // the user can login from website -import { useEffect } from 'react'; -import { Home } from '@/fragments/Home/Home'; import { App } from '../../fragments/App/App'; import { HomeStyles } from '../../fragments/Home/HomeStyles'; import { LayoutHead } from '@/components'; import { LandingPageProvider } from '@/providers/Providers'; -import { useAuthContext } from '../../providers/AuthProvider'; -import { Navbar } from '../../fragments/App/Navbar/Navbar'; -import { Box, Button } from '@/ui'; -import { ExternalLink, FleekLogo, Link } from '@/components'; -import { routes } from '@fleek-platform/utils-routes'; -import { constants } from '@/constants'; - -const LoginButton = ({ title, handleLogIn }) => ( - -); +import { Box } from '@/ui'; +import { FleekLogo } from '@/components'; +import { + DynamicEmbeddedWidget, + useDynamicContext, +} from '@dynamic-labs/sdk-react-core'; const HomePage = () => { - const auth = useAuthContext(); - - const handleLogIn = () => { - auth.login('dynamic'); - }; - - useEffect(() => { - handleLogIn(); - }, []); + const { sdkHasLoaded } = useDynamicContext(); return ( - - - - - - - - - - - - - - + + +
+ +
+ + + + +
diff --git a/src/providers/DynamicProvider.tsx b/src/providers/DynamicProvider.tsx index a81eacd3..fb792a20 100644 --- a/src/providers/DynamicProvider.tsx +++ b/src/providers/DynamicProvider.tsx @@ -10,7 +10,7 @@ import { secrets } from '@/secrets'; import { useCookies } from './CookiesProvider'; import { useGenerateUserSessionDetailsMutation } from '@/generated/graphqlClient'; -import { useRouter } from 'next/router'; +import { useLoading } from './LoadingProvider'; export type DynamicProviderProps = React.PropsWithChildren<{}>; @@ -22,7 +22,7 @@ export const DynamicProvider: React.FC = ({ const [meQuery] = useMeQuery({ pause: !cookies.values.accessToken }); const [, generateUserSessionDetails] = useGenerateUserSessionDetailsMutation(); - const router = useRouter(); + const { showLoading } = useLoading(); return ( = ({ walletConnectors: [EthereumWalletConnectors], eventsCallbacks: { onAuthSuccess: async ({ authToken }) => { + showLoading(); // TODO: Solved accessToken and projectId here // thus, remove previous handling elsewhere const { data, error } = await generateUserSessionDetails({ diff --git a/src/providers/LoadingProvider.tsx b/src/providers/LoadingProvider.tsx new file mode 100644 index 00000000..997de000 --- /dev/null +++ b/src/providers/LoadingProvider.tsx @@ -0,0 +1,41 @@ +import { createContext, useContext, useState } from 'react'; +import { LoadingFullScreen } from '@/components/Loading'; +import { Box } from '@/ui'; + +type LoadingContextType = { + showLoading: () => void; + hideLoading: () => void; + isLoading: boolean; +}; + +const LoadingContext = createContext(undefined); + +export const useLoading = () => { + const context = useContext(LoadingContext); + if (!context) { + throw new Error('useLoading must be used within a LoadingProvider'); + } + return context; +}; + +export const LoadingProvider: React.FC> = ({ + children, +}) => { + const [isLoading, setIsLoading] = useState(false); + + const showLoading = () => setIsLoading(true); + const hideLoading = () => setIsLoading(false); + + return ( + + + {isLoading && ( + + + + )} + {children} + + + ); +}; diff --git a/src/providers/PermissionsProvider.tsx b/src/providers/PermissionsProvider.tsx index 2ba11675..29884691 100644 --- a/src/providers/PermissionsProvider.tsx +++ b/src/providers/PermissionsProvider.tsx @@ -17,6 +17,8 @@ const [Provider, useContext] = createContext({ export const PermissionsProvider: React.FC = ({ children }) => { const { project: data, loading } = useProjectContext(); + if (!data) return null; + return ( ({ export const ProjectProvider: React.FC> = ({ children, }) => { + const { hideLoading } = useLoading(); const [isLoading, setIsLoading] = useState(true); const auth = useAuthContext(); const router = useRouter(); @@ -112,7 +114,11 @@ export const ProjectProvider: React.FC> = ({ return () => clearTimeout(timer); }, [project, projectsQuery.data]); - if (isLoading || !auth.accessToken) return ; + if (isLoading || !auth.accessToken) { + return ; + } + + hideLoading(); return ( = ({ return ( - - - - - - - - {children} - - - - - - - + + + + + + + + + + {children} + + + + + + + + + ); @@ -52,9 +57,11 @@ export const LandingPageProvider: React.FC = ({ - - {children} - + + + {children} + +