Skip to content

Commit

Permalink
[default-layout] Make sure sidecar is implemented before invoking
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas Drevon committed Dec 12, 2019
1 parent f959745 commit 357b262
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
11 changes: 9 additions & 2 deletions packages/@sanity/default-layout/src/components/NavBar.js
Expand Up @@ -7,7 +7,7 @@ import HamburgerIcon from 'part:@sanity/base/hamburger-icon'
import ToolSwitcher from 'part:@sanity/default-layout/tool-switcher'
import SearchIcon from 'part:@sanity/base/search-icon'
import {StateLink} from 'part:@sanity/base/router'
import {SidecarToggleButton, isSidecarEnabled} from 'part:@sanity/default-layout/sidecar?'
import sidecar from 'part:@sanity/default-layout/sidecar?'
import {HAS_SPACES} from '../util/spaces'
import Branding from './Branding'
import LoginStatus from './LoginStatus'
Expand All @@ -16,6 +16,13 @@ import SearchContainer from './SearchContainer'
import SpaceSwitcher from './SpaceSwitcher'
import styles from './styles/NavBar.css'

let isSidecarEnabled
let SidecarToggleButton
if (sidecar) {
isSidecarEnabled = sidecar.isSidecarEnabled
SidecarToggleButton = sidecar.SidecarToggleButton
}

function NavBar(props) {
const {
searchIsOpen,
Expand Down Expand Up @@ -105,7 +112,7 @@ function NavBar(props) {
<div className={styles.loginStatus} ref={onSetLoginStatusElement}>
<LoginStatus onLogout={onUserLogout} user={user} />
</div>
{isSidecarEnabled() && (
{isSidecarEnabled && isSidecarEnabled() && (
<div className={styles.sidecarStatus}>
<SidecarToggleButton />
</div>
Expand Down
13 changes: 10 additions & 3 deletions packages/@sanity/default-layout/src/components/Sidecar.js
@@ -1,17 +1,24 @@
/* eslint-disable prefer-template */
import React from 'react'
import {SidecarLayout, isSidecarEnabled} from 'part:@sanity/default-layout/sidecar?'
import sidecar from 'part:@sanity/default-layout/sidecar?'
import {isSidecarOpenSetting} from 'part:@sanity/default-layout/sidecar-datastore'
import styles from './styles/Sidecar.css'

let isSidecarEnabled
let SidecarLayout
if (sidecar) {
isSidecarEnabled = sidecar.isSidecarEnabled
SidecarLayout = sidecar.SidecarLayout
}

class Sidecar extends React.PureComponent {
state = {
isOpen: true,
isVisible: true
}

componentDidMount() {
if (isSidecarEnabled()) {
if (isSidecarEnabled && isSidecarEnabled()) {
this.subscription = isSidecarOpenSetting.listen().subscribe(isOpen => {
this.setState({isOpen: isOpen !== false})
})
Expand Down Expand Up @@ -48,7 +55,7 @@ class Sidecar extends React.PureComponent {
render() {
const {isOpen, isVisible} = this.state

if (isSidecarEnabled()) {
if (isSidecarEnabled && isSidecarEnabled()) {
return (
<div className={`${styles.root} ${isOpen ? styles.isOpen : ''}`}>
{isVisible && <SidecarLayout />}
Expand Down

0 comments on commit 357b262

Please sign in to comment.