From aea5601acd9c2438707f304abe23132ca0245bb6 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Tue, 20 Sep 2022 00:51:37 +0200 Subject: [PATCH] support post types --- .../app/src/components/PostCard/index.jsx | 58 ++++++++++++++++--- .../app/src/components/PostCard/index.less | 47 +++++++++++++++ 2 files changed, 98 insertions(+), 7 deletions(-) diff --git a/packages/app/src/components/PostCard/index.jsx b/packages/app/src/components/PostCard/index.jsx index a888ee85..300ed59c 100644 --- a/packages/app/src/components/PostCard/index.jsx +++ b/packages/app/src/components/PostCard/index.jsx @@ -216,7 +216,17 @@ export class PostAdditions extends React.PureComponent { } export const PostContent = React.memo((props) => { - let { message, additions } = props.data + let { message, additions, type, data } = props.data + + if (data) { + data = JSON.parse(data) + } + + const onClickPlaylist = () => { + if (data.playlist) { + app.AudioPlayer.startPlaylist(data.playlist) + } + } // parse message const regexs = [ @@ -236,13 +246,46 @@ export const PostContent = React.memo((props) => { message = processString(regexs)(message) - return
-
- {message} -
+ switch (type) { + case "playlist": { + return
+
- {additions.length > 0 && } -
+
+
+

+ {data.title ?? "Untitled Playlist"} +

+

+ {data.artist} +

+
+ +
+ + + Play + +
+
+
+ } + default: { + return
+
+ {message} +
+ + {additions.length > 0 && } +
+ } + } }) export const PostActions = (props) => { @@ -395,6 +438,7 @@ export const PostCard = React.memo(({ id={data._id} className={classnames( "postCard", + data.type, { ["liked"]: hasLiked }, { ["noHide"]: !expansibleActions }, { ["fullmode"]: fullmode }, diff --git a/packages/app/src/components/PostCard/index.less b/packages/app/src/components/PostCard/index.less index 869996ce..ac8227ae 100644 --- a/packages/app/src/components/PostCard/index.less +++ b/packages/app/src/components/PostCard/index.less @@ -16,6 +16,53 @@ outline-style: solid; outline-color: transparent; + &.playlist { + .wrapper { + .content{ + flex-direction: row; + background-color: var(--background-color-primary); + padding: 20px; + + .playlistCover { + width: 200px; + height: 200px; + background-position: center; + background-size: cover; + background-repeat: no-repeat; + border-radius: 8px; + + margin-right: 25px; + } + + .playlistTitle { + h1 { + font-size: 1.5rem; + font-family: "Space Grotesk", sans-serif; + margin: 0; + } + h3 { + font-size: 0.9rem; + // make italic + font-style: italic; + } + + .actions { + width: 100%; + + margin-top: 20px; + + display: inline-flex; + flex-direction: column; + + align-items: center; + justify-content: center; + } + } + } + } + + } + &.liked { filter: drop-shadow(0px 0px 2px var(--primaryColor)); outline-color: var(--primaryColor);