[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", "implementation": "UnsupportedBrowserWarning.js",
"depends": [ "notificationService" ] "depends": [ "notificationService", "agentService" ]
} }
], ],
"stylesheets": [ "stylesheets": [

View File

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

View File

@ -43,6 +43,7 @@ define(
var userAgent = $window.navigator.userAgent, var userAgent = $window.navigator.userAgent,
matches = userAgent.match(/iPad|iPhone|Android/i) || []; matches = userAgent.match(/iPad|iPhone|Android/i) || [];
this.userAgent = userAgent;
this.mobileName = matches[0]; this.mobileName = matches[0];
this.$window = $window; this.$window = $window;
} }
@ -91,6 +92,18 @@ define(
return !this.isPortrait(); 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; return AgentService;
} }
); );