/** * This is the main entry point for the Treasury application. * Page route gets passed in through params, along with all other page props. */ const { page, ...passProps } = props; const { getUserDaos } = VM.require( "widgets.treasury-factory.near/widget/lib.common" ); // Import our modules const { AppLayout } = VM.require( `treasury-factory.near/widget/components.templates.AppLayout` ) || { AppLayout: () => <></> }; const { ThemeContainer } = VM.require( `treasury-factory.near/widget/config.css` ) || { ThemeContainer: () => <></>, }; const { Theme } = VM.require( `widgets.treasury-factory.near/widget/components.templates.AppLayout` ) || { Theme: () => <></>, }; if (typeof getUserDaos !== "function") { return <></>; } const propsToSend = { ...passProps }; const [isLoading, setIsLoading] = useState(true); useEffect(() => { setTimeout(() => { setIsLoading(false); }, 1000); }, []); function updateTreasuryDrafts(treasuries) { Storage.set("TREASURY_DRAFTS", JSON.stringify(treasuries)); } function updateCurrentDraft(treasury) { Storage.set("CURRENT_DRAFT", JSON.stringify(treasury)); } function Page() { if (!page) { const accountId = context.accountId; const userDaos = getUserDaos(accountId)?.body; if (Array.isArray(userDaos) && userDaos.length > 0) { page = "my-treasuries"; } } const routes = (page ?? "").split("."); if (isLoading) { return <></>; } switch (routes[0]) { case "my-treasuries": { return ( <Widget src="treasury-factory.near/widget/pages.treasury.MyTreasuries" props={{ ...propsToSend, updateTreasuryDrafts, updateCurrentDraft }} /> ); } default: return ( <Widget src="treasury-factory.near/widget/pages.treasury.Create" props={{ ...propsToSend, updateTreasuryDrafts, updateCurrentDraft }} /> ); } } return ( <Theme> <ThemeContainer> <AppLayout> <Page /> </AppLayout> </ThemeContainer> </Theme> );