import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; import { defineMessages, intlShape } from 'react-intl'; import { TitleBar } from 'electron-react-titlebar'; import injectSheet from 'react-jss'; import InfoBar from '../ui/InfoBar'; import { Component as DelayApp } from '../../features/delayApp'; import { Component as BasicAuth } from '../../features/basicAuth'; import { Component as ShareFranz } from '../../features/shareFranz'; import ErrorBoundary from '../util/ErrorBoundary'; // import globalMessages from '../../i18n/globalMessages'; import { isWindows } from '../../environment'; import AnnouncementScreen from '../../features/announcements/components/AnnouncementScreen'; import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator'; import { workspaceStore } from '../../features/workspaces'; import { announcementActions } from '../../features/announcements/actions'; function createMarkup(HTMLString) { return { __html: HTMLString }; } const messages = defineMessages({ servicesUpdated: { id: 'infobar.servicesUpdated', defaultMessage: '!!!Your services have been updated.', }, updateAvailable: { id: 'infobar.updateAvailable', defaultMessage: '!!!A new update for Franz is available.', }, buttonReloadServices: { id: 'infobar.buttonReloadServices', defaultMessage: '!!!Reload services', }, changelog: { id: 'infobar.buttonChangelog', defaultMessage: '!!!Changelog', }, buttonInstallUpdate: { id: 'infobar.buttonInstallUpdate', defaultMessage: '!!!Restart & install update', }, requiredRequestsFailed: { id: 'infobar.requiredRequestsFailed', defaultMessage: '!!!Could not load services and user information', }, }); const styles = theme => ({ appContent: { width: `calc(100% + ${theme.workspaces.drawer.width}px)`, transition: 'transform 0.5s ease', transform() { return workspaceStore.isWorkspaceDrawerOpen ? 'translateX(0)' : `translateX(-${theme.workspaces.drawer.width}px)`; }, }, }); @injectSheet(styles) @observer class AppLayout extends Component { static propTypes = { classes: PropTypes.object.isRequired, isFullScreen: PropTypes.bool.isRequired, sidebar: PropTypes.element.isRequired, workspacesDrawer: PropTypes.element.isRequired, services: PropTypes.element.isRequired, children: PropTypes.element, news: MobxPropTypes.arrayOrObservableArray.isRequired, // isOnline: PropTypes.bool.isRequired, showServicesUpdatedInfoBar: PropTypes.bool.isRequired, appUpdateIsDownloaded: PropTypes.bool.isRequired, nextAppReleaseVersion: PropTypes.string, removeNewsItem: PropTypes.func.isRequired, reloadServicesAfterUpdate: PropTypes.func.isRequired, installAppUpdate: PropTypes.func.isRequired, showRequiredRequestsError: PropTypes.bool.isRequired, areRequiredRequestsSuccessful: PropTypes.bool.isRequired, retryRequiredRequests: PropTypes.func.isRequired, areRequiredRequestsLoading: PropTypes.bool.isRequired, darkMode: PropTypes.bool.isRequired, isDelayAppScreenVisible: PropTypes.bool.isRequired, }; static defaultProps = { children: [], nextAppReleaseVersion: null, }; static contextTypes = { intl: intlShape, }; render() { const { classes, isFullScreen, workspacesDrawer, sidebar, services, children, // isOnline, news, showServicesUpdatedInfoBar, appUpdateIsDownloaded, nextAppReleaseVersion, removeNewsItem, reloadServicesAfterUpdate, installAppUpdate, showRequiredRequestsError, areRequiredRequestsSuccessful, retryRequiredRequests, areRequiredRequestsLoading, darkMode, isDelayAppScreenVisible, } = this.props; const { intl } = this.context; return (
{isWindows && !isFullScreen && }
{workspacesDrawer} {sidebar}
{news.length > 0 && news.map(item => ( removeNewsItem({ newsId: item.id })} > ))} {/* {!isOnline && ( {intl.formatMessage(globalMessages.notConnectedToTheInternet)} )} */} {!areRequiredRequestsSuccessful && showRequiredRequestsError && ( {intl.formatMessage(messages.requiredRequestsFailed)} )} {showServicesUpdatedInfoBar && ( {intl.formatMessage(messages.servicesUpdated)} )} {appUpdateIsDownloaded && ( {intl.formatMessage(messages.updateAvailable)} {' '} )} {isDelayAppScreenVisible && ()} {services} {children}
); } } export default AppLayout;