diff --git a/dashboard/Apps/AppsIndex.react.js b/dashboard/Apps/AppsIndex.react.js
index 426352b3c3..9e20e99c5f 100644
--- a/dashboard/Apps/AppsIndex.react.js
+++ b/dashboard/Apps/AppsIndex.react.js
@@ -63,17 +63,24 @@ let Metric = (props) => {
let AppCard = ({
app,
icon,
-}) =>
history.pushState(null, html`/apps/${app.slug}/browser`)}>
- {icon ?
: null}
-
-
-
-
-
-
{app.name}
-
Server version: {app.serverInfo.parseServerVersion || 'unknown'}
-
-
+}) => {
+ let canBrowse = app.serverInfo.error ? null : () => history.pushState(null, html`/apps/${app.slug}/browser`);
+ let versionMessage = app.serverInfo.error ?
+ Server not reachable: {app.serverInfo.error.toString()}
:
+ Server version: {app.serverInfo.parseServerVersion || 'unknown'}
;
+
+ return
+ {icon ?
: null}
+
+
+
+
+
+
+}
export default class AppsIndex extends React.Component {
constructor() {
diff --git a/dashboard/Dashboard.js b/dashboard/Dashboard.js
index cbc14f4104..3868f0abc1 100644
--- a/dashboard/Dashboard.js
+++ b/dashboard/Dashboard.js
@@ -139,6 +139,29 @@ class Dashboard extends React.Component {
).then(serverInfo => {
app.serverInfo = serverInfo;
return app;
+ }, error => {
+ if (error.code === 100) {
+ app.serverInfo = {
+ error: 'unable to connect to server',
+ enabledFeatures: {},
+ parseServerVersion: "unknown"
+ }
+ return Parse.Promise.as(app);
+ } else if (error.code === 107) {
+ app.serverInfo = {
+ error: 'server version too low',
+ enabledFeatures: {},
+ parseServerVersion: "unknown"
+ }
+ return Parse.Promise.as(app);
+ } else {
+ app.serverInfo = {
+ error: 'unknown error',
+ enabledFeatures: {},
+ parseServerVersion: "unknown"
+ }
+ return Parse.Promise.as(app);
+ }
});
}
});