49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
import { makeAutoObservable, runInAction } from "mobx";
|
|
import { City } from "../CityStore";
|
|
|
|
class SelectedCityStore {
|
|
selectedCity: City | null = null;
|
|
|
|
constructor() {
|
|
makeAutoObservable(this);
|
|
this.initialize();
|
|
}
|
|
|
|
private initialize() {
|
|
const storedCity = localStorage.getItem("selectedCity");
|
|
if (storedCity) {
|
|
try {
|
|
this.selectedCity = JSON.parse(storedCity);
|
|
} catch (error) {
|
|
console.error("Error parsing stored city:", error);
|
|
localStorage.removeItem("selectedCity");
|
|
}
|
|
}
|
|
}
|
|
|
|
setSelectedCity = (city: City | null) => {
|
|
runInAction(() => {
|
|
this.selectedCity = city;
|
|
if (city) {
|
|
localStorage.setItem("selectedCity", JSON.stringify(city));
|
|
} else {
|
|
localStorage.removeItem("selectedCity");
|
|
}
|
|
});
|
|
};
|
|
|
|
clearSelectedCity = () => {
|
|
this.setSelectedCity(null);
|
|
};
|
|
|
|
get selectedCityId() {
|
|
return this.selectedCity?.id || null;
|
|
}
|
|
|
|
get selectedCityName() {
|
|
return this.selectedCity?.name || null;
|
|
}
|
|
}
|
|
|
|
export const selectedCityStore = new SelectedCityStore();
|