Add go to last msg button in chat bottom panel
This commit is contained in:
parent
3bc8d2466b
commit
ccbfe8e6d5
@ -102,6 +102,54 @@ const tplEmojiOnly = (o) => {
|
|||||||
</div>`
|
</div>`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class BackToLastMsg extends CustomElement {
|
||||||
|
static get properties () {
|
||||||
|
return {
|
||||||
|
jid: { type: String }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
show = false
|
||||||
|
|
||||||
|
async connectedCallback () {
|
||||||
|
super.connectedCallback()
|
||||||
|
this.model = _converse.chatboxes.get(this.jid)
|
||||||
|
await this.model.initialized
|
||||||
|
|
||||||
|
let scrolled = this.model.ui.get('scrolled')
|
||||||
|
let hasUnreadMsg = this.model.get('num_unread_general') > 0
|
||||||
|
this.listenTo(this.model.ui, 'change:scrolled', () => {
|
||||||
|
scrolled = this.model.ui.get('scrolled')
|
||||||
|
this.show = scrolled && !hasUnreadMsg
|
||||||
|
this.requestUpdate()
|
||||||
|
})
|
||||||
|
this.listenTo(this.model, 'change:num_unread_general', () => {
|
||||||
|
hasUnreadMsg = this.model.get('num_unread_general') > 0
|
||||||
|
// Do not show the element if there is new messages since there is another element for that
|
||||||
|
this.show = scrolled && !hasUnreadMsg
|
||||||
|
this.requestUpdate()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onClick (ev) {
|
||||||
|
ev?.preventDefault()
|
||||||
|
const chatContainer = document.querySelector('converse-chat-content')
|
||||||
|
chatContainer?.scrollTo({ top: chatContainer.scrollHeight })
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
return this.show
|
||||||
|
? html`<div class="livechat-back-to-last-msg new-msgs-indicator" @click=${this.onClick}>
|
||||||
|
▼ ${
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
__(LOC_back_to_last_msg)
|
||||||
|
} ▼
|
||||||
|
</div>`
|
||||||
|
: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
api.elements.define('livechat-back-to-last-msg', BackToLastMsg)
|
||||||
|
|
||||||
const tplViewerMode = (o) => {
|
const tplViewerMode = (o) => {
|
||||||
if (!api.settings.get('livechat_enable_viewer_mode')) {
|
if (!api.settings.get('livechat_enable_viewer_mode')) {
|
||||||
return html``
|
return html``
|
||||||
@ -165,6 +213,7 @@ export default (o) => {
|
|||||||
${tplViewerMode(o)}
|
${tplViewerMode(o)}
|
||||||
${tplSlowMode(o)}
|
${tplSlowMode(o)}
|
||||||
${tplEmojiOnly(o)}
|
${tplEmojiOnly(o)}
|
||||||
|
<livechat-back-to-last-msg jid=${o.model.get('jid')}></livechat-back-to-last-msg>
|
||||||
${
|
${
|
||||||
mutedAnonymousMessage
|
mutedAnonymousMessage
|
||||||
? html`<span class="muc-bottom-panel muc-bottom-panel--muted">${mutedAnonymousMessage}</span>`
|
? html`<span class="muc-bottom-panel muc-bottom-panel--muted">${mutedAnonymousMessage}</span>`
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
// SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
|
// SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
|
||||||
|
// SPDX-FileCopyrightText: 2025 Nicolas Chesnais <https://autre.space>
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: AGPL-3.0-only
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
@ -68,7 +69,8 @@ const locKeys = [
|
|||||||
'announcements_message_type_standard',
|
'announcements_message_type_standard',
|
||||||
'announcements_message_type_announcement',
|
'announcements_message_type_announcement',
|
||||||
'announcements_message_type_highlight',
|
'announcements_message_type_highlight',
|
||||||
'announcements_message_type_warning'
|
'announcements_message_type_warning',
|
||||||
|
'back_to_last_msg'
|
||||||
]
|
]
|
||||||
|
|
||||||
module.exports = locKeys
|
module.exports = locKeys
|
||||||
|
@ -682,3 +682,4 @@ converse_theme_warning_description: |
|
|||||||
It is strongly recommanded to keep the "Peertube theme", in combinaison with the "Automatic color detection" feature.
|
It is strongly recommanded to keep the "Peertube theme", in combinaison with the "Automatic color detection" feature.
|
||||||
Otherwise some user may experience issues depending on the Peertube theme they use.
|
Otherwise some user may experience issues depending on the Peertube theme they use.
|
||||||
</span>
|
</span>
|
||||||
|
back_to_last_msg: Go back to last message
|
||||||
|
@ -654,3 +654,4 @@ livechat_configuration_channel_no_duplicate_desc: "En activant cette option, le
|
|||||||
de modération modérera automatiquement les messages en double.\nCela signifie que
|
de modération modérera automatiquement les messages en double.\nCela signifie que
|
||||||
si un⋅e utilisateur⋅rice envoie deux fois le même message en l'espace de X secondes,
|
si un⋅e utilisateur⋅rice envoie deux fois le même message en l'espace de X secondes,
|
||||||
le deuxième message sera supprimé.\n"
|
le deuxième message sera supprimé.\n"
|
||||||
|
back_to_last_msg: Retourner au dernier message
|
||||||
|
Loading…
x
Reference in New Issue
Block a user