From a780e720912d9b33600e3c7c927a8cdcfe99c31b Mon Sep 17 00:00:00 2001
From: Jessie Keck <jessie.keck@gmail.com>
Date: Thu, 28 Feb 2019 20:15:34 -0800
Subject: [PATCH] Map maximize/minimize window action dispatches to
 WindowTopBar props.

---
 src/components/WindowTopBar.js | 24 +++++++++++++-----------
 src/containers/WindowTopBar.js |  3 +++
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/src/components/WindowTopBar.js b/src/components/WindowTopBar.js
index ff47ee710..fdddf9677 100644
--- a/src/components/WindowTopBar.js
+++ b/src/components/WindowTopBar.js
@@ -5,6 +5,7 @@ import IconButton from '@material-ui/core/IconButton';
 import MenuIcon from '@material-ui/icons/MenuSharp';
 import CloseIcon from '@material-ui/icons/CloseSharp';
 import FullscreenIcon from '@material-ui/icons/FullscreenSharp';
+import FullscreenExitIcon from '@material-ui/icons/FullscreenExitSharp';
 import Toolbar from '@material-ui/core/Toolbar';
 import AppBar from '@material-ui/core/AppBar';
 import classNames from 'classnames';
@@ -18,21 +19,14 @@ import ns from '../config/css-ns';
  * WindowTopBar
  */
 export class WindowTopBar extends Component {
-  /**
-   * maximizeWindow
-   * @return
-  */
-  maximizeWindow() {
-    console.log('maximized!');
-  }
-
   /**
    * render
    * @return
    */
   render() {
     const {
-      closeWindow, windowId, classes, toggleWindowSideBar, t, manifestTitle,
+      closeWindow, windowId, classes, toggleWindowSideBar,
+      t, manifestTitle, maximizeWindow, maximized, minimizeWindow,
     } = this.props;
     return (
       <AppBar position="relative">
@@ -54,9 +48,11 @@ export class WindowTopBar extends Component {
             color="inherit"
             className={ns('window-maximize')}
             aria-label={t('maximizeWindow')}
-            onClick={this.maximizeWindow}
+            onClick={(maximized ? minimizeWindow : maximizeWindow)}
           >
-            <FullscreenIcon />
+            {maximized
+              ? <FullscreenExitIcon />
+              : <FullscreenIcon />}
           </IconButton>
           <IconButton
             color="inherit"
@@ -74,6 +70,9 @@ export class WindowTopBar extends Component {
 
 WindowTopBar.propTypes = {
   manifestTitle: PropTypes.string,
+  maximizeWindow: PropTypes.func,
+  maximized: PropTypes.bool,
+  minimizeWindow: PropTypes.func,
   closeWindow: PropTypes.func.isRequired,
   windowId: PropTypes.string.isRequired,
   classes: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types
@@ -83,5 +82,8 @@ WindowTopBar.propTypes = {
 
 WindowTopBar.defaultProps = {
   manifestTitle: '',
+  maximizeWindow: () => {},
+  maximized: false,
+  minimizeWindow: () => {},
   t: key => key,
 };
diff --git a/src/containers/WindowTopBar.js b/src/containers/WindowTopBar.js
index 871a76678..a082a6e57 100644
--- a/src/containers/WindowTopBar.js
+++ b/src/containers/WindowTopBar.js
@@ -10,6 +10,7 @@ import { WindowTopBar } from '../components/WindowTopBar';
 /** mapStateToProps */
 const mapStateToProps = (state, { windowId }) => ({
   manifestTitle: getManifestTitle(getWindowManifest(state, windowId)),
+  maximized: state.windows[windowId].maximized,
 });
 
 /**
@@ -19,6 +20,8 @@ const mapStateToProps = (state, { windowId }) => ({
  */
 const mapDispatchToProps = (dispatch, { windowId }) => ({
   closeWindow: () => dispatch(actions.closeWindow(windowId)),
+  maximizeWindow: () => dispatch(actions.maximizeWindow(windowId)),
+  minimizeWindow: () => dispatch(actions.minimizeWindow(windowId)),
   toggleWindowSideBar: () => dispatch(actions.toggleWindowSideBar(windowId)),
 });
 
-- 
GitLab