38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
import {createSlice, PayloadAction} from "@reduxjs/toolkit";
|
||
import {ShippingWarehouse} from "../../types/shippingWarehouse";
|
||
|
||
export interface ShippingWarehouseSelectState {
|
||
shippingWarehouses: ShippingWarehouse[]
|
||
selectedShippingWarehouse: ShippingWarehouse
|
||
initialized: boolean
|
||
}
|
||
|
||
const initialState: ShippingWarehouseSelectState = {
|
||
shippingWarehouses: [],
|
||
selectedShippingWarehouse: {
|
||
id: -1,
|
||
name: "Все склады отгрузки"
|
||
},
|
||
initialized: false
|
||
}
|
||
|
||
export const shippingWarehouseSelect = createSlice({
|
||
name: 'shippingWarehouse',
|
||
initialState,
|
||
reducers: {
|
||
initializeShippingWarehouseSelect: (state, action: PayloadAction<ShippingWarehouse[]>) => {
|
||
state.shippingWarehouses = action.payload;
|
||
state.initialized = true;
|
||
if (state.shippingWarehouses.length > 0) state.selectedShippingWarehouse = state.shippingWarehouses[0];
|
||
},
|
||
selectShippingWarehouse: (state, action: PayloadAction<{ shippingWarehouseId: number }>) => {
|
||
let selectedWarehouse = state.shippingWarehouses.find(wh => wh.id == action.payload.shippingWarehouseId);
|
||
if (!selectedWarehouse) return;
|
||
state.selectedShippingWarehouse = selectedWarehouse;
|
||
}
|
||
|
||
}
|
||
})
|
||
|
||
export const {initializeShippingWarehouseSelect, selectShippingWarehouse} = shippingWarehouseSelect.actions;
|
||
export default shippingWarehouseSelect.reducer; |