deploy-ease-platform/frontend/src/store/k8sSlice.ts
2025-12-13 22:39:03 +08:00

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;