Introduce the group activity section

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-02-24 19:06:48 +01:00
parent d0567f783d
commit 3fe64a4389
70 changed files with 3224 additions and 70 deletions

View File

@@ -0,0 +1,33 @@
import { IActor, IGroup } from "./actor";
import { IMember } from "./actor/member.model";
import {
ActivityDiscussionSubject,
ActivityEventSubject,
ActivityGroupSubject,
ActivityMemberSubject,
ActivityPostSubject,
ActivityResourceSubject,
ActivityType,
} from "./enums";
import { IEvent } from "./event.model";
import { IPost } from "./post.model";
import { IResource } from "./resource";
export type ActivitySubject =
| ActivityEventSubject
| ActivityPostSubject
| ActivityMemberSubject
| ActivityResourceSubject
| ActivityDiscussionSubject
| ActivityGroupSubject;
export interface IActivity {
id: string;
type: ActivityType;
subject: ActivitySubject;
subjectParams: { key: string; value: string }[];
author: IActor;
group: IGroup;
object: IEvent | IPost | IGroup | IMember | IResource;
insertedAt: string;
}

View File

@@ -10,6 +10,7 @@ import { Address } from "../address.model";
import { ActorType, Openness } from "../enums";
import type { IMember } from "./member.model";
import type { ITodoList } from "../todolist";
import { IActivity } from "../activity.model";
export interface IGroup extends IActor {
members: Paginate<IMember>;
@@ -20,6 +21,7 @@ export interface IGroup extends IActor {
physicalAddress: IAddress;
openness: Openness;
manuallyApprovesFollowers: boolean;
activity: Paginate<IActivity>;
}
export class Group extends Actor implements IGroup {
@@ -41,6 +43,7 @@ export class Group extends Actor implements IGroup {
this.patch(hash);
}
activity: Paginate<IActivity> = { elements: [], total: 0 };
openness: Openness = Openness.INVITE_ONLY;

View File

@@ -182,3 +182,56 @@ export enum GroupVisibility {
export enum AddressSearchType {
ADMINISTRATIVE = "ADMINISTRATIVE",
}
export enum ActivityType {
EVENT = "EVENT",
POST = "POST",
MEMBER = "MEMBER",
RESOURCE = "RESOURCE",
DISCUSSION = "DISCUSSION",
GROUP = "GROUP",
}
export enum ActivityEventSubject {
EVENT_CREATED = "event_created",
EVENT_UPDATED = "event_updated",
EVENT_DELETED = "event_deleted",
}
export enum ActivityPostSubject {
POST_CREATED = "post_created",
POST_UPDATED = "post_updated",
POST_DELETED = "post_deleted",
}
export enum ActivityMemberSubject {
MEMBER_REQUEST = "member_request",
MEMBER_INVITED = "member_invited",
MEMBER_ACCEPTED_INVITATION = "member_accepted_invitation",
MEMBER_REJECTED_INVITATION = "member_rejected_invitation",
MEMBER_ADDED = "member_added",
MEMBER_JOINED = "member_joined",
MEMBER_APPROVED = "member_approved",
MEMBER_UPDATED = "member_updated",
MEMBER_REMOVED = "member_removed",
MEMBER_QUIT = "member_quit",
}
export enum ActivityResourceSubject {
RESOURCE_CREATED = "resource_created",
RESOURCE_UPDATED = "resource_renamed",
RESOURCE_MOVED = "resource_moved",
RESOURCE_DELETED = "resource_deleted",
}
export enum ActivityDiscussionSubject {
DISCUSSION_CREATED = "discussion_created",
DISCUSSION_REPLIED = "discussion_replied",
DISCUSSION_RENAMED = "discussion_renamed",
DISCUSSION_ARCHIVED = "discussion_archived",
DISCUSSION_DELETED = "discussion_deleted",
}
export enum ActivityGroupSubject {
GROUP_CREATED = "group_created",
GROUP_UPDATED = "group_updated",
}