aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/layout/AppLayout.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/layout/AppLayout.js')
-rw-r--r--src/components/layout/AppLayout.js16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js
index b7f7722dd..d5febfaf4 100644
--- a/src/components/layout/AppLayout.js
+++ b/src/components/layout/AppLayout.js
@@ -14,8 +14,10 @@ import ErrorBoundary from '../util/ErrorBoundary';
14// import globalMessages from '../../i18n/globalMessages'; 14// import globalMessages from '../../i18n/globalMessages';
15 15
16import { isWindows } from '../../environment'; 16import { isWindows } from '../../environment';
17import AnnouncementScreen from '../../features/announcements/components/AnnouncementScreen';
17import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator'; 18import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator';
18import { workspaceStore } from '../../features/workspaces'; 19import { workspaceStore } from '../../features/workspaces';
20import { announcementActions } from '../../features/announcements/actions';
19 21
20function createMarkup(HTMLString) { 22function createMarkup(HTMLString) {
21 return { __html: HTMLString }; 23 return { __html: HTMLString };
@@ -71,6 +73,7 @@ class AppLayout extends Component {
71 // isOnline: PropTypes.bool.isRequired, 73 // isOnline: PropTypes.bool.isRequired,
72 showServicesUpdatedInfoBar: PropTypes.bool.isRequired, 74 showServicesUpdatedInfoBar: PropTypes.bool.isRequired,
73 appUpdateIsDownloaded: PropTypes.bool.isRequired, 75 appUpdateIsDownloaded: PropTypes.bool.isRequired,
76 nextAppReleaseVersion: PropTypes.string,
74 removeNewsItem: PropTypes.func.isRequired, 77 removeNewsItem: PropTypes.func.isRequired,
75 reloadServicesAfterUpdate: PropTypes.func.isRequired, 78 reloadServicesAfterUpdate: PropTypes.func.isRequired,
76 installAppUpdate: PropTypes.func.isRequired, 79 installAppUpdate: PropTypes.func.isRequired,
@@ -80,10 +83,12 @@ class AppLayout extends Component {
80 areRequiredRequestsLoading: PropTypes.bool.isRequired, 83 areRequiredRequestsLoading: PropTypes.bool.isRequired,
81 darkMode: PropTypes.bool.isRequired, 84 darkMode: PropTypes.bool.isRequired,
82 isDelayAppScreenVisible: PropTypes.bool.isRequired, 85 isDelayAppScreenVisible: PropTypes.bool.isRequired,
86 isAnnouncementVisible: PropTypes.bool.isRequired,
83 }; 87 };
84 88
85 static defaultProps = { 89 static defaultProps = {
86 children: [], 90 children: [],
91 nextAppReleaseVersion: null,
87 }; 92 };
88 93
89 static contextTypes = { 94 static contextTypes = {
@@ -102,6 +107,7 @@ class AppLayout extends Component {
102 news, 107 news,
103 showServicesUpdatedInfoBar, 108 showServicesUpdatedInfoBar,
104 appUpdateIsDownloaded, 109 appUpdateIsDownloaded,
110 nextAppReleaseVersion,
105 removeNewsItem, 111 removeNewsItem,
106 reloadServicesAfterUpdate, 112 reloadServicesAfterUpdate,
107 installAppUpdate, 113 installAppUpdate,
@@ -111,6 +117,7 @@ class AppLayout extends Component {
111 areRequiredRequestsLoading, 117 areRequiredRequestsLoading,
112 darkMode, 118 darkMode,
113 isDelayAppScreenVisible, 119 isDelayAppScreenVisible,
120 isAnnouncementVisible,
114 } = this.props; 121 } = this.props;
115 122
116 const { intl } = this.context; 123 const { intl } = this.context;
@@ -178,14 +185,19 @@ class AppLayout extends Component {
178 <span className="mdi mdi-information" /> 185 <span className="mdi mdi-information" />
179 {intl.formatMessage(messages.updateAvailable)} 186 {intl.formatMessage(messages.updateAvailable)}
180 {' '} 187 {' '}
181 <a href="https://meetfranz.com/changelog" target="_blank"> 188 <button
189 className="info-bar__inline-button"
190 type="button"
191 onClick={() => announcementActions.show({ targetVersion: nextAppReleaseVersion })}
192 >
182 <u>{intl.formatMessage(messages.changelog)}</u> 193 <u>{intl.formatMessage(messages.changelog)}</u>
183 </a> 194 </button>
184 </InfoBar> 195 </InfoBar>
185 )} 196 )}
186 {isDelayAppScreenVisible && (<DelayApp />)} 197 {isDelayAppScreenVisible && (<DelayApp />)}
187 <BasicAuth /> 198 <BasicAuth />
188 <ShareFranz /> 199 <ShareFranz />
200 {isAnnouncementVisible && (<AnnouncementScreen />)}
189 {services} 201 {services}
190 </div> 202 </div>
191 </div> 203 </div>