Skip to content

Commit

Permalink
[fix] some Compatibility bugs of Next.js SSR
Browse files Browse the repository at this point in the history
  • Loading branch information
TechQuery committed Aug 31, 2023
1 parent b44d54c commit 9e150f1
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 70 deletions.
5 changes: 3 additions & 2 deletions components/AdminFrame.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import { Role } from '@ideamall/data-model';
import { Icon } from 'idea-react';
import { observer } from 'mobx-react';
import dynamic from 'next/dynamic';
import { PropsWithChildren, PureComponent } from 'react';
import { Container, Nav } from 'react-bootstrap';

import { i18n } from '../models/Translation';
import userStore from '../models/User';
import { MainNavigator } from './MainNavigator';
import { PageHead } from './PageHead';
import { SessionBox } from './SessionBox';

const { location } = globalThis,
const SessionBox = dynamic(() => import('./SessionBox'), { ssr: false }),
{ location } = globalThis,
{ t } = i18n;

@observer
Expand Down
4 changes: 2 additions & 2 deletions components/Goods/StyleEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { computed, makeObservable, observable } from 'mobx';
import { observer } from 'mobx-react';
import { observePropsState } from 'mobx-react-helper';
import { BadgeInput } from 'mobx-restful-table';
import { MouseEvent, PureComponent } from 'react';
import { Component, MouseEvent } from 'react';
import { Button, Col, Form, Row } from 'react-bootstrap';

import { i18n } from '../../models/Translation';
Expand All @@ -18,7 +18,7 @@ export interface GoodsStyleEditorProps {

@observer
@observePropsState
export class GoodsStyleEditor extends PureComponent<GoodsStyleEditorProps> {
export class GoodsStyleEditor extends Component<GoodsStyleEditorProps> {
constructor(props: GoodsStyleEditorProps) {
super(props);
makeObservable(this);
Expand Down
10 changes: 5 additions & 5 deletions components/MainNavigator.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Option, Select } from 'idea-react';
import { observer } from 'mobx-react';
import Link from 'next/link';
import dynamic from 'next/dynamic';
import { FC } from 'react';
import {
Container,
Expand All @@ -11,7 +11,8 @@ import {
} from 'react-bootstrap';

import { i18n, LanguageName } from '../models/Translation';
import { UserMenu } from './UserMenu';

const UserMenu = dynamic(() => import('./UserMenu'), { ssr: false });

const Name = process.env.NEXT_PUBLIC_SITE_NAME || '';

Expand All @@ -37,9 +38,8 @@ export const MainNavigator: FC<MainNavigatorProps> = observer(

<Navbar.Collapse id="navbar-inner">
<Nav className="me-auto">
<Link href="/component" passHref>
<Nav.Link>{t('component')}</Nav.Link>
</Link>
<Nav.Link href="/component">{t('component')}</Nav.Link>

<Nav.Link target="_blank" href="https://github.com/IdeaMall/PWA">
{t('source_code')}
</Nav.Link>
Expand Down
4 changes: 2 additions & 2 deletions components/SessionBox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { computed } from 'mobx';
import { observer } from 'mobx-react';
import { observePropsState } from 'mobx-react-helper';
import Head from 'next/head';
import { MouseEvent, PropsWithChildren, PureComponent } from 'react';
import { Component, MouseEvent, PropsWithChildren } from 'react';

import userStore, { guard } from '../models/User';

Expand All @@ -15,7 +15,7 @@ export type SessionBoxProps = PropsWithChildren<{

@observer
@observePropsState
export class SessionBox extends PureComponent<SessionBoxProps> {
export default class SessionBox extends Component<SessionBoxProps> {
declare observedProps: SessionBoxProps;

@computed
Expand Down
33 changes: 17 additions & 16 deletions components/UserMenu.tsx
Original file line number Diff line number Diff line change
@@ -1,31 +1,32 @@
import { Role } from '@ideamall/data-model';
import { observer } from 'mobx-react';
import dynamic from 'next/dynamic';
import { FC } from 'react';
import { Button, Dropdown, DropdownButton } from 'react-bootstrap';

import { i18n } from '../models/Translation';
import userStore from '../models/User';
import { SessionBox } from './SessionBox';

const { t } = i18n;
const SessionBox = dynamic(() => import('./SessionBox'), { ssr: false }),
{ t } = i18n;

export const UserMenu: FC = observer(() => {
const UserMenu: FC = observer(() => {
const { session } = userStore;

return (
<SessionBox>
{session ? (
<DropdownButton title={session.nickName || session.mobilePhone}>
{!session.roles?.includes(Role.Client) && (
<Dropdown.Item href="/admin">{t('dashboard')}</Dropdown.Item>
)}
<Dropdown.Item onClick={() => userStore.signOut()}>
{t('sign_out')}
</Dropdown.Item>
</DropdownButton>
) : (
<Button>{t('sign_in')}</Button>
return session ? (
<DropdownButton title={session.nickName || session.mobilePhone}>
{!session.roles?.includes(Role.Client) && (
<Dropdown.Item href="/admin">{t('dashboard')}</Dropdown.Item>
)}
<Dropdown.Item onClick={() => userStore.signOut()}>
{t('sign_out')}
</Dropdown.Item>
</DropdownButton>
) : (
<SessionBox>
<Button>{t('sign_in')}</Button>
</SessionBox>
);
});

export default UserMenu;
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
"less": "^4.2.0",
"less-loader": "^11.1.3",
"lodash": "^4.17.21",
"mobx": "^6.10.1",
"mobx": "^6.10.2",
"mobx-i18n": "^0.4.1",
"mobx-react": "^9.0.1",
"mobx-react-helper": "^0.2.5",
"mobx-react-helper": "^0.2.7",
"mobx-restful": "^0.6.11",
"mobx-restful-table": "^1.1.2",
"next": "^13.4.19",
Expand Down
82 changes: 41 additions & 41 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 comment on commit 9e150f1

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deploy preview for idea-mall ready!

✅ Preview
https://idea-mall-9vwa72ae7-techquery.vercel.app

Built with commit 9e150f1.
This pull request is being automatically deployed with vercel-action

Please sign in to comment.