Poll fixes:

* update poll banner when user role changes
* don't show instructions if user can't vote
This commit is contained in:
John Livingston 2024-07-05 14:48:02 +02:00
parent 867c1debd6
commit 914de79400
No known key found for this signature in database
GPG Key ID: B17B5640CE66CDBC
3 changed files with 11 additions and 9 deletions

View File

@ -4,7 +4,7 @@
import { tplPoll } from '../templates/poll.js'
import { CustomElement } from 'shared/components/element.js'
import { converse, api } from '@converse/headless/core'
import { converse, _converse, api } from '@converse/headless/core'
import '../styles/poll.scss'
export default class MUCPollView extends CustomElement {
@ -26,6 +26,13 @@ export default class MUCPollView extends CustomElement {
this.buttonDisabled = false
this.requestUpdate()
})
this.listenTo(this.model.occupants, 'change:role', occupant => {
if (occupant.get('jid') !== _converse.bare_jid) { // only for myself
return
}
// visitors cant vote. So we must refresh the polls results when current occupant role changes.
this.requestUpdate()
})
}
render () {

View File

@ -16,11 +16,6 @@ converse.plugins.add('livechat-converse-poll', {
dependencies: ['converse-muc', 'converse-disco'],
initialize () {
// _converse.api.listen.on('chatRoomInitialized', muc => {
// muc.features.on('change:' + XMLNS_POLL, () => {
// // TODO: refresh headingbuttons?
// })
// })
// adding the poll actions in the MUC heading buttons:
_converse.api.listen.on('getHeadingButtons', getHeadingButtons)

View File

@ -6,8 +6,8 @@ import { html } from 'lit'
import { repeat } from 'lit/directives/repeat.js'
import { __ } from 'i18n'
function _tplPollInstructions (el, currentPoll) {
if (currentPoll.over) {
function _tplPollInstructions (el, currentPoll, canVote) {
if (currentPoll.over || !canVote) {
return html``
}
@ -115,7 +115,7 @@ export function tplPoll (el, currentPoll, canVote) {
<table><tbody>
${repeat(currentPoll.choices ?? [], (c) => c.choice, (c) => _tplChoice(el, currentPoll, c, canVote))}
</tbody></table>
${_tplPollInstructions(el, currentPoll)}
${_tplPollInstructions(el, currentPoll, canVote)}
${_tplPollEnd(el, currentPoll)}
`
}