mobilistache/src/model/group.js
2025-07-09 10:31:47 +02:00

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;
}
}