From f04b4994d6d06efb6c252a9713939b640a5cc2e2 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 3 Jun 2022 21:12:32 +0200 Subject: [PATCH] added message parsing --- .../app/src/components/PostCard/index.jsx | 24 ++++++++++++++++++- .../app/src/components/PostCard/index.less | 12 ++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) 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
- {message} +
+ {message} +
{additions.length > 0 &&
diff --git a/packages/app/src/components/PostCard/index.less b/packages/app/src/components/PostCard/index.less index feb6c8ae..ef9ed280 100644 --- a/packages/app/src/components/PostCard/index.less +++ b/packages/app/src/components/PostCard/index.less @@ -133,14 +133,16 @@ padding: 0 10px 10px 10px; border-radius: 8px; - font-size: 14px; - font-family: "Poppins", sans-serif; - color: var(--background-color-contrast); overflow: hidden; - word-break: break-all; - user-select: text; + + .message { + font-size: 14px; + font-family: "Poppins", sans-serif; + word-break: break-all; + user-select: text; + } .additions { width: 100%;