Skip to content

Commit 1ef934a

Browse files
committed
Refactoring Layout / AppFrame
1 parent a4b32e5 commit 1ef934a

File tree

9 files changed

+37
-23
lines changed

9 files changed

+37
-23
lines changed

client/components/Layout.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import * as React from 'react';
2+
import {AppFrame} from './AppFrame';
3+
4+
export const Layout: React.SFC = ({children}) => <AppFrame>{children}</AppFrame>;

client/components/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export * from './AppFrame';
2+
export * from './Layout';

client/with/withAuthAdmin.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import gql from 'graphql-tag';
44
import Router from 'next/router';
55
import cookie from 'cookie';
66
import {Account, Query} from '@graphql-model';
7-
import {NextDocumentContext} from 'next/document';
7+
import {DocumentProps, NextDocumentContext} from 'next/document';
88

99
interface LoggedInUserResponse {
1010
readonly loggedInUser: Pick<Account, 'id' | 'firstName' | 'lastName'>;
@@ -49,7 +49,7 @@ export interface WithAuthAdminProps extends LoggedInUserResponse {
4949
readonly logout: (client: ApolloClient<any>) => () => Promise<void>;
5050
}
5151

52-
export const withAuthAdmin = (BaseComponent: React.ComponentType<WithAuthAdminProps>) => {
52+
export const withAuthAdmin = (BaseComponent: React.ComponentType<WithAuthAdminProps> & {getInitialProps?(ctx: NextDocumentContext): DocumentProps}) => {
5353
return class extends React.Component<LoggedInUserResponse> {
5454
handleOnLogout = (apolloClient: ApolloClient<any>) => async () => {
5555
document.cookie = cookie.serialize('token', '', {
@@ -65,8 +65,8 @@ export const withAuthAdmin = (BaseComponent: React.ComponentType<WithAuthAdminPr
6565
// If not signed in, send them somewhere more useful
6666
await redirect('/login', context);
6767
}
68-
69-
return {loggedInUser};
68+
const props = BaseComponent.getInitialProps ? await BaseComponent.getInitialProps(context) : {};
69+
return {...props, loggedInUser};
7070
}
7171

7272
render() {

client/with/withMaterialUi.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import {CssBaseline, MuiThemeProvider, PaletteType} from '@material-ui/core';
22
import * as React from 'react';
3-
4-
import {AppFrame} from '../components';
53
import {paletteType, savePaletteType, ThemeContext, ThemeContextType} from '../contexts';
64
import {PageContext, StylesContext} from '../styles/StylesContext';
75

@@ -56,11 +54,9 @@ export const withMaterialUi = (BaseComponent: React.ComponentClass & {getInitial
5654
<JssProvider jss={jss} registry={sheetsRegistry} generateClassName={generateClassName}>
5755
<MuiThemeProvider theme={theme} sheetsManager={sheetsManager}>
5856
<CssBaseline />
59-
<AppFrame>
60-
<ThemeContext.Provider value={this.state}>
61-
<BaseComponent {...this.props} />
62-
</ThemeContext.Provider>
63-
</AppFrame>
57+
<ThemeContext.Provider value={this.state}>
58+
<BaseComponent {...this.props} />
59+
</ThemeContext.Provider>
6460
</MuiThemeProvider>
6561
</JssProvider>
6662
);

pages/_app.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ Router.onRouteChangeError = () => NProgress.done();
1717
const {Container, default: App} = require('next/app');
1818

1919
class AldaApp extends App {
20+
static async getInitialProps({Component, ctx}: any) {
21+
return {
22+
pageProps: {
23+
...(Component.getInitialProps ? await Component.getInitialProps(ctx) : {}),
24+
},
25+
};
26+
}
27+
2028
render() {
2129
const {Component, pageProps, apolloClient} = this.props;
2230
return (

pages/_document.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type ContextWithLocale = NextDocumentContext & {req: {locale: string; localeData
2121

2222
export default class extends Document {
2323
static async getInitialProps({renderPage, req: {locale, localeDataScript}}: ContextWithLocale) {
24-
const pageContext = StylesContext.getPageContext('dark');
24+
const pageContext = StylesContext.getPageContext('light');
2525
const page = renderPage((Component: any) => (props) => (
2626
<JssProvider registry={pageContext.sheetsRegistry} generateClassName={pageContext.generateClassName}>
2727
<Component pageContext={pageContext} {...props} />

pages/admin/index.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
import * as React from 'react';
22
import {ApolloConsumer} from 'react-apollo';
33
import {withAuthAdmin, WithAuthAdminProps} from '../../client/with';
4+
import {Layout} from '../../client/components';
45

56
class Page extends React.Component<WithAuthAdminProps> {
67
render() {
78
const {logout, loggedInUser} = this.props;
89
return (
9-
<ApolloConsumer>
10-
{(client) => (
11-
<div>
12-
Hello {loggedInUser.firstName}!<br />
13-
<button onClick={logout(client)}>Sign out</button>
14-
</div>
15-
)}
16-
</ApolloConsumer>
10+
<Layout>
11+
<ApolloConsumer>
12+
{(client) => (
13+
<div>
14+
Hello {loggedInUser.firstName}!<br />
15+
<button onClick={logout(client)}>Sign out</button>
16+
</div>
17+
)}
18+
</ApolloConsumer>
19+
</Layout>
1720
);
1821
}
1922
}

pages/index.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ import * as React from 'react';
22
import {FormattedMessage} from 'react-intl';
33
import {Typography} from '@material-ui/core';
44
import {Lang} from '../client/Lang';
5+
import {Layout} from '../client/components';
56

67
export default class extends React.Component {
78
render() {
89
return (
9-
<div>
10+
<Layout>
1011
<Typography>
1112
<FormattedMessage id={Lang.TITLE} />
1213
</Typography>
13-
</div>
14+
</Layout>
1415
);
1516
}
1617
}

pages/login/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import * as React from 'react';
2+
import {Layout} from '../../client/components';
23

34
export default class extends React.Component {
45
render() {
5-
return <div>Login...</div>;
6+
return <Layout>Login...</Layout>;
67
}
78
}

0 commit comments

Comments
 (0)