44 lines
1.6 KiB
TypeScript
44 lines
1.6 KiB
TypeScript
import { createReducer, createAction } from '@reduxjs/toolkit';
|
|
|
|
// ─── Actions ──────────────────────────────────────────────────────────────────
|
|
|
|
export const setLocationData = createAction<{
|
|
latitude: number;
|
|
longitude: number;
|
|
mapAddress: string;
|
|
}>('setLocation/setLocationData');
|
|
|
|
export const clearLocationData = createAction('setLocation/clearLocationData');
|
|
|
|
// ─── State ────────────────────────────────────────────────────────────────────
|
|
|
|
export interface SetLocationState {
|
|
latitude: number | null;
|
|
longitude: number | null;
|
|
mapAddress: string;
|
|
}
|
|
|
|
const initialState: SetLocationState = {
|
|
latitude: null,
|
|
longitude: null,
|
|
mapAddress: '',
|
|
};
|
|
|
|
// ─── Reducer ──────────────────────────────────────────────────────────────────
|
|
|
|
const setLocationReducer = createReducer(initialState, builder => {
|
|
builder
|
|
.addCase(setLocationData, (state, action) => {
|
|
state.latitude = action.payload.latitude;
|
|
state.longitude = action.payload.longitude;
|
|
state.mapAddress = action.payload.mapAddress;
|
|
})
|
|
.addCase(clearLocationData, state => {
|
|
state.latitude = null;
|
|
state.longitude = null;
|
|
state.mapAddress = '';
|
|
});
|
|
});
|
|
|
|
export default setLocationReducer;
|