import { AccessControlAction, ThunkResult } from '../../../types'; import { getBackendSrv } from '@grafana/runtime'; import { OrgUser } from 'app/types'; import { inviteesLoaded, usersLoaded } from './reducers'; import { contextSrv } from 'app/core/core'; export function loadUsers(): ThunkResult { return async (dispatch) => { const users = await getBackendSrv().get('/api/org/users'); dispatch(usersLoaded(users)); }; } export function loadInvitees(): ThunkResult { return async (dispatch) => { if (!contextSrv.hasPermission(AccessControlAction.OrgUsersAdd)) { return; } const invitees = await getBackendSrv().get('/api/org/invites'); dispatch(inviteesLoaded(invitees)); }; } export function updateUser(user: OrgUser): ThunkResult { return async (dispatch) => { await getBackendSrv().patch(`/api/org/users/${user.userId}`, { role: user.role }); dispatch(loadUsers()); }; } export function removeUser(userId: number): ThunkResult { return async (dispatch) => { await getBackendSrv().delete(`/api/org/users/${userId}`); dispatch(loadUsers()); }; } export function revokeInvite(code: string): ThunkResult { return async (dispatch) => { await getBackendSrv().patch(`/api/org/invites/${code}/revoke`, {}); dispatch(loadInvitees()); }; }