Finish the upvote/downvote implementation
This commit is contained in:
parent
e650d98924
commit
1fbc4cf1f2
32 changed files with 1207 additions and 587 deletions
|
@ -7,12 +7,15 @@ import {s, colors} from '../../lib/styles'
|
|||
interface PostCtrlsOpts {
|
||||
replyCount: number
|
||||
repostCount: number
|
||||
likeCount: number
|
||||
upvoteCount: number
|
||||
downvoteCount: number
|
||||
isReposted: boolean
|
||||
isLiked: boolean
|
||||
isUpvoted: boolean
|
||||
isDownvoted: boolean
|
||||
onPressReply: () => void
|
||||
onPressToggleRepost: () => void
|
||||
onPressToggleLike: () => void
|
||||
onPressToggleUpvote: () => void
|
||||
onPressToggleDownvote: () => void
|
||||
}
|
||||
|
||||
export function PostCtrls(opts: PostCtrlsOpts) {
|
||||
|
@ -36,22 +39,27 @@ export function PostCtrls(opts: PostCtrlsOpts) {
|
|||
{opts.repostCount}
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity style={styles.ctrl} onPress={opts.onPressToggleLike}>
|
||||
{opts.isLiked ? (
|
||||
<TouchableOpacity style={styles.ctrl} onPress={opts.onPressToggleUpvote}>
|
||||
{opts.isUpvoted ? (
|
||||
<UpIconSolid style={styles.ctrlIconUpvoted} size={18} />
|
||||
) : (
|
||||
<UpIcon style={styles.ctrlIcon} size={18} />
|
||||
)}
|
||||
<Text style={opts.isLiked ? [s.bold, s.blue3, s.f13] : s.f13}>
|
||||
{opts.likeCount}
|
||||
<Text style={opts.isUpvoted ? [s.bold, s.red3, s.f13] : s.f13}>
|
||||
{opts.upvoteCount}
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity style={styles.ctrl} onPress={opts.onPressToggleLike}>
|
||||
{opts.isLiked ? (
|
||||
<TouchableOpacity
|
||||
style={styles.ctrl}
|
||||
onPress={opts.onPressToggleDownvote}>
|
||||
{opts.isDownvoted ? (
|
||||
<DownIconSolid style={styles.ctrlIconDownvoted} size={18} />
|
||||
) : (
|
||||
<DownIcon style={styles.ctrlIcon} size={18} />
|
||||
)}
|
||||
<Text style={opts.isDownvoted ? [s.bold, s.blue3, s.f13] : s.f13}>
|
||||
{opts.downvoteCount}
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
)
|
||||
|
@ -78,10 +86,10 @@ const styles = StyleSheet.create({
|
|||
},
|
||||
ctrlIconUpvoted: {
|
||||
marginRight: 5,
|
||||
color: colors.blue3,
|
||||
color: colors.red3,
|
||||
},
|
||||
ctrlIconDownvoted: {
|
||||
marginRight: 5,
|
||||
color: colors.red3,
|
||||
color: colors.blue3,
|
||||
},
|
||||
})
|
||||
|
|
|
@ -31,7 +31,7 @@ export function UserInfoText({
|
|||
useEffect(() => {
|
||||
let aborted = false
|
||||
// TODO use caching to reduce loads
|
||||
store.api.app.bsky.actor.getProfile({user: did}).then(
|
||||
store.api.app.bsky.actor.getProfile({actor: did}).then(
|
||||
v => {
|
||||
if (aborted) return
|
||||
setProfile(v.data)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue