User settings (#1337)

* user settings bruh

* remove development dump

* emit stuff

* i am so done

* Update ClientUserSettings.js

* modularize

* Update ClientUserSettings.js

* Update Constants.js

* Update ClientUserSettings.js

* Update RESTMethods.js

* Update ClientUserSettings.js

* <.<
This commit is contained in:
Gus Caplan
2017-04-05 15:03:33 -05:00
committed by Crawl
parent 5d85de0883
commit 801633b970
11 changed files with 291 additions and 12 deletions

View File

@@ -49,7 +49,8 @@ class ClientManager {
* @param {number} time The interval in milliseconds at which heartbeat packets should be sent
*/
setupKeepAlive(time) {
this.heartbeatInterval = this.client.setInterval(() => this.client.ws.heartbeat(true), time);
this.heartbeatInterval = time;
this.client.setInterval(() => this.client.ws.heartbeat(true), time);
}
destroy() {

View File

@@ -876,6 +876,10 @@ class RESTMethods {
})
);
}
patchUserSettings(data) {
return this.rest.makeRequest('patch', Constants.Endpoints.User('@me').settings, true, data);
}
}
module.exports = RESTMethods;

View File

@@ -36,6 +36,7 @@ class WebSocketPacketManager {
this.register(Constants.WSEvents.PRESENCE_UPDATE, require('./handlers/PresenceUpdate'));
this.register(Constants.WSEvents.USER_UPDATE, require('./handlers/UserUpdate'));
this.register(Constants.WSEvents.USER_NOTE_UPDATE, require('./handlers/UserNoteUpdate'));
this.register(Constants.WSEvents.USER_SETTINGS_UPDATE, require('./handlers/UserSettingsUpdate'));
this.register(Constants.WSEvents.VOICE_STATE_UPDATE, require('./handlers/VoiceStateUpdate'));
this.register(Constants.WSEvents.TYPING_START, require('./handlers/TypingStart'));
this.register(Constants.WSEvents.MESSAGE_CREATE, require('./handlers/MessageCreate'));

View File

@@ -9,8 +9,9 @@ class ReadyHandler extends AbstractHandler {
client.ws.heartbeat();
data.user.user_settings = data.user_settings;
const clientUser = new ClientUser(client, data.user);
clientUser.settings = data.user_settings;
client.user = clientUser;
client.readyAt = new Date();
client.users.set(clientUser.id, clientUser);

View File

@@ -0,0 +1,18 @@
const AbstractHandler = require('./AbstractHandler');
const Constants = require('../../../../util/Constants');
class UserSettingsUpdateHandler extends AbstractHandler {
handle(packet) {
const client = this.packetManager.client;
client.user.settings.patch(packet.d);
client.emit(Constants.Events.USER_SETTINGS_UPDATE, client.user.settings);
}
}
/**
* Emitted when the client user's settings update
* @event Client#clientUserSettingsUpdate
* @param {ClientUserSettings} clientUserSettings The new client user settings
*/
module.exports = UserSettingsUpdateHandler;