@@ -3,8 +3,9 @@ import { Paginate } from "../paginate";
|
||||
import { IResource } from "../resource";
|
||||
import { ITodoList } from "../todos";
|
||||
import { IEvent } from "../event.model";
|
||||
import { IConversation } from "../conversations";
|
||||
import { IDiscussion } from "../discussions";
|
||||
import { IPerson } from "./person.model";
|
||||
import { IPost } from "../post.model";
|
||||
|
||||
export enum MemberRole {
|
||||
NOT_APPROVED = "NOT_APPROVED",
|
||||
@@ -20,7 +21,7 @@ export interface IGroup extends IActor {
|
||||
members: Paginate<IMember>;
|
||||
resources: Paginate<IResource>;
|
||||
todoLists: Paginate<ITodoList>;
|
||||
conversations: Paginate<IConversation>;
|
||||
discussions: Paginate<IDiscussion>;
|
||||
organizedEvents: Paginate<IEvent>;
|
||||
}
|
||||
|
||||
@@ -39,9 +40,11 @@ export class Group extends Actor implements IGroup {
|
||||
|
||||
todoLists: Paginate<ITodoList> = { elements: [], total: 0 };
|
||||
|
||||
conversations: Paginate<IConversation> = { elements: [], total: 0 };
|
||||
discussions: Paginate<IDiscussion> = { elements: [], total: 0 };
|
||||
|
||||
organizedEvents!: Paginate<IEvent>;
|
||||
organizedEvents: Paginate<IEvent> = { elements: [], total: 0 };
|
||||
|
||||
posts: Paginate<IPost> = { elements: [], total: 0 };
|
||||
|
||||
constructor(hash: IGroup | {} = {}) {
|
||||
super(hash);
|
||||
|
||||
@@ -12,9 +12,10 @@ export interface IComment {
|
||||
originComment?: IComment;
|
||||
replies: IComment[];
|
||||
event?: IEvent;
|
||||
updatedAt?: Date;
|
||||
deletedAt?: Date;
|
||||
updatedAt?: Date | string;
|
||||
deletedAt?: Date | string;
|
||||
totalReplies: number;
|
||||
insertedAt?: Date | string;
|
||||
}
|
||||
|
||||
export class CommentModel implements IComment {
|
||||
@@ -38,9 +39,11 @@ export class CommentModel implements IComment {
|
||||
|
||||
event?: IEvent = undefined;
|
||||
|
||||
updatedAt?: Date = undefined;
|
||||
updatedAt?: Date | string = undefined;
|
||||
|
||||
deletedAt?: Date = undefined;
|
||||
deletedAt?: Date | string = undefined;
|
||||
|
||||
insertedAt?: Date | string = undefined;
|
||||
|
||||
totalReplies = 0;
|
||||
|
||||
@@ -58,6 +61,7 @@ export class CommentModel implements IComment {
|
||||
this.replies = hash.replies;
|
||||
this.updatedAt = hash.updatedAt;
|
||||
this.deletedAt = hash.deletedAt;
|
||||
this.insertedAt = new Date(hash.insertedAt as string);
|
||||
this.totalReplies = hash.totalReplies;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
import { IActor, IPerson } from "@/types/actor";
|
||||
import { IComment } from "@/types/comment.model";
|
||||
import { Paginate } from "@/types/paginate";
|
||||
|
||||
export interface IConversation {
|
||||
id: string;
|
||||
title: string;
|
||||
slug: string;
|
||||
creator: IPerson;
|
||||
actor: IActor;
|
||||
lastComment: IComment;
|
||||
comments: Paginate<IComment>;
|
||||
}
|
||||
44
js/src/types/discussions.ts
Normal file
44
js/src/types/discussions.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { IActor, IPerson } from "@/types/actor";
|
||||
import { IComment, CommentModel } from "@/types/comment.model";
|
||||
import { Paginate } from "@/types/paginate";
|
||||
|
||||
export interface IDiscussion {
|
||||
id?: string;
|
||||
title: string;
|
||||
slug?: string;
|
||||
creator?: IPerson;
|
||||
actor?: IActor;
|
||||
lastComment?: IComment;
|
||||
comments: Paginate<IComment>;
|
||||
}
|
||||
|
||||
export class Discussion implements IDiscussion {
|
||||
id?: string;
|
||||
|
||||
title = "";
|
||||
|
||||
comments: Paginate<IComment> = { total: 0, elements: [] };
|
||||
|
||||
slug?: string = undefined;
|
||||
|
||||
creator?: IPerson = undefined;
|
||||
|
||||
actor?: IActor = undefined;
|
||||
|
||||
lastComment?: IComment = undefined;
|
||||
|
||||
constructor(hash?: IDiscussion) {
|
||||
if (!hash) return;
|
||||
|
||||
this.id = hash.id;
|
||||
this.title = hash.title;
|
||||
this.comments = {
|
||||
total: hash.comments.total,
|
||||
elements: hash.comments.elements.map((comment: IComment) => new CommentModel(comment)),
|
||||
};
|
||||
this.slug = hash.slug;
|
||||
this.creator = hash.creator;
|
||||
this.actor = hash.actor;
|
||||
this.lastComment = hash.lastComment;
|
||||
}
|
||||
}
|
||||
26
js/src/types/post.model.ts
Normal file
26
js/src/types/post.model.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { ITag } from "./tag.model";
|
||||
import { IPicture } from "./picture.model";
|
||||
import { IActor } from "./actor";
|
||||
|
||||
export enum PostVisibility {
|
||||
PUBLIC = "PUBLIC",
|
||||
UNLISTED = "UNLISTED",
|
||||
RESTRICTED = "RESTRICTED",
|
||||
PRIVATE = "PRIVATE",
|
||||
}
|
||||
|
||||
export interface IPost {
|
||||
id?: string;
|
||||
slug?: string;
|
||||
url?: string;
|
||||
local: boolean;
|
||||
title: string;
|
||||
body: string;
|
||||
tags?: ITag[];
|
||||
picture?: IPicture | null;
|
||||
draft: boolean;
|
||||
visibility: PostVisibility;
|
||||
author?: IActor;
|
||||
attributedTo?: IActor;
|
||||
publishAt?: Date;
|
||||
}
|
||||
Reference in New Issue
Block a user