2018-09-27 13:25:49 -07:00
|
|
|
import React from 'react';
|
|
|
|
import { Icon } from 'antd';
|
|
|
|
import keybaseIcon from 'static/images/keybase.svg';
|
2018-11-16 15:05:17 -08:00
|
|
|
import { SOCIAL_SERVICE, SocialMedia, SocialInfo } from 'types';
|
2018-09-27 13:25:49 -07:00
|
|
|
|
|
|
|
const accountNameRegex = '([a-zA-Z0-9-_]*)';
|
2018-11-16 15:05:17 -08:00
|
|
|
export const SOCIAL_INFO: { [key in SOCIAL_SERVICE]: SocialInfo } = {
|
|
|
|
[SOCIAL_SERVICE.GITHUB]: {
|
|
|
|
service: SOCIAL_SERVICE.GITHUB,
|
2018-09-27 13:25:49 -07:00
|
|
|
name: 'Github',
|
|
|
|
format: `https://github.com/${accountNameRegex}`,
|
|
|
|
icon: <Icon type="github" />,
|
|
|
|
},
|
2018-11-16 15:05:17 -08:00
|
|
|
[SOCIAL_SERVICE.TWITTER]: {
|
|
|
|
service: SOCIAL_SERVICE.TWITTER,
|
2018-09-27 13:25:49 -07:00
|
|
|
name: 'Twitter',
|
|
|
|
format: `https://twitter.com/${accountNameRegex}`,
|
|
|
|
icon: <Icon type="twitter" />,
|
|
|
|
},
|
2018-11-16 15:05:17 -08:00
|
|
|
[SOCIAL_SERVICE.LINKEDIN]: {
|
|
|
|
service: SOCIAL_SERVICE.LINKEDIN,
|
2018-09-27 13:25:49 -07:00
|
|
|
name: 'LinkedIn',
|
|
|
|
format: `https://linkedin.com/in/${accountNameRegex}`,
|
|
|
|
icon: <Icon type="linkedin" />,
|
|
|
|
},
|
2018-11-16 15:05:17 -08:00
|
|
|
[SOCIAL_SERVICE.KEYBASE]: {
|
|
|
|
service: SOCIAL_SERVICE.KEYBASE,
|
2018-09-27 13:25:49 -07:00
|
|
|
name: 'KeyBase',
|
|
|
|
format: `https://keybase.io/${accountNameRegex}`,
|
|
|
|
icon: <Icon component={keybaseIcon} />,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
2018-11-16 15:05:17 -08:00
|
|
|
export function socialMediaToUrl(sm: SocialMedia): string {
|
|
|
|
return SOCIAL_INFO[sm.service].format.replace(accountNameRegex, sm.username);
|
2018-09-27 13:25:49 -07:00
|
|
|
}
|