diff options
| author | Max Nanis | 2025-06-10 02:51:37 +0700 |
|---|---|---|
| committer | Max Nanis | 2025-06-10 02:51:37 +0700 |
| commit | e5dac8b9d61b175b09d859643a94ea91ee6ef48d (patch) | |
| tree | d98ffbca9421e5218411d43d7bf5e5beea411a36 /src/models/userUpkAnswerSlice.ts | |
| parent | 897e93b3a6596d25c19fe0a3579d9cd4c9ea66e7 (diff) | |
| download | panel-ui-e5dac8b9d61b175b09d859643a94ea91ee6ef48d.tar.gz panel-ui-e5dac8b9d61b175b09d859643a94ea91ee6ef48d.zip | |
Demographics page. userMarketplaceAnswer & userUpkAnswer redux stores.
Diffstat (limited to 'src/models/userUpkAnswerSlice.ts')
| -rw-r--r-- | src/models/userUpkAnswerSlice.ts | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/models/userUpkAnswerSlice.ts b/src/models/userUpkAnswerSlice.ts new file mode 100644 index 0000000..9cb0e9b --- /dev/null +++ b/src/models/userUpkAnswerSlice.ts @@ -0,0 +1,54 @@ +import {createSlice, PayloadAction} from '@reduxjs/toolkit' +import {UserProfileKnowledge} from "@/api"; +import type {RootState} from "@/store.ts"; + +const initialState: UserProfileKnowledge[] = [] + +const userUpkAnswerSlice = createSlice({ + name: 'upkAnswers', + initialState, + reducers: { + setUpkAnswers(state, action: PayloadAction<UserProfileKnowledge[]>) { + const existingIds = new Set(state.map(q => q.property_id)); + const newQuestions = action.payload.filter(q => !existingIds.has(q.property_id)); + state.push(...newQuestions); + } + } +}) + + +export const { + setUpkAnswers, +} = userUpkAnswerSlice.actions; + +export default userUpkAnswerSlice.reducer; + +export const selectUserUpkAnswers = (state: RootState) => state.userUpkAnswers + + +// educational_attainment +export const selectUserAge = (state: RootState): number | null => { + let upk_a = state.userUpkAnswers.find(a => a.property_label === "age_in_years") + if (upk_a) { + return Number(upk_a.answer[0].value) + } else { + return null + } +} +export const selectUserZip = (state: RootState): string | null => { + let upk_a = state.userUpkAnswers.find(a => a.property_label === "home_postal_code") + if (upk_a) { + return upk_a.answer[0].value + } else { + return null + } +} + +export const selectUserGender = (state: RootState): string | null => { + let upk_a = state.userUpkAnswers.find(a => a.property_label === "gender") + if (upk_a) { + return upk_a.answer[0].label + } else { + return null + } +}
\ No newline at end of file |
