mirror of
https://github.com/discourse/discourse.git
synced 2025-02-10 23:45:33 +08:00
71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
/**
|
|
Handles routes related to users.
|
|
|
|
@class UserRoute
|
|
@extends Discourse.Route
|
|
@namespace Discourse
|
|
@module Discourse
|
|
**/
|
|
Discourse.UserRoute = Discourse.Route.extend({
|
|
|
|
actions: {
|
|
logout: function() {
|
|
Discourse.logout();
|
|
},
|
|
|
|
composePrivateMessage: function() {
|
|
var user = this.modelFor('user');
|
|
return this.controllerFor('composer').open({
|
|
action: Discourse.Composer.PRIVATE_MESSAGE,
|
|
usernames: user.get('username'),
|
|
archetypeId: 'private_message',
|
|
draftKey: 'new_private_message'
|
|
});
|
|
}
|
|
},
|
|
|
|
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(params) {
|
|
if (!params) return {};
|
|
return { username: Em.get(params, '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);
|
|
}
|
|
|
|
});
|