Add 'members' filter to user details page, closes #4529

This commit is contained in:
Tom Moor
2022-12-03 09:36:28 -05:00
parent e15ad530de
commit 08a471f230
4 changed files with 20 additions and 1 deletions

View File

@@ -82,6 +82,8 @@ function Members() {
filtered = users.orderedData.filter((u) => userIds.includes(u.id));
} else if (filter === "admins") {
filtered = users.admins.filter((u) => userIds.includes(u.id));
} else if (filter === "members") {
filtered = users.members.filter((u) => userIds.includes(u.id));
} else if (filter === "suspended") {
filtered = users.suspended.filter((u) => userIds.includes(u.id));
} else if (filter === "invited") {
@@ -96,6 +98,7 @@ function Members() {
filter,
users.active,
users.admins,
users.members,
users.orderedData,
users.suspended,
users.invited,

View File

@@ -25,6 +25,10 @@ const UserStatusFilter = ({ activeKey, onSelect, ...rest }: Props) => {
key: "all",
label: t("Everyone"),
},
{
key: "members",
label: t("Members"),
},
{
key: "admins",
label: t("Admins"),

View File

@@ -56,6 +56,13 @@ export default class UsersStore extends BaseStore<User> {
return this.orderedData.filter((user) => user.isAdmin);
}
@computed
get members(): User[] {
return this.orderedData.filter(
(user) => !user.isViewer && !user.isAdmin && !user.isInvited
);
}
@computed
get viewers(): User[] {
return this.orderedData.filter((user) => user.isViewer);

View File

@@ -50,7 +50,7 @@ router.post("users.list", auth(), pagination(), async (ctx) => {
if (filter) {
assertIn(
filter,
["invited", "viewers", "admins", "active", "all", "suspended"],
["invited", "viewers", "admins", "members", "active", "all", "suspended"],
"Invalid filter"
);
}
@@ -86,6 +86,11 @@ router.post("users.list", auth(), pagination(), async (ctx) => {
break;
}
case "members": {
where = { ...where, isAdmin: false, isViewer: false };
break;
}
case "suspended": {
if (actor.isAdmin) {
where = {