48 lines
1.7 KiB
TypeScript
48 lines
1.7 KiB
TypeScript
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
|
|
interface K8sState {
|
|
selectedClusterId: number | null;
|
|
selectedNamespaceId: number | null;
|
|
}
|
|
|
|
const initialState: K8sState = {
|
|
selectedClusterId: localStorage.getItem('k8s_selectedClusterId')
|
|
? Number(localStorage.getItem('k8s_selectedClusterId'))
|
|
: null,
|
|
selectedNamespaceId: localStorage.getItem('k8s_selectedNamespaceId')
|
|
? Number(localStorage.getItem('k8s_selectedNamespaceId'))
|
|
: null,
|
|
};
|
|
|
|
const k8sSlice = createSlice({
|
|
name: 'k8s',
|
|
initialState,
|
|
reducers: {
|
|
setSelectedClusterId: (state, action: PayloadAction<number | null>) => {
|
|
state.selectedClusterId = action.payload;
|
|
if (action.payload !== null) {
|
|
localStorage.setItem('k8s_selectedClusterId', String(action.payload));
|
|
} else {
|
|
localStorage.removeItem('k8s_selectedClusterId');
|
|
}
|
|
},
|
|
setSelectedNamespaceId: (state, action: PayloadAction<number | null>) => {
|
|
state.selectedNamespaceId = action.payload;
|
|
if (action.payload !== null) {
|
|
localStorage.setItem('k8s_selectedNamespaceId', String(action.payload));
|
|
} else {
|
|
localStorage.removeItem('k8s_selectedNamespaceId');
|
|
}
|
|
},
|
|
clearK8sSelection: (state) => {
|
|
state.selectedClusterId = null;
|
|
state.selectedNamespaceId = null;
|
|
localStorage.removeItem('k8s_selectedClusterId');
|
|
localStorage.removeItem('k8s_selectedNamespaceId');
|
|
},
|
|
},
|
|
});
|
|
|
|
export const { setSelectedClusterId, setSelectedNamespaceId, clearK8sSelection } = k8sSlice.actions;
|
|
export default k8sSlice.reducer;
|