mirror of
https://github.com/grafana/grafana.git
synced 2025-02-09 06:56:07 -06:00
* Refactor: initial commit * Tests: updates tests * Tests: updates snapshots * Chore: updates after PR comments * Chore: renamed initVariablesBatch * Tests: adds transactionReducer tests * Chore: updates after PR comments * Refactor: renames cancelAllDataSourceRequests * Refactor: reduces cancellation complexity * Tests: adds tests for cancelAllInFlightRequests * Tests: adds initVariablesTransaction tests * Tests: adds tests for cleanUpVariables and cancelVariables * Always cleanup dashboard on unmount, even if init is in progress. Check if init phase has changed after services init is completed * fixed failing tests and added some more to test new scenario. Co-authored-by: Torkel Ödegaard <torkel@grafana.com> Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
|
|
export enum TransactionStatus {
|
|
NotStarted = 'Not started',
|
|
Fetching = 'Fetching',
|
|
Completed = 'Completed',
|
|
}
|
|
|
|
export interface TransactionState {
|
|
uid: string | undefined | null;
|
|
status: TransactionStatus;
|
|
}
|
|
|
|
export const initialTransactionState: TransactionState = { uid: null, status: TransactionStatus.NotStarted };
|
|
|
|
const transactionSlice = createSlice({
|
|
name: 'templating/transaction',
|
|
initialState: initialTransactionState,
|
|
reducers: {
|
|
variablesInitTransaction: (state, action: PayloadAction<{ uid: string | undefined | null }>) => {
|
|
state.uid = action.payload.uid;
|
|
state.status = TransactionStatus.Fetching;
|
|
},
|
|
variablesCompleteTransaction: (state, action: PayloadAction<{ uid: string | undefined | null }>) => {
|
|
if (state.uid !== action.payload.uid) {
|
|
// this might be an action from a cancelled batch
|
|
return;
|
|
}
|
|
|
|
state.status = TransactionStatus.Completed;
|
|
},
|
|
variablesClearTransaction: (state, action: PayloadAction<undefined>) => {
|
|
state.uid = null;
|
|
state.status = TransactionStatus.NotStarted;
|
|
},
|
|
},
|
|
});
|
|
|
|
export const {
|
|
variablesInitTransaction,
|
|
variablesClearTransaction,
|
|
variablesCompleteTransaction,
|
|
} = transactionSlice.actions;
|
|
|
|
export const transactionReducer = transactionSlice.reducer;
|