diff options
author | Luke Granger-Brown <git@lukegb.com> | 2020-06-18 18:44:52 +0100 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2020-06-27 22:58:21 +0200 |
commit | cf67c78823bd1e7591c2199d51aa3f3fffed73c4 (patch) | |
tree | 4c2d07f0780a61bcde5f3e47c3ebaa2785fec64f /webui/src/layout | |
parent | dfdb5e090b9368d336cb7552c8c462bef243fbb0 (diff) | |
download | git-bug-cf67c78823bd1e7591c2199d51aa3f3fffed73c4.tar.gz |
Refactor webui changes.
Don't use contexts, just raw Apollo, since it's cached anyway.
Change "ReadonlyHidden" to "IfLoggedIn".
Diffstat (limited to 'webui/src/layout')
-rw-r--r-- | webui/src/layout/CurrentIdentity.tsx | 30 | ||||
-rw-r--r-- | webui/src/layout/CurrentIdentityContext.tsx | 6 | ||||
-rw-r--r-- | webui/src/layout/IfLoggedIn.tsx | 14 | ||||
-rw-r--r-- | webui/src/layout/ReadonlyHidden.tsx | 19 | ||||
-rw-r--r-- | webui/src/layout/index.tsx | 6 |
5 files changed, 27 insertions, 48 deletions
diff --git a/webui/src/layout/CurrentIdentity.tsx b/webui/src/layout/CurrentIdentity.tsx index 55060179..21f489ef 100644 --- a/webui/src/layout/CurrentIdentity.tsx +++ b/webui/src/layout/CurrentIdentity.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Avatar from '@material-ui/core/Avatar'; import { makeStyles } from '@material-ui/core/styles'; -import CurrentIdentityContext from './CurrentIdentityContext'; +import { useCurrentIdentityQuery } from './CurrentIdentity.generated'; const useStyles = makeStyles(theme => ({ displayName: { @@ -13,26 +13,18 @@ const useStyles = makeStyles(theme => ({ const CurrentIdentity = () => { const classes = useStyles(); + const { loading, error, data } = useCurrentIdentityQuery(); - return ( - <CurrentIdentityContext.Consumer> - {context => { - if (!context) return null; - const { loading, error, data } = context as any; - - if (error || loading || !data?.repository?.userIdentity) return null; + if (error || loading || !data?.repository?.userIdentity) return null; - const user = data.repository.userIdentity; - return ( - <> - <Avatar src={user.avatarUrl ? user.avatarUrl : undefined}> - {user.displayName.charAt(0).toUpperCase()} - </Avatar> - <div className={classes.displayName}>{user.displayName}</div> - </> - ); - }} - </CurrentIdentityContext.Consumer> + const user = data.repository.userIdentity; + return ( + <> + <Avatar src={user.avatarUrl ? user.avatarUrl : undefined}> + {user.displayName.charAt(0).toUpperCase()} + </Avatar> + <div className={classes.displayName}>{user.displayName}</div> + </> ); }; diff --git a/webui/src/layout/CurrentIdentityContext.tsx b/webui/src/layout/CurrentIdentityContext.tsx deleted file mode 100644 index 78f2f263..00000000 --- a/webui/src/layout/CurrentIdentityContext.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import React from 'react'; - -import { CurrentIdentityQueryResult } from './CurrentIdentity.generated'; - -const Context = React.createContext(null as CurrentIdentityQueryResult | null); -export default Context; diff --git a/webui/src/layout/IfLoggedIn.tsx b/webui/src/layout/IfLoggedIn.tsx new file mode 100644 index 00000000..8b9058dc --- /dev/null +++ b/webui/src/layout/IfLoggedIn.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +import { useCurrentIdentityQuery } from './CurrentIdentity.generated'; + +type Props = { children: React.ReactNode }; +const IfLoggedIn = ({ children }: Props) => { + const { loading, error, data } = useCurrentIdentityQuery(); + + if (error || loading || !data?.repository?.userIdentity) return null; + + return <>{children}</>; +}; + +export default IfLoggedIn; diff --git a/webui/src/layout/ReadonlyHidden.tsx b/webui/src/layout/ReadonlyHidden.tsx deleted file mode 100644 index 9ed0af6a..00000000 --- a/webui/src/layout/ReadonlyHidden.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; - -import CurrentIdentityContext from './CurrentIdentityContext'; - -type Props = { children: React.ReactNode }; -const ReadonlyHidden = ({ children }: Props) => ( - <CurrentIdentityContext.Consumer> - {context => { - if (!context) return null; - const { loading, error, data } = context; - - if (error || loading || !data?.repository?.userIdentity) return null; - - return <>{children}</>; - }} - </CurrentIdentityContext.Consumer> -); - -export default ReadonlyHidden; diff --git a/webui/src/layout/index.tsx b/webui/src/layout/index.tsx index 78ff5ae8..42a0cfc1 100644 --- a/webui/src/layout/index.tsx +++ b/webui/src/layout/index.tsx @@ -2,18 +2,16 @@ import React from 'react'; import CssBaseline from '@material-ui/core/CssBaseline'; -import { useCurrentIdentityQuery } from './CurrentIdentity.generated'; -import CurrentIdentityContext from './CurrentIdentityContext'; import Header from './Header'; type Props = { children: React.ReactNode }; function Layout({ children }: Props) { return ( - <CurrentIdentityContext.Provider value={useCurrentIdentityQuery()}> + <> <CssBaseline /> <Header /> {children} - </CurrentIdentityContext.Provider> + </> ); } |