Log in with external Peertube account (#348):

* For anonymous users: new "log in using an external account" dialog, with the "remote Peertube account" options
* ConverseJS: using global vars for custom localized string (injected
  using Webpack)
This commit is contained in:
John Livingston
2024-04-08 19:02:56 +02:00
parent c55fabc972
commit 8fc8e3032b
15 changed files with 328 additions and 29 deletions

View File

@ -3,6 +3,7 @@ import { _converse, api } from '@converse/headless/core'
import { html } from 'lit'
import tplMucBottomPanel from '../../src/plugins/muc-views/templates/muc-bottom-panel.js'
import { CustomElement } from 'shared/components/element.js'
import 'shared/modals/livechat-external-login.js'
async function setNickname (ev, model) {
ev.preventDefault()
@ -54,7 +55,8 @@ class SlowMode extends CustomElement {
return html`<div class="livechat-slow-mode-info-box">
<converse-icon class="fa fa-info-circle" size="1.2em"></converse-icon>
${__(
'Slow mode is enabled, users can send a message every %1$s seconds.',
// eslint-disable-next-line no-undef
LOC_slow_mode_info,
this.model.config.get('slow_mode_duration')
)}
<i class="livechat-hide-slow-mode-info-box" @click=${this.closeSlowModeInfoBox}>
@ -82,14 +84,15 @@ export default (o) => {
const i18nNickname = __('Nickname')
const i18nJoin = __('Enter groupchat')
const i18nHeading = __('Choose a nickname to enter')
// eslint-disable-next-line no-undef
const i18nExternalLogin = __(LOC_login_using_external_account)
return html`
<div class="livechat-viewer-mode-nick chatroom-form-container"
@submit=${ev => setNickname(ev, model)}>
<form class="converse-form chatroom-form">
<div class="livechat-viewer-mode-content chatroom-form-container">
<form class="converse-form chatroom-form" @submit=${ev => setNickname(ev, model)}>
<label>${i18nHeading}</label>
<fieldset class="form-group">
<input type="text"
required="required"
required
name="nick"
value=""
class="form-control"
@ -99,6 +102,21 @@ export default (o) => {
<input type="submit" class="btn btn-primary" name="join" value="${i18nJoin}"/>
</fieldset>
</form>
${
// If we open a room with forcetype, there is no current video... So just disabling external login
// (in such case, we should be logged in as admin/moderator...)
!api.settings.get('livechat_peertube_video_original_url')
? ''
: html`
<hr>
<div class="livechat-viewer-mode-external-login">
<button class="btn btn-primary" @click=${ev => {
ev.preventDefault()
api.modal.show('converse-livechat-external-login')
}}>${i18nExternalLogin}</button>
</div>
`
}
</div>
${tplSlowMode(o)}
${tplMucBottomPanel(o)}`