|
|
@ -1,16 +1,15 @@ |
|
|
|
import React, { useState, useEffect } from "react"; |
|
|
|
import React, { useState, useEffect, createContext } from "react"; |
|
|
|
import type { FunctionComponent } from "react"; |
|
|
|
import type { FunctionComponent, PropsWithChildren } from "react"; |
|
|
|
import type { Container, ContainerUri, LeafUri } from "@ldo/solid"; |
|
|
|
import type { Container, LeafUri } from "@ldo/solid"; |
|
|
|
import { useSolidAuth, useLdo } from "@ldo/solid-react"; |
|
|
|
import { useSolidAuth, useLdo } from "@ldo/solid-react"; |
|
|
|
|
|
|
|
|
|
|
|
export interface BuildMainContainerChildProps { |
|
|
|
export const MainContainerContext = createContext<Container | undefined>( |
|
|
|
mainContainerUri: ContainerUri; |
|
|
|
undefined, |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
export const BuildMainContainer: FunctionComponent<{ |
|
|
|
export const MainContainerProvider: FunctionComponent<PropsWithChildren> = ({ |
|
|
|
child: FunctionComponent<BuildMainContainerChildProps>; |
|
|
|
children, |
|
|
|
}> = ({ child }) => { |
|
|
|
}) => { |
|
|
|
const Child = child; |
|
|
|
|
|
|
|
const [mainContainer, setMainContainer] = useState<Container | undefined>(); |
|
|
|
const [mainContainer, setMainContainer] = useState<Container | undefined>(); |
|
|
|
const { session } = useSolidAuth(); |
|
|
|
const { session } = useSolidAuth(); |
|
|
|
const { getResource } = useLdo(); |
|
|
|
const { getResource } = useLdo(); |
|
|
@ -49,10 +48,9 @@ export const BuildMainContainer: FunctionComponent<{ |
|
|
|
} |
|
|
|
} |
|
|
|
}, [session.webId]); |
|
|
|
}, [session.webId]); |
|
|
|
|
|
|
|
|
|
|
|
if (!session.webId || !mainContainer) { |
|
|
|
return ( |
|
|
|
// Return blank screen
|
|
|
|
<MainContainerContext.Provider value={mainContainer}> |
|
|
|
return <p>Loading</p>; |
|
|
|
{children} |
|
|
|
} |
|
|
|
</MainContainerContext.Provider> |
|
|
|
|
|
|
|
); |
|
|
|
return <Child mainContainerUri={mainContainer.uri} />; |
|
|
|
|
|
|
|
}; |
|
|
|
}; |