Test implementation of my account page
This commit is contained in:
@@ -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;
|
||||
}
|
||||
39
js/src/types/actor/actor.model.ts
Normal file
39
js/src/types/actor/actor.model.ts
Normal 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();
|
||||
}
|
||||
}
|
||||
22
js/src/types/actor/group.model.ts
Normal file
22
js/src/types/actor/group.model.ts
Normal 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[] = [];
|
||||
}
|
||||
3
js/src/types/actor/index.ts
Normal file
3
js/src/types/actor/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from './actor.model';
|
||||
export * from './group.model';
|
||||
export * from './person.model';
|
||||
25
js/src/types/actor/person.model.ts
Normal file
25
js/src/types/actor/person.model.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { IGroup } from '@/types/actor.model';
|
||||
import { IGroup } from '@/types/actor';
|
||||
import { IEvent } from '@/types/event.model';
|
||||
|
||||
export interface SearchEvent {
|
||||
|
||||
Reference in New Issue
Block a user