aboutsummaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
Diffstat (limited to 'src/models')
-rw-r--r--src/models/app.ts2
-rw-r--r--src/models/upkAnswerSlice.ts23
-rw-r--r--src/models/userMarketplaceAnswerSlice.ts (renamed from src/models/marketplaceAnswerSlice.ts)15
-rw-r--r--src/models/userUpkAnswerSlice.ts54
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