actions.ts 1.4 KB

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