ee20e03cc2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
75 lines
1.7 KiB
TypeScript
75 lines
1.7 KiB
TypeScript
import { IPerson, Person } from "@/types/actor";
|
|
import type { IEvent } from "@/types/event.model";
|
|
import { EventModel } from "@/types/event.model";
|
|
|
|
export interface IComment {
|
|
id?: string;
|
|
uuid?: string;
|
|
url?: string;
|
|
text: string;
|
|
local: boolean;
|
|
actor: IPerson | null;
|
|
inReplyToComment?: IComment;
|
|
originComment?: IComment;
|
|
replies: IComment[];
|
|
event?: IEvent;
|
|
updatedAt?: string;
|
|
deletedAt?: string;
|
|
totalReplies: number;
|
|
insertedAt?: string;
|
|
publishedAt?: string;
|
|
isAnnouncement: boolean;
|
|
language?: string;
|
|
}
|
|
|
|
export class CommentModel implements IComment {
|
|
actor: IPerson = new Person();
|
|
|
|
id?: string;
|
|
|
|
text = "";
|
|
|
|
local = true;
|
|
|
|
url?: string;
|
|
|
|
uuid?: string;
|
|
|
|
inReplyToComment?: IComment = undefined;
|
|
|
|
originComment?: IComment = undefined;
|
|
|
|
replies: IComment[] = [];
|
|
|
|
event?: IEvent = undefined;
|
|
|
|
updatedAt?: string = undefined;
|
|
|
|
deletedAt?: string = undefined;
|
|
|
|
insertedAt?: string = undefined;
|
|
|
|
totalReplies = 0;
|
|
|
|
isAnnouncement = false;
|
|
|
|
constructor(hash?: IComment) {
|
|
if (!hash) return;
|
|
|
|
this.id = hash.id;
|
|
this.uuid = hash.uuid;
|
|
this.url = hash.url;
|
|
this.text = hash.text;
|
|
this.inReplyToComment = hash.inReplyToComment;
|
|
this.originComment = hash.originComment;
|
|
this.actor = hash.actor ? new Person(hash.actor) : new Person();
|
|
this.event = new EventModel(hash.event);
|
|
this.replies = hash.replies;
|
|
this.updatedAt = new Date(hash.updatedAt as string).toISOString();
|
|
this.deletedAt = hash.deletedAt;
|
|
this.insertedAt = new Date(hash.insertedAt as string).toISOString();
|
|
this.totalReplies = hash.totalReplies;
|
|
this.isAnnouncement = hash.isAnnouncement;
|
|
}
|
|
}
|