This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/routes/user.js.es6

80 lines
2.3 KiB
JavaScript

var INDEX_STREAM_ROUTES = ["user.deletedPosts", "user.flaggedPosts", "userActivity.index"];
export default Discourse.Route.extend({
titleToken: function() {
var model = this.modelFor('user');
var username = model.get('username');
if (username) {
return [I18n.t("user.profile"), username];
}
},
actions: {
logout: function() {
Discourse.logout();
},
composePrivateMessage: function(user) {
var recipient = user ? user.get('username') : '';
return this.controllerFor('composer').open({
action: Discourse.Composer.PRIVATE_MESSAGE,
usernames: recipient,
archetypeId: 'private_message',
draftKey: 'new_private_message'
});
},
willTransition: function(transition) {
// will reset the indexStream when transitioning to routes that aren't "indexStream"
// otherwise the "header" will jump
var isIndexStream = ~INDEX_STREAM_ROUTES.indexOf(transition.targetName);
this.controllerFor('user').set('indexStream', isIndexStream);
return true;
}
},
model: function(params) {
// If we're viewing the currently logged in user, return that object instead
var currentUser = Discourse.User.current();
if (currentUser && (params.username.toLowerCase() === currentUser.get('username_lower'))) {
return currentUser;
}
return Discourse.User.create({username: params.username});
},
afterModel: function() {
return this.modelFor('user').findDetails();
},
serialize: function(model) {
if (!model) return {};
return { username: (Em.get(model, 'username') || '').toLowerCase() };
},
setupController: function(controller, user) {
controller.set('model', user);
// Add a search context
this.controllerFor('search').set('searchContext', user.get('searchContext'));
},
activate: function() {
this._super();
var user = this.modelFor('user');
Discourse.MessageBus.subscribe("/users/" + user.get('username_lower'), function(data) {
user.loadUserAction(data);
});
},
deactivate: function() {
this._super();
Discourse.MessageBus.unsubscribe("/users/" + this.modelFor('user').get('username_lower'));
// Remove the search context
this.controllerFor('search').set('searchContext', null);
}
});