grafana/public/app/features/org/state/actions.ts

52 lines
1.4 KiB
TypeScript
Raw Normal View History

2018-10-25 00:45:22 -05:00
import { ThunkAction } from 'redux-thunk';
import { Organization, StoreState } from 'app/types';
import { getBackendSrv } from 'app/core/services/backend_srv';
2018-10-25 00:45:22 -05:00
2018-10-26 07:15:37 -05:00
type ThunkResult<R> = ThunkAction<R, StoreState, undefined, any>;
2018-10-25 00:45:22 -05:00
export enum ActionTypes {
2018-10-26 07:15:37 -05:00
LoadOrganization = 'LOAD_ORGANISATION',
SetOrganizationName = 'SET_ORGANIZATION_NAME',
2018-10-25 00:45:22 -05:00
}
2018-10-25 09:56:49 -05:00
interface LoadOrganizationAction {
2018-10-26 07:15:37 -05:00
type: ActionTypes.LoadOrganization;
2018-10-25 09:56:49 -05:00
payload: Organization;
2018-10-25 00:45:22 -05:00
}
2018-10-26 07:15:37 -05:00
interface SetOrganizationNameAction {
type: ActionTypes.SetOrganizationName;
payload: string;
}
2018-10-25 09:56:49 -05:00
const organisationLoaded = (organisation: Organization) => ({
2018-10-26 07:15:37 -05:00
type: ActionTypes.LoadOrganization,
2018-10-25 00:45:22 -05:00
payload: organisation,
});
2018-10-26 07:15:37 -05:00
export const setOrganizationName = (orgName: string) => ({
type: ActionTypes.SetOrganizationName,
payload: orgName,
});
export type Action = LoadOrganizationAction | SetOrganizationNameAction;
2018-10-25 00:45:22 -05:00
2018-10-25 09:56:49 -05:00
export function loadOrganization(): ThunkResult<void> {
2018-10-25 00:45:22 -05:00
return async dispatch => {
const organisationResponse = await getBackendSrv().get('/api/org');
2018-10-25 00:45:22 -05:00
dispatch(organisationLoaded(organisationResponse));
2018-10-25 09:56:49 -05:00
return organisationResponse;
};
}
export function updateOrganization() {
return async (dispatch, getStore) => {
const organization = getStore().organization.organization;
await getBackendSrv().put('/api/org', { name: organization.name });
dispatch(loadOrganization());
};
2018-10-26 07:15:37 -05:00
}