Test implementation of my account page

This commit is contained in:
Chocobozzz
2019-04-26 15:22:16 +02:00
parent 69974ff745
commit 92ff05f505
27 changed files with 1200 additions and 296 deletions

View File

@@ -1,75 +0,0 @@
import { ICurrentUser } from '@/types/current-user.model';
import { IEvent } from '@/types/event.model';
export interface IActor {
id?: string;
url: string;
name: string;
domain: string|null;
summary: string;
preferredUsername: string;
suspended: boolean;
avatarUrl: string;
bannerUrl: string;
}
export class Actor implements IActor {
avatarUrl: string = '';
bannerUrl: string = '';
domain: string | null = null;
name: string = '';
preferredUsername: string = '';
summary: string = '';
suspended: boolean = false;
url: string = '';
get displayNameAndUsername(): string {
return `${this.name} (${this.usernameWithDomain})`;
}
public usernameWithDomain(): string {
const domain = this.domain ? `@${this.domain}` : '';
return `@${this.preferredUsername}${domain}`;
}
public displayName(): string {
return this.name != null && this.name !== '' ? this.name : this.usernameWithDomain();
}
}
export interface IPerson extends IActor {
feedTokens: IFeedToken[];
goingToEvents: IEvent[];
}
export interface IGroup extends IActor {
members: IMember[];
}
export class Person extends Actor implements IPerson {
feedTokens: IFeedToken[] = [];
goingToEvents: IEvent[] = [];
}
export class Group extends Actor implements IGroup {
members: IMember[] = [];
}
export interface IFeedToken {
token: string;
actor?: IPerson;
user: ICurrentUser;
}
export enum MemberRole {
PENDING,
MEMBER,
MODERATOR,
ADMIN,
}
export interface IMember {
role: MemberRole;
parent: IGroup;
actor: IActor;
}

View File

@@ -0,0 +1,39 @@
export interface IActor {
id?: string;
url: string;
name: string;
domain: string|null;
summary: string;
preferredUsername: string;
suspended: boolean;
avatarUrl: string;
bannerUrl: string;
}
export class Actor implements IActor {
avatarUrl: string = '';
bannerUrl: string = '';
domain: string | null = null;
name: string = '';
preferredUsername: string = '';
summary: string = '';
suspended: boolean = false;
url: string = '';
constructor (hash: IActor | {} = {}) {
Object.assign(this, hash);
}
get displayNameAndUsername(): string {
return `${this.name} (${this.usernameWithDomain})`;
}
usernameWithDomain(): string {
const domain = this.domain ? `@${this.domain}` : '';
return `@${this.preferredUsername}${domain}`;
}
displayName(): string {
return this.name != null && this.name !== '' ? this.name : this.usernameWithDomain();
}
}

View File

@@ -0,0 +1,22 @@
import { Actor, IActor } from '@/types/actor/actor.model';
export enum MemberRole {
PENDING,
MEMBER,
MODERATOR,
ADMIN,
}
export interface IGroup extends IActor {
members: IMember[];
}
export interface IMember {
role: MemberRole;
parent: IGroup;
actor: IActor;
}
export class Group extends Actor implements IGroup {
members: IMember[] = [];
}

View File

@@ -0,0 +1,3 @@
export * from './actor.model';
export * from './group.model';
export * from './person.model';

View File

@@ -0,0 +1,25 @@
import { ICurrentUser } from '@/types/current-user.model';
import { IEvent } from '@/types/event.model';
import { Actor, IActor } from '@/types/actor/actor.model';
export interface IFeedToken {
token: string;
actor?: IPerson;
user: ICurrentUser;
}
export interface IPerson extends IActor {
feedTokens: IFeedToken[];
goingToEvents: IEvent[];
}
export class Person extends Actor implements IPerson {
feedTokens: IFeedToken[] = [];
goingToEvents: IEvent[] = [];
constructor(hash: IPerson | {} = {}) {
super(hash);
Object.assign(this, hash);
}
}

View File

@@ -1,6 +1,5 @@
import { Actor, IActor } from './actor.model';
import { Actor, IActor } from './actor';
import { IAddress } from '@/types/address.model';
import { ITag } from '@/types/tag.model';
export enum EventStatus {
TENTATIVE,

View File

@@ -1,4 +1,4 @@
import { IGroup } from '@/types/actor.model';
import { IGroup } from '@/types/actor';
import { IEvent } from '@/types/event.model';
export interface SearchEvent {