mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-01-03 15:05:01 -05:00
* fix(layout): Fix Settings layout in firefox * chore(availableForHire): Remove available for hire setting * feat(helpers): Use helper components for Settings layout * fix(map): Fix undefined lang requested * feat(settings): Expand Settings page functionality * chore(pledge): Remove pledge from Settings * fix(about): Adjust AboutSettings layout * fix(portfolio): Improve PortfolioSettings layout * fix(email): Improve EmailSettings layout * fix(settings): Align save buttons with form fields * fix(AHP): Format AHP * fix(DangerZone): Adjust DangerZone layout * fix(projectSettings): Change Button Copy * fix(CertSettings): Fix certificate claim logic * chore(lint): Lint
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import { Observable } from 'rx';
|
|
import _ from 'lodash';
|
|
|
|
import {
|
|
userPropsForSession,
|
|
normaliseUserFields
|
|
} from '../utils/publicUserProps';
|
|
|
|
export default function userServices() {
|
|
return {
|
|
name: 'user',
|
|
read: (req, resource, params, config, cb) => {
|
|
const { user } = req;
|
|
Observable.if(
|
|
() => !user,
|
|
Observable.of({}),
|
|
Observable.defer(() => user.getChallengeMap$())
|
|
.map(challengeMap => ({ ...user.toJSON(), challengeMap }))
|
|
.map(user => ({
|
|
entities: {
|
|
user: {
|
|
[user.username]: {
|
|
..._.pick(user, userPropsForSession),
|
|
isEmailVerified: !!user.emailVerified,
|
|
isGithub: !!user.githubURL,
|
|
isLinkedIn: !!user.linkedIn,
|
|
isTwitter: !!user.twitter,
|
|
isWebsite: !!user.website,
|
|
...normaliseUserFields(user)
|
|
}
|
|
}
|
|
},
|
|
result: user.username
|
|
})
|
|
)
|
|
)
|
|
.subscribe(
|
|
user => cb(null, user),
|
|
cb
|
|
);
|
|
}
|
|
};
|
|
}
|