Merge upstream changes.
This commit is contained in:
commit
708eaca511
|
@ -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']
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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),
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue