import React, { useState } from 'react'; import { useForm } from 'react-hook-form'; import { connect, ConnectedProps } from 'react-redux'; import { Input, Field, Button, FieldSet, Stack } from '@grafana/ui'; import { TeamRolePicker } from 'app/core/components/RolePicker/TeamRolePicker'; import { updateTeamRoles } from 'app/core/components/RolePicker/api'; import { useRoleOptions } from 'app/core/components/RolePicker/hooks'; import { SharedPreferences } from 'app/core/components/SharedPreferences/SharedPreferences'; import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction, Role, Team } from 'app/types'; import { updateTeam } from './state/actions'; const mapDispatchToProps = { updateTeam, }; const connector = connect(null, mapDispatchToProps); interface OwnProps { team: Team; } export type Props = ConnectedProps & OwnProps; export const TeamSettings = ({ team, updateTeam }: Props) => { const canWriteTeamSettings = contextSrv.hasPermissionInMetadata(AccessControlAction.ActionTeamsWrite, team); const currentOrgId = contextSrv.user.orgId; const [{ roleOptions }] = useRoleOptions(currentOrgId); const [pendingRoles, setPendingRoles] = useState([]); const { handleSubmit, register, formState: { errors }, } = useForm({ defaultValues: team }); const canUpdateRoles = contextSrv.hasPermission(AccessControlAction.ActionTeamsRolesAdd) && contextSrv.hasPermission(AccessControlAction.ActionTeamsRolesRemove); const canListRoles = contextSrv.hasPermissionInMetadata(AccessControlAction.ActionTeamsRolesList, team) && contextSrv.hasPermission(AccessControlAction.ActionRolesList); const onSubmit = async (formTeam: Team) => { if (contextSrv.licensedAccessControlEnabled() && canUpdateRoles) { await updateTeamRoles(pendingRoles, team.id); } updateTeam(formTeam.name, formTeam.email || ''); }; return (
{contextSrv.licensedAccessControlEnabled() && canListRoles && ( )}
); }; export default connector(TeamSettings);