Skip to content

Commit 96f1702

Browse files
committed
fix: passing initial data to mobx store
1 parent f013105 commit 96f1702

File tree

5 files changed

+29
-35
lines changed

5 files changed

+29
-35
lines changed

saas/api/server/models/User.ts

+1
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ class UserClass extends mongoose.Model {
302302
slug,
303303
isSignedupViaGoogle: true,
304304
defaultTeamSlug: '',
305+
darkTheme: false,
305306
});
306307

307308
const emailTemplate = await getEmailTemplate('welcome', { userName: displayName });

saas/app/components/layout/index.tsx

+7-29
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ function LayoutWrapper({
3535
isMobile,
3636
firstGridItem,
3737
store,
38-
isThemeDark,
3938
}: {
4039
children: React.ReactNode;
4140
isMobile: boolean;
4241
firstGridItem: boolean;
4342
store: Store;
44-
isThemeDark: boolean;
4543
}) {
44+
const isThemeDark = store.currentUser ? store.currentUser.darkTheme : true;
45+
4646
return (
4747
<React.Fragment>
4848
<Grid
@@ -162,9 +162,9 @@ function LayoutWrapper({
162162

163163
type Props = {
164164
children: React.ReactNode;
165+
store?: Store;
165166
isMobile?: boolean;
166167
firstGridItem?: boolean;
167-
store?: Store;
168168
teamRequired?: boolean;
169169
};
170170

@@ -174,8 +174,6 @@ class Layout extends React.Component<Props> {
174174

175175
const { currentUser, currentTeam } = store;
176176

177-
const isThemeDark = currentUser && currentUser.darkTheme === true;
178-
179177
// console.log(this.props.store.currentUser.darkTheme);
180178

181179
// const isThemeDark = false;
@@ -186,12 +184,7 @@ class Layout extends React.Component<Props> {
186184

187185
if (!currentUser) {
188186
return (
189-
<LayoutWrapper
190-
firstGridItem={firstGridItem}
191-
isMobile={isMobile}
192-
isThemeDark={isThemeDark}
193-
store={store}
194-
>
187+
<LayoutWrapper firstGridItem={firstGridItem} isMobile={isMobile} store={store}>
195188
<Grid item sm={12} xs={12}>
196189
{children}
197190
</Grid>
@@ -202,12 +195,7 @@ class Layout extends React.Component<Props> {
202195
if (!currentTeam) {
203196
if (teamRequired) {
204197
return (
205-
<LayoutWrapper
206-
firstGridItem={firstGridItem}
207-
isMobile={isMobile}
208-
isThemeDark={isThemeDark}
209-
store={store}
210-
>
198+
<LayoutWrapper firstGridItem={firstGridItem} isMobile={isMobile} store={store}>
211199
<Grid item sm={10} xs={12}>
212200
<div style={{ padding: '20px' }}>
213201
Select existing team or create a new team.
@@ -224,12 +212,7 @@ class Layout extends React.Component<Props> {
224212
} else {
225213
// console.log('team not required');
226214
return (
227-
<LayoutWrapper
228-
firstGridItem={firstGridItem}
229-
isMobile={isMobile}
230-
isThemeDark={isThemeDark}
231-
store={store}
232-
>
215+
<LayoutWrapper firstGridItem={firstGridItem} isMobile={isMobile} store={store}>
233216
<Grid item sm={10} xs={12}>
234217
{children}
235218
</Grid>
@@ -239,12 +222,7 @@ class Layout extends React.Component<Props> {
239222
}
240223

241224
return (
242-
<LayoutWrapper
243-
firstGridItem={firstGridItem}
244-
isMobile={isMobile}
245-
isThemeDark={isThemeDark}
246-
store={store}
247-
>
225+
<LayoutWrapper firstGridItem={firstGridItem} isMobile={isMobile} store={store}>
248226
<Grid item sm={firstGridItem ? 10 : 12} xs={12}>
249227
<div>
250228
{isMobile || store.currentUrl.includes('create-team') ? null : (

saas/app/lib/store/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ class Store {
4747

4848
this.isServer = !!isServer;
4949

50+
// console.log('initialState.user', initialState.user);
51+
5052
this.setCurrentUser(initialState.user);
5153

5254
this.currentUrl = initialState.currentUrl || '';

saas/app/pages/_app.tsx

+16-3
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,22 @@ import { getInitialDataApiMethod } from '../lib/api/team-member';
1212
import { isMobile } from '../lib/isMobile';
1313
import { getStore, initializeStore, Store } from '../lib/store';
1414

15-
import type { AppProps } from 'next/app';
15+
// import type { AppProps } from 'next/app';
1616
import { NextPage, NextPageContext } from 'next';
1717

18-
function MyApp({ Component, pageProps }: AppProps) {
19-
const store: Store = initializeStore(pageProps.initialState);
18+
// add types
19+
type Props = {
20+
Component: NextPage;
21+
pageProps: any;
22+
initialState: any;
23+
};
24+
25+
function MyApp({ Component, pageProps, initialState }: Props) {
26+
// console.log('initialState', initialState);
27+
28+
const store: Store = initializeStore(initialState);
29+
30+
// console.log('store.currentUser.email', store.currentUser);
2031

2132
const isThemeDark = store.currentUser ? store.currentUser.darkTheme : true;
2233

@@ -133,6 +144,8 @@ MyApp.getInitialProps = async ({
133144
const team =
134145
initialData && initialData.teams && initialData.teams.find((t) => t.slug === selectedTeamSlug);
135146

147+
// console.log('userObj', userObj);
148+
136149
return {
137150
...appProps,
138151
initialState: { user: userObj, currentUrl: ctx.asPath, team, teamSlug, ...initialData },

saas/app/yarn.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -1332,9 +1332,9 @@ camelcase@^6.2.0:
13321332
integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==
13331333

13341334
caniuse-lite@^1.0.30001202, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001228, caniuse-lite@^1.0.30001280:
1335-
version "1.0.30001282"
1336-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz#38c781ee0a90ccfe1fe7fefd00e43f5ffdcb96fd"
1337-
integrity sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==
1335+
version "1.0.30001342"
1336+
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz"
1337+
integrity sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==
13381338

13391339
[email protected], chalk@^2.0.0:
13401340
version "2.4.2"

0 commit comments

Comments
 (0)