Files
Assemblr/src/features/citySelect/citySelectSlice.ts
2023-11-24 04:18:33 +03:00

36 lines
1.0 KiB
TypeScript

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<City[]>) => {
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;