| 37 | // Accessible via eg. `User.broadName(userObj)` |
| 38 | const UserLib = { |
| 39 | broadName (user) { |
| 40 | if (user.deleted) { return '(deleted)' } |
| 41 | let name = _.filter([user.firstName, user.lastName]).join(' ') |
| 42 | if (features?.china) { |
| 43 | name = user.firstName |
| 44 | } |
| 45 | if (!/[a-z]/.test(name)) { |
| 46 | name = _.string.titleize(name) // Rewrite all-uppercase names to title-case for display |
| 47 | } |
| 48 | if (name) { return name } |
| 49 | ({ |
| 50 | name, |
| 51 | } = user) |
| 52 | if (name) { return name } |
| 53 | const [emailName, emailDomain] = Array.from(user.email?.split('@') || []) // eslint-disable-line no-unused-vars |
| 54 | if (emailName) { return emailName } |
| 55 | return 'Anonymous' |
| 56 | }, |
| 57 | isSmokeTestUser (user) { return utils.isSmokeTestEmail(user.email) }, |
| 58 | isTeacher (user, includePossibleTeachers = false) { |
| 59 | if (includePossibleTeachers && (user.role === 'possible teacher')) { return true } // They maybe haven't created an account but we think they might be a teacher based on behavior |