@ -16,7 +16,6 @@ export function tplTokenList (el: LivechatTokenListElement): TemplateResult {
|
||||
<tr>
|
||||
<th scope="col"></th>
|
||||
<th scope="col">${ptTr(LOC_TOKEN_LABEL)}</th>
|
||||
<th scope="col">${ptTr(LOC_TOKEN_JID)}</th>
|
||||
<th scope="col">${ptTr(LOC_TOKEN_PASSWORD)}</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
@ -24,19 +23,29 @@ export function tplTokenList (el: LivechatTokenListElement): TemplateResult {
|
||||
<tbody>
|
||||
${
|
||||
repeat(el.tokenList ?? [], (token) => token.id, (token) => {
|
||||
html`<tr>
|
||||
return html`<tr>
|
||||
<td>${
|
||||
el.mode === 'select'
|
||||
? html`<input
|
||||
type="radio"
|
||||
?selected=${el.currentSelectedToken?.id === token.id}
|
||||
@click=${el.selectToken}
|
||||
name="livechat-token"
|
||||
value=${token.id}
|
||||
id=${`livechat-token-radio-${token.id}`}
|
||||
?checked=${el.currentSelectedToken?.id === token.id}
|
||||
@click=${(ev: Event) => el.selectToken(ev, token)}
|
||||
/>`
|
||||
: ''
|
||||
}</td>
|
||||
<td>${token.label}</td>
|
||||
<td>${token.jid}</td>
|
||||
<td>${token.password}</td>
|
||||
<td>
|
||||
<label for=${`livechat-token-radio-${token.id}`}>
|
||||
${token.label}
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label for=${`livechat-token-radio-${token.id}`}>
|
||||
${token.password}
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button"
|
||||
class="livechat-revoke-token"
|
||||
|
@ -42,6 +42,10 @@ export class LivechatTokenListElement extends LivechatElement {
|
||||
return new Task(this, {
|
||||
task: async () => {
|
||||
this.tokenList = await this._tokenListService.fetchTokenList()
|
||||
if (this.mode === 'select' && this.tokenList.length) {
|
||||
this.currentSelectedToken = this.tokenList[0]
|
||||
this.dispatchEvent(new CustomEvent('update', {}))
|
||||
}
|
||||
this.actionDisabled = false
|
||||
},
|
||||
args: () => []
|
||||
@ -57,13 +61,17 @@ export class LivechatTokenListElement extends LivechatElement {
|
||||
}
|
||||
|
||||
public selectToken (ev: Event, token: LivechatToken): void {
|
||||
ev.preventDefault()
|
||||
if (!this.tokenList?.includes(token)) { return }
|
||||
this.currentSelectedToken = token
|
||||
this.requestUpdate('tokenList')
|
||||
this.dispatchEvent(new CustomEvent('update', {}))
|
||||
}
|
||||
|
||||
public async revokeToken (token: LivechatToken): Promise<void> {
|
||||
const confirmMsg = await this.ptTranslate(LOC_TOKEN_ACTION_REVOKE_CONFIRM)
|
||||
// Note: we can't use peertube showModal to confirm if we already are in a modal...
|
||||
if (!window.confirm(confirmMsg)) { return }
|
||||
|
||||
this.actionDisabled = true
|
||||
try {
|
||||
await this._tokenListService.revokeToken(token)
|
||||
|
Reference in New Issue
Block a user