Merge pull request #1872 from kendallm/master

Add bluesky socials support
This commit is contained in:
Blake Campbell 2025-02-13 22:17:07 -05:00 committed by GitHub
commit 3803c1bfef
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 50 additions and 2 deletions

View file

@ -62,6 +62,7 @@ module.exports.Schema = Joi.object({
.required(),
twitter: Joi.string().pattern(new RegExp(/^@?(\w){1,15}$/)),
mastodon: Joi.string().pattern(new RegExp(/^@(\w){1,30}@(\w)+\.(.?\w)+$/)),
bluesky: Joi.string().pattern(new RegExp(/^@[\w-]+\.(?:[\w-]+\.)?[\w-]+$/)),
emoji: Joi.string().allow(''),
computer: Joi.string().valid('apple', 'windows', 'linux', 'bsd'),
phone: Joi.string().valid('iphone', 'android', 'windowsphone', 'flipphone'),

View file

@ -7,7 +7,7 @@ import * as icons from '../util/icons';
export default function Person({ person }) {
const url = new URL(person.url);
const twitter = person.twitter
? `https://unavatar.io/${person.twitter.replace('@', '')}`
? `https://unavatar.io/x/${person.twitter.replace('@', '')}`
: null;
const website = `https://unavatar.io/${url.host}`;
const unavatar = person.twitter
@ -93,8 +93,22 @@ export default function Person({ person }) {
</div>
)}
{/* If they have a bluesky, and no twitter/mastodon, show that */}
{person.bluesky && !person.twitter && (
<div className="SocialHandle">
<a
href={`https://bsky.app/profile/${person.bluesky.replace("@", "")}`}
target="_blank"
rel="noopener noreferrer"
>
<span className="at">@</span>
{person.bluesky.substring(1)}
</a>
</div>
)}
{/* If they have a mastodon, and no twitter, show that */}
{person.mastodon && !person.twitter && (
{person.mastodon && !person.twitter && !person.bluesky && (
<div className="SocialHandle">
<a
href={`https://${mastodonServer}/@${mastodonHandle}`}
@ -151,5 +165,13 @@ Person.propTypes = {
);
}
},
bluesky(props, propName, componentName) {
if (!/^@(\w)+\.(\w)+\.(\w)+$/.test(props[propName])) {
return new Error(
`Invalid prop \`${propName}\` supplied to` +
` \`${componentName}\`. This isn't a legit Bluesky handle.`
);
}
},
}),
};

View file

@ -9509,6 +9509,31 @@ module.exports = [
'Node.js',
],
},
{
name: 'Kendall Morgan',
description:
'Software engineer by day. Hip-hop, coffee, and street photography aficionado by night.',
url: 'https://kendallmorgan.com/uses',
bluesky: '@kendallmorgan.com',
mastodon: '@kendallmorgan@mastodon.social',
emoji: '☕',
computer: 'apple',
country: '🇺🇸',
phone: 'iphone',
tags: [
'Developer',
'Programmer',
'Engineer',
'Backend',
'Distributed Systems',
'Golang',
'Typescript',
'Javascript',
'Python',
'Linux',
'Cloud',
],
},
{
name: 'Kenny Robinson',
description: