blob: 8ea10e15295da0fb2100c3d9c233ebdffb365fcc [file] [log] [blame]
var _ = require('lodash')
module.exports = function NavigationCtrl($scope, $rootScope) {
var faviconIsSet = false
function setUrlFavicon(url) {
var FAVICON_BASE_URL = '//www.google.com/s2/favicons?domain_url='
$scope.urlFavicon = FAVICON_BASE_URL + url
faviconIsSet = true
}
function resetFavicon() {
$scope.urlFavicon = require('./default-favicon.png')
faviconIsSet = false
}
resetFavicon()
$scope.textUrlChanged = function() {
if (faviconIsSet) {
resetFavicon()
}
}
function addHttp(textUrl) {
// Check for '://' because a protocol-less URL might include
// a username:password combination.
// Ignores also any query parameter because it may contain a http:// inside.
return (textUrl.replace(/\?.*/, '').indexOf('://') === -1 ? 'http://' : ''
) + textUrl
}
$scope.blurUrl = false
$scope.openURL = function() {
$scope.blurUrl = true
$rootScope.screenFocus = true
var url = addHttp($scope.textURL)
setUrlFavicon(url)
return $scope.control.openBrowser(url, $scope.browser)
}
function setCurrentBrowser(browser) {
if (browser && browser.apps) {
var currentBrowser = {}
if (browser.selected) {
var selectedBrowser = _.first(browser.apps, 'selected')
if (!_.isEmpty(selectedBrowser)) {
currentBrowser = selectedBrowser
}
} else {
var defaultBrowser = _.find(browser.apps, {name: 'Browser'})
if (defaultBrowser) {
currentBrowser = defaultBrowser
} else {
currentBrowser = _.first(browser.apps)
}
}
$rootScope.browser = currentBrowser
}
}
setCurrentBrowser($scope.device ? $scope.device.browser : null)
$scope.$watch('device.browser', function(newValue, oldValue) {
if (newValue !== oldValue) {
setCurrentBrowser(newValue)
}
}, true)
$scope.clearSettings = function() {
var browser = $scope.browser
$scope.control.clearBrowser(browser)
}
}