node-groupme
Version:
The only GroupMe API library that isn't a million years old.
61 lines • 1.86 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const groupme_api_types_1 = require("groupme-api-types");
const __1 = require("..");
class Member extends __1.Base {
constructor(client, group, user, data) {
super(client, user.id);
this.user = user;
this.group = group;
this.memberID = data.id;
this.nickname = data.nickname;
this.image_url = data.image_url;
this.muted = data.muted;
// this.autokicked = data.autokicked
this.roles = data.roles;
}
_patch(data) {
this.user._patch({
name: data.name,
// don't bother updating the user avatar because we don't know whether it's real or not
});
if (data.nickname !== undefined)
this.nickname = data.nickname;
if (data.image_url !== undefined)
this.image_url = data.image_url;
if (data.muted !== undefined)
this.muted = data.muted;
if (data.roles !== undefined)
this.roles = data.roles;
return this;
}
get isAdmin() {
return this.roles.includes(groupme_api_types_1.MemberRole.Admin) || this.isOwner;
}
get isOwner() {
return this.user.id === this.group.creatorID;
}
get canLeaveGroup() {
return !this.isOwner;
}
get canUpdateGroup() {
return this.isAdmin || !this.group.closed;
}
get canAddMembers() {
return this.isAdmin || !this.group.closed;
}
get canRemoveMembers() {
return this.isAdmin || !this.group.closed;
}
get canDeleteGroup() {
return this.isOwner;
}
get canTransferGroup() {
return this.isOwner;
}
async remove() {
return this.group.members.remove(this);
}
}
exports.default = Member;
//# sourceMappingURL=Member.js.map