actions.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { Organization, ThunkResult } from 'app/types';
  2. import { getBackendSrv } from 'app/core/services/backend_srv';
  3. export enum ActionTypes {
  4. LoadOrganization = 'LOAD_ORGANIZATION',
  5. SetOrganizationName = 'SET_ORGANIZATION_NAME',
  6. }
  7. interface LoadOrganizationAction {
  8. type: ActionTypes.LoadOrganization;
  9. payload: Organization;
  10. }
  11. interface SetOrganizationNameAction {
  12. type: ActionTypes.SetOrganizationName;
  13. payload: string;
  14. }
  15. const organizationLoaded = (organization: Organization) => ({
  16. type: ActionTypes.LoadOrganization,
  17. payload: organization,
  18. });
  19. export const setOrganizationName = (orgName: string) => ({
  20. type: ActionTypes.SetOrganizationName,
  21. payload: orgName,
  22. });
  23. export type Action = LoadOrganizationAction | SetOrganizationNameAction;
  24. export function loadOrganization(): ThunkResult<any> {
  25. return async dispatch => {
  26. const organizationResponse = await getBackendSrv().get('/api/org');
  27. dispatch(organizationLoaded(organizationResponse));
  28. return organizationResponse;
  29. };
  30. }
  31. export function updateOrganization(): ThunkResult<any> {
  32. return async (dispatch, getStore) => {
  33. const organization = getStore().organization.organization;
  34. await getBackendSrv().put('/api/org', { name: organization.name });
  35. dispatch(loadOrganization());
  36. };
  37. }