import {City, noCity} from "../../types/city"; import {createSlice, PayloadAction} from "@reduxjs/toolkit"; export interface CitySelectState { cities: City[]; selectedCity: City; initialized: boolean; } const initialState: CitySelectState = { cities: [], selectedCity: noCity, initialized: false } export const citySelect = createSlice({ name: 'citySelect', initialState, reducers: { initializeCitySelect: (state, action: PayloadAction) => { state.cities = action.payload; state.initialized = true; if (state.cities.length > 0) state.selectedCity = state.cities[0]; }, selectCity: (state, action: PayloadAction<{ cityId: number }>) => { let selectedCity = state.cities.find(city => city.id == action.payload.cityId); if (!selectedCity) return; state.selectedCity = selectedCity; } } }) export const {initializeCitySelect, selectCity} = citySelect.actions; export default citySelect.reducer;