51 lines
1,002 B
JavaScript
51 lines
1,002 B
JavaScript
class Group {
|
|
static fromData(host, content) {
|
|
if (typeof content === "string") {
|
|
content = JSON.parse(content);
|
|
}
|
|
var group = new Group();
|
|
group.host = host;
|
|
group.data = content;
|
|
return group;
|
|
}
|
|
|
|
getHandle() {
|
|
return "@" + this.getUsername() + "@" + this.host;
|
|
}
|
|
|
|
getAvatarUrl() {
|
|
return this.data.avatar?.url;
|
|
}
|
|
getBannerUrl() {
|
|
return this.data.banner?.url;
|
|
}
|
|
getUsername() {
|
|
return this.data.preferredUsername;
|
|
}
|
|
|
|
getLocationString() {
|
|
return this.data.physicalAddress?.description;
|
|
}
|
|
|
|
getIcsUrl() {
|
|
return this.data.url + "/feed/ics";
|
|
}
|
|
getAtomUrl() {
|
|
return this.data.url + "/feed/atom";
|
|
}
|
|
|
|
getEvents() {
|
|
var events = [];
|
|
for (var evt in this.data.organizedEvents?.elements) {
|
|
events.push(Event.fromData(this.host, this.data.organizedEvents.elements[evt]));
|
|
}
|
|
return events;
|
|
}
|
|
|
|
canBeEditedBy(role) {
|
|
return role === ROLE.ADMINISTRATOR;
|
|
}
|
|
canManageEvents(role) {
|
|
return role === ROLE.ADMINISTRATOR || role === ROLE.MODERATOR;
|
|
}
|
|
}
|