diff options
Diffstat (limited to 'src/models')
| -rw-r--r-- | src/models/app.ts | 2 | ||||
| -rw-r--r-- | src/models/upkAnswerSlice.ts | 23 | ||||
| -rw-r--r-- | src/models/userMarketplaceAnswerSlice.ts (renamed from src/models/marketplaceAnswerSlice.ts) | 15 | ||||
| -rw-r--r-- | src/models/userUpkAnswerSlice.ts | 54 |
4 files changed, 64 insertions, 30 deletions
diff --git a/src/models/app.ts b/src/models/app.ts index 25b2412..27923db 100644 --- a/src/models/app.ts +++ b/src/models/app.ts @@ -1,4 +1,4 @@ -export type Page = 'offerwall' | 'questions' | 'cashout_methods'; +export type Page = 'offerwall' | 'questions' | 'demographics' | 'cashout_methods'; export interface App { targetId: string, diff --git a/src/models/upkAnswerSlice.ts b/src/models/upkAnswerSlice.ts deleted file mode 100644 index 7bd57f1..0000000 --- a/src/models/upkAnswerSlice.ts +++ /dev/null @@ -1,23 +0,0 @@ -import {createSlice, PayloadAction} from '@reduxjs/toolkit' -import {UserProfileKnowledge} from "@/api"; - -const upkInitialState: UserProfileKnowledge[] = [] - -const upkAnswerSlice = createSlice({ - name: 'upkAnswers', - upkInitialState, - 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, -} = upkAnswerSlice.actions; - -export default upkAnswerSlice.reducer;
\ No newline at end of file diff --git a/src/models/marketplaceAnswerSlice.ts b/src/models/userMarketplaceAnswerSlice.ts index a1db7f0..7cfe95b 100644 --- a/src/models/marketplaceAnswerSlice.ts +++ b/src/models/userMarketplaceAnswerSlice.ts @@ -1,12 +1,13 @@ import {createSlice, PayloadAction} from "@reduxjs/toolkit"; import {MarketProfileKnowledge} from "@/api"; +import type {RootState} from '@/store' -const marketplaceInitialState: MarketProfileKnowledge[] = [] +const initialState: MarketProfileKnowledge[] = [] -const marketplaceAnswerSlice = createSlice({ - name: 'marketplaceAnswers', - marketplaceInitialState, +const userMarketplaceAnswerSlice = createSlice({ + name: 'userMarketplaceAnswers', + initialState, reducers: { setMarketplaceAnswers(state, action: PayloadAction<MarketProfileKnowledge[]>) { // TODO: Does this need question_id + source uniqueness? @@ -19,6 +20,8 @@ const marketplaceAnswerSlice = createSlice({ export const { setMarketplaceAnswers, -} = marketplaceAnswerSlice.actions; +} = userMarketplaceAnswerSlice.actions; -export default marketplaceAnswerSlice.reducer; +export default userMarketplaceAnswerSlice.reducer; + +export const selectUserMarketplaceAnswers = (state: RootState) => state.userMarketplaceAnswers
\ No newline at end of file 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 |
