aboutsummaryrefslogtreecommitdiff
path: root/src/models/userUpkAnswerSlice.ts
blob: 9cb0e9bf412eef10087c60183c0431f677f461bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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
    }
}