Merge upstream changes.

This commit is contained in:
Will O'Beirne 2018-11-26 20:29:33 -05:00
commit 708eaca511
No known key found for this signature in database
GPG Key ID: 44C190DB5DEAF9F6
9 changed files with 22 additions and 15 deletions

View File

@ -124,17 +124,22 @@ class SocialMediaSchema(ma.Schema):
model = SocialMedia
# Fields to expose
fields = (
"url",
"service",
"username",
)
url = ma.Method("get_url")
service = ma.Method("get_service")
username = ma.Method("get_username")
def get_url(self, obj):
return obj.social_media_link
def get_service(self, obj):
info = get_social_info_from_url(obj.social_media_link)
return info['service']
def get_username(self, obj):
info = get_social_info_from_url(obj.social_media_link)
return info['username']

View File

@ -41,13 +41,9 @@ def get_me():
@blueprint.route("/<user_identity>", methods=["GET"])
@endpoint.api()
def get_user(user_identity):
print('get by ident')
user = User.get_by_identifier(email_address=user_identity, account_address=user_identity)
print(user)
if user:
print('dumping')
result = user_schema.dump(user)
print(result)
return result
else:
message = "User with account_address or user_identity matching {} not found".format(user_identity)

View File

@ -15,5 +15,5 @@ def get_social_info_from_url(url: str):
if match:
return {
'service': service,
'username': match.group(1),
'username': match.group(1)
}

View File

@ -44,7 +44,9 @@ class TestAPI(BaseUserConfig):
users_json = users_get_resp.json
self.assertEqual(users_json["avatar"]["imageUrl"], self.user.avatar.image_url)
self.assertEqual(users_json["socialMedias"][0]["socialMediaLink"], self.user.social_medias[0].social_media_link)
self.assertEqual(users_json["socialMedias"][0]["service"], 'GITHUB')
self.assertEqual(users_json["socialMedias"][0]["username"], 'groot')
self.assertEqual(users_json["socialMedias"][0]["link"], self.user.social_medias[0].social_media_link)
self.assertEqual(users_json["displayName"], self.user.display_name)
def test_get_single_user_by_account_address(self):
@ -54,7 +56,9 @@ class TestAPI(BaseUserConfig):
users_json = users_get_resp.json
self.assertEqual(users_json["avatar"]["imageUrl"], self.user.avatar.image_url)
self.assertEqual(users_json["socialMedias"][0]["socialMediaLink"], self.user.social_medias[0].social_media_link)
self.assertEqual(users_json["socialMedias"][0]["service"], 'GITHUB')
self.assertEqual(users_json["socialMedias"][0]["username"], 'groot')
self.assertEqual(users_json["socialMedias"][0]["link"], self.user.social_medias[0].social_media_link)
self.assertEqual(users_json["displayName"], self.user.display_name)
def test_create_user_duplicate_400(self):

View File

@ -2,7 +2,7 @@ import React from 'react';
import lodash from 'lodash';
import axios from 'api/axios';
import { Input, Form, Col, Row, Button, Alert } from 'antd';
import { SOCIAL_INFO } from 'utils/social';
import { SOCIAL_INFO, socialMediaToUrl } from 'utils/social';
import { SOCIAL_SERVICE, User } from 'types';
import { UserState } from 'modules/users/reducers';
import { getCreateTeamMemberError } from 'modules/create/utils';
@ -218,6 +218,7 @@ export default class ProfileEdit extends React.PureComponent<Props, State> {
socialMedias.push({
service,
username: value,
url: socialMediaToUrl(service, value),
});
}

View File

@ -6,7 +6,7 @@ import { usersActions } from 'modules/users';
import { UserState } from 'modules/users/reducers';
import ProfileEdit from './ProfileEdit';
import UserAvatar from 'components/UserAvatar';
import { SOCIAL_INFO, socialMediaToUrl } from 'utils/social';
import { SOCIAL_INFO } from 'utils/social';
import ShortAddress from 'components/ShortAddress';
import './ProfileUser.less';
import { AppState } from 'store/reducers';
@ -97,7 +97,7 @@ class ProfileUser extends React.Component<Props> {
const Social = ({ socialMedia }: { socialMedia: SocialMedia }) => {
return (
<a href={socialMediaToUrl(socialMedia)} target="_blank" rel="noopener nofollow">
<a href={socialMedia.url} target="_blank" rel="noopener nofollow">
<div className="ProfileUser-info-social-icon">
{SOCIAL_INFO[socialMedia.service].icon}
</div>

View File

@ -7,7 +7,7 @@ export function formatUserForPost(user: User) {
return {
...user,
avatar: user.avatar ? user.avatar.imageUrl : null,
socialMedias: user.socialMedias.map(socialMediaToUrl),
socialMedias: user.socialMedias.map(sm => socialMediaToUrl(sm.service, sm.username)),
};
}

View File

@ -1,7 +1,7 @@
import React from 'react';
import { Icon } from 'antd';
import keybaseIcon from 'static/images/keybase.svg';
import { SOCIAL_SERVICE, SocialMedia, SocialInfo } from 'types';
import { SOCIAL_SERVICE, SocialInfo } from 'types';
const accountNameRegex = '([a-zA-Z0-9-_]*)';
export const SOCIAL_INFO: { [key in SOCIAL_SERVICE]: SocialInfo } = {
@ -31,6 +31,6 @@ export const SOCIAL_INFO: { [key in SOCIAL_SERVICE]: SocialInfo } = {
},
};
export function socialMediaToUrl(sm: SocialMedia): string {
return SOCIAL_INFO[sm.service].format.replace(accountNameRegex, sm.username);
export function socialMediaToUrl(service: SOCIAL_SERVICE, username: string): string {
return SOCIAL_INFO[service].format.replace(accountNameRegex, username);
}

View File

@ -3,6 +3,7 @@ import React from 'react';
export type SocialAccountMap = Partial<{ [key in SOCIAL_SERVICE]: string }>;
export interface SocialMedia {
url: string;
service: SOCIAL_SERVICE;
username: string;
}