mobilizon/js/src/types/actor/person.model.ts

42 lines
1.1 KiB
TypeScript
Raw Normal View History

import type { ICurrentUser } from "../current-user.model";
import type { IEvent } from "../event.model";
import { Actor } from "./actor.model";
import type { IActor } from "./actor.model";
import type { Paginate } from "../paginate";
import type { IParticipant } from "../participant.model";
import type { IMember } from "./member.model";
import type { IFeedToken } from "../feedtoken.model";
import { IFollower } from "./follower.model";
2019-04-26 13:22:16 +00:00
export interface IPerson extends IActor {
feedTokens: IFeedToken[];
goingToEvents: IEvent[];
participations: Paginate<IParticipant>;
memberships: Paginate<IMember>;
follows: Paginate<IFollower>;
user?: ICurrentUser;
2019-04-26 13:22:16 +00:00
}
export class Person extends Actor implements IPerson {
feedTokens: IFeedToken[] = [];
2019-04-26 13:22:16 +00:00
goingToEvents: IEvent[] = [];
participations!: Paginate<IParticipant>;
2019-04-26 13:22:16 +00:00
memberships!: Paginate<IMember>;
user!: ICurrentUser;
constructor(hash: IPerson | Record<string, unknown> = {}) {
2019-04-26 13:22:16 +00:00
super(hash);
this.patch(hash);
}
follows!: Paginate<IFollower>;
patch(hash: IPerson | Record<string, unknown>): void {
2019-04-26 13:22:16 +00:00
Object.assign(this, hash);
}
}