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