diff --git a/packages/app/src/components/PostCard/index.jsx b/packages/app/src/components/PostCard/index.jsx index ec44ecb1..692918ea 100644 --- a/packages/app/src/components/PostCard/index.jsx +++ b/packages/app/src/components/PostCard/index.jsx @@ -7,6 +7,8 @@ import moment from "moment" import classnames from "classnames" import loadable from "@loadable/component" +import { processString } from "utils" + import CSSMotion from "rc-animate/lib/CSSMotion" import useLayoutEffect from "rc-util/lib/hooks/useLayoutEffect" @@ -178,8 +180,28 @@ const PostContent = React.memo((props) => { }) + // parse message + const regexs = [ + { + regex: /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi, + fn: (key, result) => { + return {result[1]} + } + }, + { + regex: /(@[a-zA-Z0-9_]+)/gi, + fn: (key, result) => { + return window.app.setLocation(`/@${result[1].substr(1)}`)}>{result[1]} + } + }, + ] + + message = processString(regexs)(message) + return