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}
+
+
+
+
+
+
+ }
+ 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);