|
1 | 1 | import React from "react"
|
| 2 | +import useSWR from "swr" |
2 | 3 | import { makeStyles } from "@material-ui/core/styles"
|
3 | 4 | import { useRouter } from "next/router"
|
4 |
| -import { Navbar } from "../../components/Navbar" |
5 |
| -import { Footer } from "../../components/Page" |
6 |
| -import { useUser } from "../../contexts/UserContext" |
| 5 | +import { Navbar } from "../../../components/Navbar" |
| 6 | +import { Footer } from "../../../components/Page" |
| 7 | +import { useUser } from "../../../contexts/UserContext" |
| 8 | +import { firstOrItem } from "../../../util/array" |
| 9 | +import { ErrorSummary } from "../../../components/ErrorSummary" |
| 10 | +import { FullScreenLoader } from "../../../components/Loader/FullScreenLoader" |
7 | 11 |
|
8 | 12 | //import { Workspace } from "../../components/Workspace"
|
9 | 13 | //import { MockWorkspace } from "../../test_helpers"
|
10 | 14 |
|
| 15 | +import * as API from "../../../api" |
| 16 | + |
11 | 17 | const WorkspacesPage: React.FC = () => {
|
12 | 18 | const styles = useStyles()
|
13 | 19 | const router = useRouter()
|
14 | 20 | const { me, signOut } = useUser(true)
|
15 | 21 |
|
16 | 22 | const { user: userQueryParam, workspace: workspaceQueryParam } = router.query
|
17 | 23 |
|
18 |
| - const userParam = firstOrDefault(userQueryParam, null) |
19 |
| - const workspaceParam = firstOrDefault(workspaceQueryParam, null) |
| 24 | + const userParam = firstOrItem(userQueryParam, null) |
| 25 | + const workspaceParam = firstOrItem(workspaceQueryParam, null) |
| 26 | + |
| 27 | + const { data: workspace, error: workspaceError } = useSWR<API.Workspace, Error>(() => `/api/v2/workspaces/${(userParam as any).toString()}/${(workspaceParam as any).toString()}`) |
| 28 | + |
| 29 | + if (workspaceError) { |
| 30 | + return <ErrorSummary error={workspaceError} /> |
| 31 | + } |
| 32 | + |
| 33 | + if (!me || !workspace) { |
| 34 | + return <FullScreenLoader /> |
| 35 | + } |
20 | 36 |
|
21 | 37 | return (
|
22 | 38 | <div className={styles.root}>
|
@@ -44,3 +60,4 @@ const useStyles = makeStyles(() => ({
|
44 | 60 | }))
|
45 | 61 |
|
46 | 62 | export default WorkspacesPage
|
| 63 | + |
0 commit comments