2024-05-23 15:17:28 +00:00
|
|
|
// SPDX-FileCopyrightText: 2024 Mehdi Benadel <https://mehdibenadel.com>
|
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2024-05-23 15:09:58 +00:00
|
|
|
import { html } from 'lit'
|
2024-05-23 00:26:38 +00:00
|
|
|
import { customElement, property, state } from 'lit/decorators.js'
|
|
|
|
import { unsafeHTML } from 'lit/directives/unsafe-html.js'
|
|
|
|
import { helpButtonSVG } from '../../../videowatch/buttons'
|
|
|
|
import { consume } from '@lit/context'
|
2024-05-23 14:56:11 +00:00
|
|
|
import { registerClientOptionsContext } from '../contexts/peertube'
|
2024-05-23 12:41:11 +00:00
|
|
|
import type { RegisterClientOptions } from '@peertube/peertube-types/client'
|
2024-05-23 00:26:38 +00:00
|
|
|
import { Task } from '@lit/task'
|
|
|
|
import { localizedHelpUrl } from '../../../utils/help'
|
2024-05-23 12:41:11 +00:00
|
|
|
import { ptTr } from '../directives/translation'
|
2024-06-05 13:56:03 +00:00
|
|
|
import type { DirectiveResult } from 'lit/directive'
|
2024-05-23 15:09:58 +00:00
|
|
|
import { LivechatElement } from './livechat'
|
2024-05-23 00:26:38 +00:00
|
|
|
|
2024-05-23 13:52:12 +00:00
|
|
|
@customElement('livechat-help-button')
|
2024-05-23 15:09:58 +00:00
|
|
|
export class HelpButtonElement extends LivechatElement {
|
2024-05-23 13:52:12 +00:00
|
|
|
@consume({ context: registerClientOptionsContext, subscribe: true })
|
2024-05-24 12:08:48 +00:00
|
|
|
public registerClientOptions?: RegisterClientOptions
|
2024-05-23 00:26:38 +00:00
|
|
|
|
|
|
|
@property({ attribute: false })
|
|
|
|
public buttonTitle: string | DirectiveResult = ptTr(LOC_ONLINE_HELP)
|
|
|
|
|
|
|
|
@property({ attribute: false })
|
|
|
|
public page: string = ''
|
|
|
|
|
|
|
|
@state()
|
|
|
|
public url: URL = new URL('https://lmddgtfy.net/')
|
|
|
|
|
2024-05-23 20:52:39 +00:00
|
|
|
private readonly _asyncTaskRender = new Task(this, {
|
|
|
|
task: async ([registerClientOptions]) => {
|
|
|
|
this.url = new URL(registerClientOptions
|
|
|
|
? await localizedHelpUrl(registerClientOptions, { page: this.page })
|
|
|
|
: '')
|
2024-05-23 00:26:38 +00:00
|
|
|
},
|
|
|
|
args: () => [this.registerClientOptions]
|
2024-05-23 20:52:39 +00:00
|
|
|
})
|
2024-05-23 00:26:38 +00:00
|
|
|
|
2024-05-23 20:52:39 +00:00
|
|
|
protected override render = (): unknown => {
|
2024-05-23 00:26:38 +00:00
|
|
|
return this._asyncTaskRender.render({
|
|
|
|
complete: () => html`<a
|
|
|
|
href="${this.url.href}"
|
|
|
|
target=_blank
|
|
|
|
title="${this.buttonTitle}"
|
|
|
|
class="orange-button peertube-button-link"
|
|
|
|
>${unsafeHTML(helpButtonSVG())}</a>`
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|