This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously. closes #1282
46 lines
647 B
TypeScript
46 lines
647 B
TypeScript
import { computed } from "mobx";
|
|
import { Role } from "@shared/types";
|
|
import BaseModel from "./BaseModel";
|
|
|
|
class User extends BaseModel {
|
|
avatarUrl: string;
|
|
|
|
id: string;
|
|
|
|
name: string;
|
|
|
|
email: string;
|
|
|
|
color: string;
|
|
|
|
isAdmin: boolean;
|
|
|
|
isViewer: boolean;
|
|
|
|
lastActiveAt: string;
|
|
|
|
isSuspended: boolean;
|
|
|
|
createdAt: string;
|
|
|
|
language: string;
|
|
|
|
@computed
|
|
get isInvited(): boolean {
|
|
return !this.lastActiveAt;
|
|
}
|
|
|
|
@computed
|
|
get role(): Role {
|
|
if (this.isAdmin) {
|
|
return "admin";
|
|
} else if (this.isViewer) {
|
|
return "viewer";
|
|
} else {
|
|
return "member";
|
|
}
|
|
}
|
|
}
|
|
|
|
export default User;
|