7c11807c14
Also: * Refactor interacting with a remote event so that you can interact with a remote group as well * Add a setting for group admins to pick between an open and invite-only group * Fix new groups without posts/todos/resources/events/conversations URL set * Repair local groups that haven't got their posts/todos/resources/events/conversations URL set * Add a scheduled job to refresh remote groups every hour * Add a user setting to pick when to receive notifications when there's new members to approve (will be used when this feature is available) * Fix pagination for members Signed-off-by: Thomas Citharel <tcit@tcit.fr>
47 lines
1006 B
TypeScript
47 lines
1006 B
TypeScript
import { Actor, IActor } from "./actor";
|
|
import { EventModel, IEvent } from "./event.model";
|
|
|
|
export enum ParticipantRole {
|
|
NOT_APPROVED = "NOT_APPROVED",
|
|
NOT_CONFIRMED = "NOT_CONFIRMED",
|
|
REJECTED = "REJECTED",
|
|
PARTICIPANT = "PARTICIPANT",
|
|
MODERATOR = "MODERATOR",
|
|
ADMINISTRATOR = "ADMINISTRATOR",
|
|
CREATOR = "CREATOR",
|
|
}
|
|
|
|
export interface IParticipant {
|
|
id?: string;
|
|
role: ParticipantRole;
|
|
actor: IActor;
|
|
event: IEvent;
|
|
metadata: { cancellationToken?: string; message?: string };
|
|
insertedAt?: Date;
|
|
}
|
|
|
|
export class Participant implements IParticipant {
|
|
id?: string;
|
|
|
|
event!: IEvent;
|
|
|
|
actor!: IActor;
|
|
|
|
role: ParticipantRole = ParticipantRole.NOT_APPROVED;
|
|
|
|
metadata = {};
|
|
|
|
insertedAt?: Date;
|
|
|
|
constructor(hash?: IParticipant) {
|
|
if (!hash) return;
|
|
|
|
this.id = hash.id;
|
|
this.event = new EventModel(hash.event);
|
|
this.actor = new Actor(hash.actor);
|
|
this.role = hash.role;
|
|
this.metadata = hash.metadata;
|
|
this.insertedAt = hash.insertedAt;
|
|
}
|
|
}
|