feat: SW-693 Moved state changes to reducer

This commit is contained in:
Hrishikesh Vaipurkar
2024-10-31 21:23:06 +01:00
parent 726a57c515
commit 0a430a0480
3 changed files with 26 additions and 2 deletions

View File

@@ -115,14 +115,21 @@ export default function Search({ locations }: SearchProps) {
}
useEffect(() => {
state.searchData =
const searchData =
typeof window !== "undefined"
? JSON.parse(sessionStorage.getItem(sessionStorageKey) || "")
: undefined
state.searchHistory =
const searchHistory =
typeof window !== "undefined"
? JSON.parse(localStorage.getItem(localStorageKey) || "")
: null
dispatch({
payload: {
searchData,
searchHistory,
},
type: ActionType.SET_STORAGE_DATA,
})
}, [state])
return (

View File

@@ -68,6 +68,13 @@ export function reducer(state: State, action: Action) {
searchHistory: action.payload.searchHistory,
}
}
case ActionType.SET_STORAGE_DATA: {
return {
...state,
searchData: action.payload.searchData,
searchHistory: action.payload.searchHistory,
}
}
default:
const unhandledActionType: never = type
console.info(`Unhandled type: ${unhandledActionType}`)

View File

@@ -21,6 +21,7 @@ export enum ActionType {
CLEAR_SEARCH_LOCATIONS = "CLEAR_SEARCH_LOCATIONS",
SEARCH_LOCATIONS = "SEARCH_LOCATIONS",
SELECT_ITEM = "SELECT_ITEM",
SET_STORAGE_DATA = "SET_STORAGE_DATA",
}
interface ClearHistoryLocationsAction {
@@ -46,11 +47,20 @@ interface SetItemAction {
type: ActionType.SELECT_ITEM
}
interface SetStorageData {
payload: {
searchData: Location
searchHistory: Locations
}
type: ActionType.SET_STORAGE_DATA
}
export type Action =
| ClearHistoryLocationsAction
| ClearSearchLocationsAction
| SearchLocationsAction
| SetItemAction
| SetStorageData
export interface State {
defaultLocations: Locations