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>`
|
||||
}
|
||||
|
||||
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) => {
|
||||
if (!api.settings.get('livechat_enable_viewer_mode')) {
|
||||
return html``
|
||||
@ -165,6 +213,7 @@ export default (o) => {
|
||||
${tplViewerMode(o)}
|
||||
${tplSlowMode(o)}
|
||||
${tplEmojiOnly(o)}
|
||||
<livechat-back-to-last-msg jid=${o.model.get('jid')}></livechat-back-to-last-msg>
|
||||
${
|
||||
mutedAnonymousMessage
|
||||
? 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: 2025 Nicolas Chesnais <https://autre.space>
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
@ -68,7 +69,8 @@ const locKeys = [
|
||||
'announcements_message_type_standard',
|
||||
'announcements_message_type_announcement',
|
||||
'announcements_message_type_highlight',
|
||||
'announcements_message_type_warning'
|
||||
'announcements_message_type_warning',
|
||||
'back_to_last_msg'
|
||||
]
|
||||
|
||||
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.
|
||||
Otherwise some user may experience issues depending on the Peertube theme they use.
|
||||
</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
|
||||
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"
|
||||
back_to_last_msg: Retourner au dernier message
|
||||
|
Loading…
x
Reference in New Issue
Block a user