18559: Add context menu filter system for more complex context menus on user profile.
[arvados-workbench2.git] / src / store / context-menu / context-menu-filters.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { RootState } from "store/store";
6 import { ContextMenuResource } from "store/context-menu/context-menu-actions";
7 import { getUserAccountStatus, UserAccountStatus } from "store/users/users-actions";
8 import { matchMyAccountRoute, matchUserProfileRoute } from "routes/routes";
9
10 export const isAdmin = (state: RootState, resource: ContextMenuResource) => {
11   return state.auth.user!.isAdmin;
12 }
13
14 export const canActivateUser = (state: RootState, resource: ContextMenuResource) => {
15   const status = getUserAccountStatus(state, resource.uuid);
16   return status === UserAccountStatus.INACTIVE ||
17     status === UserAccountStatus.SETUP;
18 };
19
20 export const canDeactivateUser = (state: RootState, resource: ContextMenuResource) => {
21   const status = getUserAccountStatus(state, resource.uuid);
22   return status === UserAccountStatus.SETUP ||
23     status === UserAccountStatus.ACTIVE;
24 };
25
26 export const canSetupUser = (state: RootState, resource: ContextMenuResource) => {
27   const status = getUserAccountStatus(state, resource.uuid);
28   return status === UserAccountStatus.INACTIVE;
29 };
30
31 export const needsUserProfileLink = (state: RootState, resource: ContextMenuResource) => (
32   state.router.location ?
33     !(matchUserProfileRoute(state.router.location.pathname)
34       || matchMyAccountRoute(state.router.location.pathname)
35     ) : true
36 );
37
38 export const isOtherUser = (state: RootState, resource: ContextMenuResource) => {
39   return state.auth.user!.uuid !== resource.uuid;
40 };