Skip to content

Commit cd55e5c

Browse files
authored
Merge branch 'master' into beta-new
2 parents 0426ba5 + f131834 commit cd55e5c

1 file changed

Lines changed: 28 additions & 2 deletions

File tree

functions/utilities/getTypeSafeUser.js

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ const validateBoolean = (value) => {
3030
return null
3131
}
3232

33+
const validateStringArray = (value) => {
34+
if(Array.isArray(value)) {
35+
return value.filter(s => typeof s === 'string' && s);
36+
}
37+
return null
38+
}
39+
3340
const getGuardianEmails = (user) => {
3441
try {
3542
return [...new Set([user?.guardianEmail, ...(user?.emails?.filter(e => e?.type === 'guardian').map(e => e?.email) || [])])].filter(s => typeof s === 'string' && s)
@@ -39,6 +46,15 @@ const getGuardianEmails = (user) => {
3946
}
4047
}
4148

49+
const getAdditionalStudentEmails = (user) => {
50+
try {
51+
return [...new Set([...(user?.emails?.filter(e => e?.type === 'student').map(e => e?.email) || [])])].filter(s => typeof s === 'string' && s)
52+
} catch (error) {
53+
console.error('Error getting student emails:', error);
54+
return [];
55+
}
56+
}
57+
4258
// This data gets passed through Graphql
4359
// As firebase data is set client side, it can't always be trusted
4460
// If a value is wrong type, it will be set to null
@@ -51,15 +67,15 @@ const getTypeSafeUser = (user) => {
5167
uid: validateString(user.uid),
5268
first: validateString(user.first),
5369
last: validateString(user.last),
54-
teacherCode: validateString(user.teacherCode),
70+
teacherCode: null, // deprecated - use teacherCodes array instead
5571
code: validateString(user.code),
5672
level: validateString(user.level),
5773
birthMonth: validateNumber(user.birthMonth),
5874
birthYear: validateNumber(user.birthYear),
5975
schoolName: validateString(user.schoolName),
6076
phoneNumber: validateString(user.phoneNumber),
6177
postCode: validateString(user.postCode),
62-
guardianEmail: validateString(user.guardianEmail),
78+
guardianEmail: null, // deprecated - use guardianEmails array instead
6379
guardianEmails: getGuardianEmails(user),
6480
privacy: user.privacy,
6581
privacyDebug: user.privacyDebug,
@@ -75,6 +91,16 @@ const getTypeSafeUser = (user) => {
7591
acceptedEuclidTerms: validateBoolean(user.acceptedEuclidTerms),
7692
euclidEnrolYearGroup: validateString(user.euclidEnrolYearGroup),
7793
euclidEnrolTimestamp: validateNumber(user.euclidEnrolTimestamp),
94+
95+
teacherCodes: validateStringArray(user.teacherCode),
96+
additionalStudentEmails: getAdditionalStudentEmails(user),
97+
ethnicity: validateString(user.ethnicity),
98+
country: validateString(user.country),
99+
ukCountry: validateString(user.ukCountry),
100+
homeEducated: validateBoolean(user.homeEducated),
101+
homeEducatedConfirm: validateBoolean(user.homeEducatedConfirm),
102+
schoolEmail: validateString(user.schoolEmail),
103+
78104
privacyDebug: {
79105
firstSeen: validateNumber(user[firstSeenKey]),
80106
latestTouch: validateNumber(user[latestTouchKey]),

0 commit comments

Comments
 (0)