mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-10 02:54:15 +00:00
support post types
This commit is contained in:
parent
f1cd2b2ced
commit
aea5601acd
@ -216,7 +216,17 @@ export class PostAdditions extends React.PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const PostContent = React.memo((props) => {
|
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
|
// parse message
|
||||||
const regexs = [
|
const regexs = [
|
||||||
@ -236,13 +246,46 @@ export const PostContent = React.memo((props) => {
|
|||||||
|
|
||||||
message = processString(regexs)(message)
|
message = processString(regexs)(message)
|
||||||
|
|
||||||
return <div className="content">
|
switch (type) {
|
||||||
<div className="message">
|
case "playlist": {
|
||||||
{message}
|
return <div className="content">
|
||||||
</div>
|
<div
|
||||||
|
className="playlistCover"
|
||||||
|
onClick={onClickPlaylist}
|
||||||
|
style={{
|
||||||
|
backgroundImage: `url(${data?.cover ?? "/assets/no_song.png"})`,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
{additions.length > 0 && <PostAdditions additions={additions} />}
|
<div className="playlistTitle">
|
||||||
</div>
|
<div>
|
||||||
|
<h1>
|
||||||
|
{data.title ?? "Untitled Playlist"}
|
||||||
|
</h1>
|
||||||
|
<h3>
|
||||||
|
{data.artist}
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="actions">
|
||||||
|
<antd.Button onClick={onClickPlaylist}>
|
||||||
|
<Icons.PlayCircle />
|
||||||
|
Play
|
||||||
|
</antd.Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return <div className="content">
|
||||||
|
<div className="message">
|
||||||
|
{message}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{additions.length > 0 && <PostAdditions additions={additions} />}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
export const PostActions = (props) => {
|
export const PostActions = (props) => {
|
||||||
@ -395,6 +438,7 @@ export const PostCard = React.memo(({
|
|||||||
id={data._id}
|
id={data._id}
|
||||||
className={classnames(
|
className={classnames(
|
||||||
"postCard",
|
"postCard",
|
||||||
|
data.type,
|
||||||
{ ["liked"]: hasLiked },
|
{ ["liked"]: hasLiked },
|
||||||
{ ["noHide"]: !expansibleActions },
|
{ ["noHide"]: !expansibleActions },
|
||||||
{ ["fullmode"]: fullmode },
|
{ ["fullmode"]: fullmode },
|
||||||
|
@ -16,6 +16,53 @@
|
|||||||
outline-style: solid;
|
outline-style: solid;
|
||||||
outline-color: transparent;
|
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 {
|
&.liked {
|
||||||
filter: drop-shadow(0px 0px 2px var(--primaryColor));
|
filter: drop-shadow(0px 0px 2px var(--primaryColor));
|
||||||
outline-color: var(--primaryColor);
|
outline-color: var(--primaryColor);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user