grafana/public/app/features/api-keys/state/reducers.ts

44 lines
1.3 KiB
TypeScript
Raw Normal View History

import { createSlice } from '@reduxjs/toolkit';
import { ApiKeysState } from 'app/types';
2018-09-25 09:23:43 -05:00
export const initialApiKeysState: ApiKeysState = {
hasFetched: false,
includeExpired: false,
keys: [],
keysIncludingExpired: [],
searchQuery: '',
};
2018-09-25 09:23:43 -05:00
const apiKeysSlice = createSlice({
name: 'apiKeys',
initialState: initialApiKeysState,
reducers: {
apiKeysLoaded: (state, action): ApiKeysState => {
const { keys, keysIncludingExpired } = action.payload;
const includeExpired =
action.payload.keys.length === 0 && action.payload.keysIncludingExpired.length > 0
? true
: state.includeExpired;
return { ...state, hasFetched: true, keys, keysIncludingExpired, includeExpired };
},
setSearchQuery: (state, action): ApiKeysState => {
return { ...state, searchQuery: action.payload };
},
includeExpiredToggled: (state): ApiKeysState => {
return { ...state, includeExpired: !state.includeExpired };
},
isFetching: (state): ApiKeysState => {
return { ...state, hasFetched: false };
},
},
});
export const { apiKeysLoaded, includeExpiredToggled, isFetching, setSearchQuery } = apiKeysSlice.actions;
export const apiKeysReducer = apiKeysSlice.reducer;
2018-09-25 09:23:43 -05:00
export default {
apiKeys: apiKeysReducer,
};