fix(Presence): account for multiple activities everywhere (#3703)

* fix(Presence): account for multiple activities everywhere

* refactor(Presence): make initialization of 'activities' more readable
This commit is contained in:
SpaceEEC
2020-01-19 13:05:45 +01:00
committed by GitHub
parent cbb8db3058
commit f501d06c0d
3 changed files with 19 additions and 12 deletions

View File

@@ -68,7 +68,7 @@ class ClientPresence extends Presence {
}; };
if ((status || afk || since) && !activity) { if ((status || afk || since) && !activity) {
packet.game = this.activity; packet.game = this.activities[0] || null;
} }
if (packet.game) { if (packet.game) {

View File

@@ -149,7 +149,7 @@ class ClientUser extends Structures.get('User') {
* @example * @example
* // Set the client user's activity * // Set the client user's activity
* client.user.setActivity('discord.js', { type: 'WATCHING' }) * client.user.setActivity('discord.js', { type: 'WATCHING' })
* .then(presence => console.log(`Activity set to ${presence.activity.name}`)) * .then(presence => console.log(`Activity set to ${presence.activities[0].name}`))
* .catch(console.error); * .catch(console.error);
*/ */
setActivity(name, options = {}) { setActivity(name, options = {}) {

View File

@@ -85,11 +85,17 @@ class Presence {
*/ */
this.status = data.status || this.status || 'offline'; this.status = data.status || this.status || 'offline';
/** if (data.activities) {
* The activities of this presence /**
* @type {Activity[]} * The activities of this presence
*/ * @type {Activity[]}
this.activities = data.activities ? data.activities.map(activity => new Activity(this, activity)) : []; */
this.activities = data.activities.map(activity => new Activity(this, activity));
} else if (data.activity || data.game) {
this.activities = [new Activity(this, data.game || data.activity)];
} else {
this.activities = [];
}
/** /**
* The devices this presence is on * The devices this presence is on
@@ -105,7 +111,7 @@ class Presence {
_clone() { _clone() {
const clone = Object.assign(Object.create(this), this); const clone = Object.assign(Object.create(this), this);
if (this.activity) clone.activity = this.activity._clone(); if (this.activities) clone.activities = this.activities.map(activity => activity._clone());
return clone; return clone;
} }
@@ -118,10 +124,11 @@ class Presence {
return this === presence || ( return this === presence || (
presence && presence &&
this.status === presence.status && this.status === presence.status &&
this.activity ? this.activity.equals(presence.activity) : !presence.activity && this.activities.length === presence.activities.length &&
this.clientStatus.web === presence.clientStatus.web && this.activities.every((activity, index) => activity.equals(presence.activities[index])) &&
this.clientStatus.mobile === presence.clientStatus.mobile && this.clientStatus.web === presence.clientStatus.web &&
this.clientStatus.desktop === presence.clientStatus.desktop this.clientStatus.mobile === presence.clientStatus.mobile &&
this.clientStatus.desktop === presence.clientStatus.desktop
); );
} }