import { logout } from '~/store/auth/auth-action';
import { RootState } from "~/store/store";
import { openCurrentTokenDialog } from '~/store/current-token-dialog/current-token-dialog-actions';
-import { openRepositoriesPanel } from "~/store/repositories/repositories-actions";
-import {
- navigateToKeepServices, navigateToComputeNodes,
- navigateToApiClientAuthorizations, navigateToGroups
-} from '~/store/navigation/navigation-action';
-import { navigateToUsers } from '~/store/navigation/navigation-action';
import { navigateToSshKeysUser, navigateToMyAccount } from '~/store/navigation/navigation-action';
import { openUserVirtualMachines } from "~/store/virtual-machines/virtual-machines-actions";
+import { openRepositoriesPanel } from '~/store/repositories/repositories-actions';
interface AccountMenuProps {
user?: User;
+ currentRoute: string;
}
const mapStateToProps = (state: RootState): AccountMenuProps => ({
- user: state.auth.user
+ user: state.auth.user,
+ currentRoute: state.router.location ? state.router.location.pathname : ''
});
export const AccountMenu = connect(mapStateToProps)(
- ({ user, dispatch }: AccountMenuProps & DispatchProp<any>) =>
+ ({ user, dispatch, currentRoute }: AccountMenuProps & DispatchProp<any>) =>
user
? <DropdownMenu
icon={<UserPanelIcon />}
id="account-menu"
- title="Account Management">
+ title="Account Management"
+ key={currentRoute}>
<MenuItem>
{getUserFullname(user)}
</MenuItem>
<MenuItem onClick={() => dispatch(openUserVirtualMachines())}>Virtual Machines</MenuItem>
{!user.isAdmin && <MenuItem onClick={() => dispatch(openRepositoriesPanel())}>Repositories</MenuItem>}
<MenuItem onClick={() => dispatch(openCurrentTokenDialog)}>Current token</MenuItem>
- <MenuItem onClick={() => dispatch(navigateToUsers)}>Users</MenuItem>
- {user.isAdmin && <MenuItem onClick={() => dispatch(navigateToGroups)}>Groups</MenuItem>}
- {user.isAdmin && <MenuItem onClick={() => dispatch(navigateToApiClientAuthorizations)}>Api Tokens</MenuItem>}
- {user.isAdmin && <MenuItem onClick={() => dispatch(navigateToKeepServices)}>Keep Services</MenuItem>}
- {user.isAdmin && <MenuItem onClick={() => dispatch(navigateToComputeNodes)}>Compute Nodes</MenuItem>}
<MenuItem onClick={() => dispatch(navigateToSshKeysUser)}>Ssh Keys</MenuItem>
<MenuItem onClick={() => dispatch(navigateToMyAccount)}>My account</MenuItem>
<MenuItem onClick={() => dispatch(logout())}>Logout</MenuItem>