[Common UI] Only show warning for unsupported browsers

This commit is contained in:
Victor Woeltjen 2015-12-04 14:08:42 -08:00
parent a6ceae4045
commit 37890280ae
3 changed files with 27 additions and 7 deletions

View File

@ -22,7 +22,7 @@
},
{
"implementation": "UnsupportedBrowserWarning.js",
"depends": [ "notificationService" ]
"depends": [ "notificationService", "agentService" ]
}
],
"stylesheets": [

View File

@ -36,7 +36,9 @@ define(
"This software has been developed and tested",
"using the latest Google Chrome,",
"and may be unstable in other browsers."
].join(" ");
].join(" "),
MOBILE_BROWSER = "Safari",
DESKTOP_BROWSER = "Chrome";
/**
* Shows a warning if a user's browser is unsupported.
@ -45,11 +47,16 @@ define(
* @param {NotificationService} notificationService the notification
* service
*/
function UnsupportedBrowserWarning(notificationService) {
notificationService.alert({
title: WARNING_TITLE,
actionText: WARNING_DESCRIPTION
});
function UnsupportedBrowserWarning(notificationService, agentService) {
var testToBrowser = agentService.isMobile() ?
MOBILE_BROWSER : DESKTOP_BROWSER;
if (!agentService.isBrowser(testToBrowser)) {
notificationService.alert({
title: WARNING_TITLE,
actionText: WARNING_DESCRIPTION
});
}
}
return UnsupportedBrowserWarning;

View File

@ -43,6 +43,7 @@ define(
var userAgent = $window.navigator.userAgent,
matches = userAgent.match(/iPad|iPhone|Android/i) || [];
this.userAgent = userAgent;
this.mobileName = matches[0];
this.$window = $window;
}
@ -91,6 +92,18 @@ define(
return !this.isPortrait();
};
/**
* Check if the user agent matches a certain named device,
* as indicated by checking for a case-insensitive substring
* match.
* @param {string} name the name to check for
* @returns {boolean} true if the user agent includes that name
*/
AgentService.prototype.isBrowser = function (name) {
name = name.toLowerCase();
return this.userAgent.toLowerCase().indexOf(name) !== -1;
};
return AgentService;
}
);