Convert isViewer and isAdmin to getters (#6724)

This commit is contained in:
Tom Moor
2024-03-28 17:00:35 -06:00
committed by GitHub
parent 278b81a8fb
commit 0dede0b56e
20 changed files with 113 additions and 139 deletions

View File

@@ -52,10 +52,7 @@ class User extends ParanoidModel {
email: string;
@observable
isAdmin: boolean;
@observable
isViewer: boolean;
role: UserRole;
@observable
lastActiveAt: string;
@@ -68,11 +65,27 @@ class User extends ParanoidModel {
return (this.name ? this.name[0] : "?").toUpperCase();
}
@computed
/**
* Whether the user has been invited but not yet signed in.
*/
get isInvited(): boolean {
return !this.lastActiveAt;
}
/**
* Whether the user is an admin.
*/
get isAdmin(): boolean {
return this.role === UserRole.Admin;
}
/**
* Whether the user is a viewer.
*/
get isViewer(): boolean {
return this.role === UserRole.Viewer;
}
/**
* Whether the user has been recently active. Recently is currently defined
* as within the last 5 minutes.
@@ -84,17 +97,6 @@ class User extends ParanoidModel {
return new Date(this.lastActiveAt) > subMinutes(now(10000), 5);
}
@computed
get role(): UserRole {
if (this.isAdmin) {
return UserRole.Admin;
} else if (this.isViewer) {
return UserRole.Viewer;
} else {
return UserRole.Member;
}
}
/**
* Returns whether this user is using a separate editing mode behind an "Edit"
* button rather than seamless always-editing.

View File

@@ -116,7 +116,12 @@ export default abstract class Model {
updateData = action((data: Partial<Model>) => {
for (const key in data) {
this[key] = data[key];
try {
this[key] = data[key];
} catch (error) {
// Temporary as isViewer and isAdmin properties changed to getters
Logger.warn(`Error setting ${key} on model`, error);
}
}
this.isNew = false;