node-groupme
Version:
The only GroupMe API library that isn't a million years old.
46 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("..");
class MemberManager extends __1.BaseManager {
constructor(client, group) {
super(client, __1.Member);
this.group = group;
this.former = new __1.FormerMemberManager(client, group);
}
fetch(id) {
if (typeof id === 'string') {
return this.fetchId(id);
}
return this.fetchAll();
}
fetchId(id) {
throw new Error('Method not implemented.');
}
async fetchAll() {
// The /members endpoint is reserved for admins, so to be safe we just fetch the group instead
const groupResponse = await this.client.rest.api('GET', `groups/${this.group.id}`);
const batch = new __1.Collection();
groupResponse.members?.forEach(data => {
const user = this.client.users._add({
id: data.user_id,
avatar_url: data.image_url,
name: data.name,
});
const member = this._upsert(new __1.Member(this.client, this.group, user, data));
batch.set(member.memberID, member);
});
return batch;
}
add(ids) {
throw new Error('Method not implemented.');
}
async remove(member) {
await this.client.rest.api('POST', `groups/${this.group.id}/members/${member.memberID}/remove`);
const formerMember = new __1.FormerMember(this.client, this.group, member.user, member, __1.FormerMemberState.Removed);
this.former._upsert(formerMember);
this._remove(member);
return formerMember;
}
}
exports.default = MemberManager;
//# sourceMappingURL=MemberManager.js.map