17 lines
659 B
TypeScript
17 lines
659 B
TypeScript
import { Fragment } from 'react';
|
|
import { RedditUsernameLink } from './reddit-username-link.js';
|
|
|
|
const USER_MENTION = /(u\/[A-Za-z0-9_-]+|@?t2_[A-Za-z0-9]+(?::reddit\.com)?)/gi;
|
|
|
|
export function RedditUserText({ children }: { children: string }) {
|
|
return children.split(USER_MENTION).map((part, index) => {
|
|
if (/^u\/(?!t2_)[A-Za-z0-9_-]+$/i.test(part)) {
|
|
return <RedditUsernameLink key={`${part}-${index}`} username={part} />;
|
|
}
|
|
if (/^(?:@?t2_)/i.test(part) || /^u\/t2_/i.test(part)) {
|
|
return <Fragment key={`${part}-${index}`}>Reddit user</Fragment>;
|
|
}
|
|
return <Fragment key={`${part}-${index}`}>{part}</Fragment>;
|
|
});
|
|
}
|