2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2025-09-04 08:47:37 +08:00
discourse/app/assets/javascripts/discourse/routes/preferences.js.es6

75 lines
2.2 KiB
JavaScript

import RestrictedUserRoute from "discourse/routes/restricted-user";
import showModal from 'discourse/lib/show-modal';
import { popupAjaxError } from 'discourse/lib/ajax-error';
export default RestrictedUserRoute.extend({
model() {
return this.modelFor('user');
},
setupController(controller, user) {
controller.setProperties({
model: user
});
},
actions: {
showTwoFactorModal() {
showModal('second-factor-intro');
},
showAvatarSelector() {
showModal('avatar-selector');
// all the properties needed for displaying the avatar selector modal
const props = this.modelFor('user').getProperties(
'id',
'email',
'username',
'avatar_template',
'system_avatar_template',
'gravatar_avatar_template',
'custom_avatar_template',
'system_avatar_upload_id',
'gravatar_avatar_upload_id',
'custom_avatar_upload_id'
);
switch (props.avatar_template) {
case props.system_avatar_template:
props.selected = "system";
break;
case props.gravatar_avatar_template:
props.selected = "gravatar";
break;
default:
props.selected = "uploaded";
}
this.controllerFor('avatar-selector').setProperties(props);
},
saveAvatarSelection() {
const user = this.modelFor('user'),
controller = this.controllerFor('avatar-selector'),
selectedUploadId = controller.get("selectedUploadId"),
selectedAvatarTemplate = controller.get("selectedAvatarTemplate"),
type = controller.get("selected");
user.pickAvatar(selectedUploadId, type, selectedAvatarTemplate)
.then(() => {
user.setProperties(controller.getProperties(
'system_avatar_template',
'gravatar_avatar_template',
'custom_avatar_template'
));
bootbox.alert(I18n.t("user.change_avatar.cache_notice"));
}).catch(popupAjaxError);
// saves the data back
controller.send('closeModal');
},
}
});