chore: improve typings
This commit is contained in:
@@ -21,7 +21,9 @@ import styles from "./overviewTable.module.css"
|
||||
|
||||
import {
|
||||
ComparisonLevel,
|
||||
overviewTableActionsEnum,
|
||||
OverviewTableProps,
|
||||
OverviewTableReducerAction,
|
||||
} from "@/types/components/loyalty/blocks"
|
||||
import { User } from "@/types/user"
|
||||
|
||||
@@ -54,15 +56,7 @@ const titleTranslations = {
|
||||
],
|
||||
}
|
||||
|
||||
enum actions {
|
||||
SET_SELECTED_LEVEL_A_MOBILE = "SET_SELECTED_LEVEL_A_MOBILE",
|
||||
SET_SELECTED_LEVEL_B_MOBILE = "SET_SELECTED_LEVEL_B_MOBILE",
|
||||
SET_SELECTED_LEVEL_A_DESKTOP = "SET_SELECTED_LEVEL_A_DESKTOP",
|
||||
SET_SELECTED_LEVEL_B_DESKTOP = "SET_SELECTED_LEVEL_B_DESKTOP",
|
||||
SET_SELECTED_LEVEL_C_DESKTOP = "SET_SELECTED_LEVEL_C_DESKTOP",
|
||||
}
|
||||
|
||||
function getLevelByTier(tier: number) {
|
||||
function getLevelByTier(tier: membershipLevels) {
|
||||
return levelsData.levels.find(
|
||||
(level) => level.tier === tier
|
||||
) as ComparisonLevel
|
||||
@@ -109,29 +103,29 @@ function getInitialState(user?: User) {
|
||||
}
|
||||
}
|
||||
|
||||
function reducer(state: any, action: any) {
|
||||
function reducer(state: any, action: OverviewTableReducerAction) {
|
||||
switch (action.type) {
|
||||
case actions.SET_SELECTED_LEVEL_A_MOBILE:
|
||||
case overviewTableActionsEnum.SET_SELECTED_LEVEL_A_MOBILE:
|
||||
return {
|
||||
...state,
|
||||
selectedLevelAMobile: action.payload,
|
||||
}
|
||||
case actions.SET_SELECTED_LEVEL_B_MOBILE:
|
||||
case overviewTableActionsEnum.SET_SELECTED_LEVEL_B_MOBILE:
|
||||
return {
|
||||
...state,
|
||||
selectedLevelBMobile: action.payload,
|
||||
}
|
||||
case actions.SET_SELECTED_LEVEL_A_DESKTOP:
|
||||
case overviewTableActionsEnum.SET_SELECTED_LEVEL_A_DESKTOP:
|
||||
return {
|
||||
...state,
|
||||
selectedLevelADesktop: action.payload,
|
||||
}
|
||||
case actions.SET_SELECTED_LEVEL_B_DESKTOP:
|
||||
case overviewTableActionsEnum.SET_SELECTED_LEVEL_B_DESKTOP:
|
||||
return {
|
||||
...state,
|
||||
selectedLevelBDesktop: action.payload,
|
||||
}
|
||||
case actions.SET_SELECTED_LEVEL_C_DESKTOP:
|
||||
case overviewTableActionsEnum.SET_SELECTED_LEVEL_C_DESKTOP:
|
||||
return {
|
||||
...state,
|
||||
selectedLevelCDesktop: action.payload,
|
||||
@@ -146,10 +140,13 @@ export default function OverviewTable({ user }: OverviewTableProps) {
|
||||
|
||||
const [selectionState, dispatch] = useReducer(reducer, user, getInitialState)
|
||||
|
||||
function handleSelectChange(actionType: string) {
|
||||
function handleSelectChange(actionType: overviewTableActionsEnum) {
|
||||
return (key: Key) => {
|
||||
if (typeof key === "number") {
|
||||
dispatch({ payload: getLevelByTier(key), type: actionType })
|
||||
dispatch({
|
||||
payload: getLevelByTier(key),
|
||||
type: actionType,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -179,7 +176,9 @@ export default function OverviewTable({ user }: OverviewTableProps) {
|
||||
label={intl.formatMessage({ id: "Level" })}
|
||||
items={levelOptions}
|
||||
value={selectionState.selectedLevelAMobile.tier}
|
||||
onSelect={handleSelectChange(actions.SET_SELECTED_LEVEL_A_MOBILE)}
|
||||
onSelect={handleSelectChange(
|
||||
overviewTableActionsEnum.SET_SELECTED_LEVEL_A_MOBILE
|
||||
)}
|
||||
/>
|
||||
<Image
|
||||
className={styles.icon}
|
||||
@@ -204,7 +203,9 @@ export default function OverviewTable({ user }: OverviewTableProps) {
|
||||
label={intl.formatMessage({ id: "Level" })}
|
||||
items={levelOptions}
|
||||
value={selectionState.selectedLevelBMobile.tier}
|
||||
onSelect={handleSelectChange(actions.SET_SELECTED_LEVEL_B_MOBILE)}
|
||||
onSelect={handleSelectChange(
|
||||
overviewTableActionsEnum.SET_SELECTED_LEVEL_B_MOBILE
|
||||
)}
|
||||
/>
|
||||
<Image
|
||||
className={styles.icon}
|
||||
@@ -240,7 +241,7 @@ export default function OverviewTable({ user }: OverviewTableProps) {
|
||||
items={levelOptions}
|
||||
value={selectionState.selectedLevelADesktop.tier}
|
||||
onSelect={handleSelectChange(
|
||||
actions.SET_SELECTED_LEVEL_A_DESKTOP
|
||||
overviewTableActionsEnum.SET_SELECTED_LEVEL_A_DESKTOP
|
||||
)}
|
||||
/>
|
||||
<Image
|
||||
@@ -267,7 +268,7 @@ export default function OverviewTable({ user }: OverviewTableProps) {
|
||||
items={levelOptions}
|
||||
value={selectionState.selectedLevelBDesktop.tier}
|
||||
onSelect={handleSelectChange(
|
||||
actions.SET_SELECTED_LEVEL_B_DESKTOP
|
||||
overviewTableActionsEnum.SET_SELECTED_LEVEL_B_DESKTOP
|
||||
)}
|
||||
/>
|
||||
<Image
|
||||
@@ -294,7 +295,7 @@ export default function OverviewTable({ user }: OverviewTableProps) {
|
||||
items={levelOptions}
|
||||
value={selectionState.selectedLevelCDesktop.tier}
|
||||
onSelect={handleSelectChange(
|
||||
actions.SET_SELECTED_LEVEL_C_DESKTOP
|
||||
overviewTableActionsEnum.SET_SELECTED_LEVEL_C_DESKTOP
|
||||
)}
|
||||
/>
|
||||
<Image
|
||||
|
||||
Reference in New Issue
Block a user