Vote imporvements

This commit is contained in:
mrfry 2021-05-04 18:12:12 +02:00
parent d22e20b79e
commit 5611fd8d66
2 changed files with 25 additions and 21 deletions

View file

@ -9,6 +9,7 @@ export default function UpDownVote({
upvotes,
downvotes,
userId,
disabled,
}) {
const upvoted = upvotes.includes(userId)
const downvoted = downvotes.includes(userId)
@ -19,6 +20,9 @@ export default function UpDownVote({
className={styles.action}
onClick={(e) => {
e.stopPropagation()
if (disabled) {
return
}
if (!upvoted) {
onUp()
} else {
@ -33,6 +37,9 @@ export default function UpDownVote({
className={styles.action}
onClick={(e) => {
e.stopPropagation()
if (disabled) {
return
}
if (!downvoted) {
onDown()
} else {

View file

@ -193,6 +193,7 @@ export default function UserFiles({ router, globalData }) {
const [usageShowing, setUsageShowing] = useState(false)
const [searchTerm, setSearchTerm] = useState()
const [uploading, setUploading] = useState(false)
const [votingDisabled, setVotingDisabled] = useState(false)
const currDir = router.query.dir ? decodeURIComponent(router.query.dir) : ''
@ -236,6 +237,19 @@ export default function UserFiles({ router, globalData }) {
}
}
const handleVote = (type, dir) => {
setVotingDisabled(true)
vote(type, dir)
.then((res) => {
setDirs(res.files)
setVotingDisabled(false)
})
.catch((res) => {
alert(res.msg)
setVotingDisabled(false)
})
}
const renderDirList = (dirs) => {
return (
<div>
@ -348,35 +362,18 @@ export default function UserFiles({ router, globalData }) {
{Array.isArray(upvotes) && Array.isArray(downvotes) && (
<UpDownVote
onUp={() => {
vote('up', dir)
.then((res) => {
setDirs(res.files)
})
.catch((res) => {
alert(res.msg)
})
handleVote('up', dir)
}}
onDown={() => {
vote('down', dir)
.then((res) => {
setDirs(res.files)
})
.catch((res) => {
alert(res.msg)
})
handleVote('down', dir)
}}
onClear={() => {
vote('clear', dir)
.then((res) => {
setDirs(res.files)
})
.catch((res) => {
alert(res.msg)
})
handleVote('clear', dir)
}}
upvotes={upvotes}
downvotes={downvotes}
userId={userId}
disabled={votingDisabled}
/>
)}
</div>