MCPcopy Create free account
hub / github.com/SplootCode/splootcode / UserHomePage

Function UserHomePage

src/pages/user_home.tsx:77–189  ·  view source on GitHub ↗
(props: UserHomePageProps)

Source from the content-addressed store, hash-verified

75}
76
77export const UserHomePage = (props: UserHomePageProps) => {
78 const history = useHistory()
79 const [projects, setProjects] = useState([])
80 const [saveProjectModalState, setSaveProjectModalState] = useState({ open: false, clonedFrom: null })
81
82 useEffect(() => {
83 props.projectLoader.listProjectMetadata().then((projects) => {
84 setProjects(projects)
85 })
86 }, [])
87
88 const newProject = (clonedFrom?: Project) => {
89 setSaveProjectModalState({
90 open: true,
91 clonedFrom: clonedFrom || null,
92 })
93 }
94
95 const menuItems: MainMenuItem[] = [
96 {
97 name: 'New Project',
98 onClick: () => {
99 newProject()
100 },
101 },
102 {
103 name: 'Import Project',
104 onClick: async () => {
105 const dirHandle = await window.showDirectoryPicker()
106 const proj = await loadProjectFromFolder(dirHandle)
107 setSaveProjectModalState({ open: true, clonedFrom: proj })
108 },
109 },
110 ]
111 return (
112 <React.Fragment>
113 <SaveProjectModal
114 clonedFrom={saveProjectModalState.clonedFrom}
115 newOwner="local"
116 isOpen={saveProjectModalState.open}
117 projectLoader={props.projectLoader}
118 onClose={() => setSaveProjectModalState({ open: false, clonedFrom: null })}
119 onComplete={(owner, projectID) => {
120 setSaveProjectModalState({ open: false, clonedFrom: null })
121 history.push(`/p/${owner}/${projectID}`)
122 }}
123 />
124 <MenuBar menuItems={menuItems}></MenuBar>
125 <Container maxW="container.md" paddingTop={8}>
126 <VStack align="stretch" spacing={10}>
127 <Box>
128 <Flex justifyContent="space-between" marginBottom={2} alignItems="flex-end">
129 <Heading as="h2" size="md" fontSize={'20pt'} py={2}>
130 My projects
131 </Heading>
132 <Button size="lg" colorScheme="purple" height={8} my={2} onClick={() => newProject()}>
133 New Project
134 </Button>

Callers

nothing calls this directly

Calls 4

loadProjectFromFolderFunction · 0.90
newProjectFunction · 0.85
listProjectMetadataMethod · 0.80
deleteProjectMethod · 0.45

Tested by

no test coverage detected