X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/becf93a5f9d1f7d96a3ce868c9b70c3d0094cf45..c15afcee286bb8ab694f488e2ccd490b56794e47:/src/views-components/main-app-bar/account-menu.tsx?ds=sidebyside diff --git a/src/views-components/main-app-bar/account-menu.tsx b/src/views-components/main-app-bar/account-menu.tsx index ea3a2dd9..7892b8a7 100644 --- a/src/views-components/main-app-bar/account-menu.tsx +++ b/src/views-components/main-app-bar/account-menu.tsx @@ -20,6 +20,8 @@ import { navigateToLinkAccount } from '~/store/navigation/navigation-action'; import { openUserVirtualMachines } from "~/store/virtual-machines/virtual-machines-actions"; +import { pluginConfig } from '~/plugins'; +import { ElementListReducer } from '~/common/plugintypes'; interface AccountMenuProps { user?: User; @@ -57,38 +59,47 @@ const styles: StyleRulesCallback = () => ({ }); export const AccountMenuComponent = - ({ user, dispatch, currentRoute, workbenchURL, apiToken, localCluster, classes }: AccountMenuProps & DispatchProp & WithStyles) => - user - ? } - id="account-menu" - title="Account Management" - key={currentRoute}> - - {getUserDisplayName(user)} {user.uuid.substr(0, 5) !== localCluster && `(${user.uuid.substr(0, 5)})`} - - {user.isActive ? <> - dispatch(openUserVirtualMachines())}>Virtual Machines - {!user.isAdmin && dispatch(openRepositoriesPanel())}>Repositories} - { - dispatch(getNewExtraToken(true)); - dispatch(openTokenDialog); - }}>Get API token - dispatch(navigateToSshKeysUser)}>Ssh Keys - dispatch(navigateToSiteManager)}>Site Manager - dispatch(navigateToMyAccount)}>My account - dispatch(navigateToLinkAccount)}>Link account - : null} + ({ user, dispatch, currentRoute, workbenchURL, apiToken, localCluster, classes }: AccountMenuProps & DispatchProp & WithStyles) => { + let accountMenuItems = <> + dispatch(openUserVirtualMachines())}>Virtual Machines + dispatch(openRepositoriesPanel())}>Repositories + { + dispatch(getNewExtraToken(true)); + dispatch(openTokenDialog); + }}>Get API token + dispatch(navigateToSshKeysUser)}>Ssh Keys + dispatch(navigateToSiteManager)}>Site Manager + dispatch(navigateToMyAccount)}>My account + dispatch(navigateToLinkAccount)}>Link account Switch to Workbench v1 - - dispatch(authActions.LOGOUT({deleteLinkData: true}))}> - Logout - - - : null; + ; -export const AccountMenu = withStyles(styles)( connect(mapStateToProps)(AccountMenuComponent) ); + const reduceItemsFn: (a: React.ReactElement[], + b: ElementListReducer) => React.ReactElement[] = (a, b) => b(a); + + accountMenuItems = React.createElement(React.Fragment, null, + pluginConfig.accountMenuList.reduce(reduceItemsFn, React.Children.toArray(accountMenuItems.props.children))); + + return user + ? } + id="account-menu" + title="Account Management" + key={currentRoute}> + + {getUserDisplayName(user)} {user.uuid.substr(0, 5) !== localCluster && `(${user.uuid.substr(0, 5)})`} + + {user.isActive && accountMenuItems} + + dispatch(authActions.LOGOUT({ deleteLinkData: true }))}> + Logout + + + : null; + }; + +export const AccountMenu = withStyles(styles)(connect(mapStateToProps)(AccountMenuComponent));