blob: 8da449a46d0b03bf1d8c6c8a36abc961c3ac04dc [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview
* 'settings-user-list' shows a list of users whitelisted on this Chrome OS
* device.
*
* Example:
*
* <settings-user-list prefs="{{prefs}}">
* </settings-user-list>
*/
Polymer({
is: 'settings-user-list',
behaviors: [
CrScrollableBehavior,
I18nBehavior,
settings.RouteObserverBehavior,
],
properties: {
/**
* Current list of whitelisted users.
* @private {!Array<!chrome.usersPrivate.User>}
*/
users_: {
type: Array,
value: function() {
return [];
},
notify: true
},
/**
* Whether the user list is disabled, i.e. that no modifications can be
* made.
* @type {boolean}
*/
disabled: {
type: Boolean,
value: false,
}
},
/** @override */
ready: function() {
chrome.settingsPrivate.onPrefsChanged.addListener(prefs => {
prefs.forEach(function(pref) {
if (pref.key == 'cros.accounts.users') {
chrome.usersPrivate.getWhitelistedUsers(users => {
this.setUsers_(users);
});
}
}, this);
});
},
/** @protected */
currentRouteChanged: function() {
if (settings.getCurrentRoute() == settings.routes.ACCOUNTS) {
chrome.usersPrivate.getWhitelistedUsers(users => {
this.setUsers_(users);
});
}
},
/**
* @param {!chrome.usersPrivate.User} user
* @return {string}
* @private
*/
getUserName_: function(user) {
return user.isOwner ? this.i18n('deviceOwnerLabel', user.name) : user.name;
},
/**
* Helper function that sorts and sets the given list of whitelisted users.
* @param {!Array<!chrome.usersPrivate.User>} users List of whitelisted users.
*/
setUsers_: function(users) {
this.users_ = users;
this.users_.sort(function(a, b) {
if (a.isOwner != b.isOwner) {
return b.isOwner ? 1 : -1;
} else {
return -1;
}
});
this.requestUpdateScroll();
},
/**
* @private
* @param {!{model: !{item: !chrome.usersPrivate.User}}} e
*/
removeUser_: function(e) {
chrome.usersPrivate.removeWhitelistedUser(
e.model.item.email, /* callback */ function() {});
},
/** @private */
shouldHideCloseButton_: function(disabled, isUserOwner) {
return disabled || isUserOwner;
},
/**
* @param {chrome.usersPrivate.User} user
* @private
*/
getProfilePictureUrl_: function(user) {
return 'chrome://userimage/' + user.email + '?id=' + Date.now() +
'&frame=0';
},
/**
* @param {chrome.usersPrivate.User} user
* @private
*/
shouldShowEmail_: function(user) {
return !user.isSupervised && user.name != user.displayEmail;
},
});