D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
api-keys
/
state
/
Filename :
reducers.ts
back
Copy
import { createSlice } from '@reduxjs/toolkit'; import { ApiKeysState } from 'app/types'; export const initialApiKeysState: ApiKeysState = { hasFetched: false, includeExpired: false, keys: [], keysIncludingExpired: [], searchQuery: '', migrationResult: { total: 0, migrated: 0, failed: 0, failedApikeyIDs: [0], failedDetails: [], }, }; 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 }; }, setMigrationResult: (state, action): ApiKeysState => { return { ...state, migrationResult: action.payload }; }, }, }); export const { apiKeysLoaded, includeExpiredToggled, isFetching, setSearchQuery, setMigrationResult } = apiKeysSlice.actions; export const apiKeysReducer = apiKeysSlice.reducer; export default { apiKeys: apiKeysReducer, };