mobilizon.chapril.org-mobil.../js/src/types/actor/group.model.ts

52 lines
1.5 KiB
TypeScript
Raw Normal View History

import type { IActor } from "./actor.model";
import { Actor } from "./actor.model";
import type { Paginate } from "../paginate";
import type { IResource } from "../resource";
import type { IEvent } from "../event.model";
import type { IDiscussion } from "../discussions";
import type { IPost } from "../post.model";
import type { IAddress } from "../address.model";
import { Address } from "../address.model";
import { ActorType, Openness } from "../enums";
import type { IMember } from "./member.model";
import type { ITodoList } from "../todolist";
2019-04-26 15:22:16 +02:00
export interface IGroup extends IActor {
members: Paginate<IMember>;
resources: Paginate<IResource>;
todoLists: Paginate<ITodoList>;
discussions: Paginate<IDiscussion>;
organizedEvents: Paginate<IEvent>;
physicalAddress: IAddress;
openness: Openness;
}
2019-04-26 15:22:16 +02:00
export class Group extends Actor implements IGroup {
members: Paginate<IMember> = { elements: [], total: 0 };
resources: Paginate<IResource> = { elements: [], total: 0 };
todoLists: Paginate<ITodoList> = { elements: [], total: 0 };
discussions: Paginate<IDiscussion> = { elements: [], total: 0 };
organizedEvents: Paginate<IEvent> = { elements: [], total: 0 };
posts: Paginate<IPost> = { elements: [], total: 0 };
2019-09-02 10:50:00 +02:00
constructor(hash: IGroup | Record<string, unknown> = {}) {
2019-09-02 10:50:00 +02:00
super(hash);
this.type = ActorType.GROUP;
2019-09-02 10:50:00 +02:00
this.patch(hash);
}
openness: Openness = Openness.INVITE_ONLY;
physicalAddress: IAddress = new Address();
2019-09-02 10:50:00 +02:00
patch(hash: IGroup | Record<string, unknown>): void {
2019-09-02 10:50:00 +02:00
Object.assign(this, hash);
}
2019-04-26 15:22:16 +02:00
}