Skip to content

Commit

Permalink
Implement reblog, favourite, bookmark actions
Browse files Browse the repository at this point in the history
  • Loading branch information
h3poteto committed Nov 13, 2023
1 parent cd87a92 commit a6a7e9d
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 6 deletions.
66 changes: 61 additions & 5 deletions renderer/components/timelines/status/Actions.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,71 @@
import { Entity, MegalodonInterface } from 'megalodon'
import { FaBookmark, FaEllipsis, FaReply, FaRetweet, FaStar } from 'react-icons/fa6'

type Props = {}
type Props = {
status: Entity.Status
client: MegalodonInterface
onRefresh: () => void
}

export default function Actions(props: Props) {
const reblog = async () => {
if (props.status.reblogged) {
await props.client.unreblogStatus(props.status.id)
} else {
await props.client.reblogStatus(props.status.id)
}
props.onRefresh()
}

const favourite = async () => {
if (props.status.favourited) {
await props.client.unfavouriteStatus(props.status.id)
} else {
await props.client.favouriteStatus(props.status.id)
}
props.onRefresh()
}

const bookmark = async () => {
if (props.status.bookmarked) {
await props.client.unbookmarkStatus(props.status.id)
} else {
await props.client.bookmarkStatus(props.status.id)
}
props.onRefresh()
}

return (
<div className="flex gap-6">
<FaReply className="w-4 text-gray-400 cursor-pointer hover:text-gray-600" />
<FaRetweet className="w-4 text-gray-400 cursor-pointer hover:text-gray-600" />
<FaStar className="w-4 text-gray-400 cursor-pointer hover:text-gray-600" />
<FaBookmark className="w-4 text-gray-400 cursor-pointer hover:text-gray-600" />
<FaReply className={`w-4 text-gray-400 cursor-pointer hover:text-gray-600`} />
<FaRetweet className={`${retweetColor(props.status)} w-4 cursor-pointer hover:text-gray-600`} onClick={reblog} />
<FaStar className={`${favouriteColor(props.status)} w-4 cursor-pointer hover:text-gray-600`} onClick={favourite} />
<FaBookmark className={`${bookmarkColor(props.status)} w-4 cursor-pointer hover:text-gray-600`} onClick={bookmark} />
<FaEllipsis className="w-4 text-gray-400 cursor-pointer hover:text-gray-600" />
</div>
)
}

const retweetColor = (status: Entity.Status) => {
if (status.reblogged) {
return 'text-blue-600'
} else {
return 'text-gray-400'
}
}

const favouriteColor = (status: Entity.Status) => {
if (status.favourited) {
return 'text-orange-400'
} else {
return 'text-gray-400'
}
}

const bookmarkColor = (status: Entity.Status) => {
if (status.bookmarked) {
return 'text-rose-500'
} else {
return 'text-gray-400'
}
}
2 changes: 1 addition & 1 deletion renderer/components/timelines/status/Status.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export default function Status(props: Props) {
{status.poll && <Poll poll={status.poll} onRefresh={onRefresh} client={props.client} />}
{status.card && <Card card={status.card} />}
<Media media={status.media_attachments} />
<Actions />
<Actions status={status} client={props.client} onRefresh={onRefresh} />
</div>
</div>
</div>
Expand Down

0 comments on commit a6a7e9d

Please sign in to comment.