// SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
//
// SPDX-License-Identifier: AGPL-3.0-only

// FIXME: @stylistic/indent is buggy with strings literrals.
/* eslint-disable @stylistic/indent */

import type { LivechatTokenListElement } from '../token-list'
import { html, TemplateResult } from 'lit'
import { unsafeHTML } from 'lit/directives/unsafe-html.js'
import { repeat } from 'lit/directives/repeat.js'
import { ptTr } from '../../directives/translation'
import { AddSVG, RemoveSVG } from '../../buttons'

export function tplTokenList (el: LivechatTokenListElement): TemplateResult {
  return html`<div class="table-responsive">
    <table class="table">
      <thead>
        <tr>
          <th scope="col"></th>
          <th scope="col">${ptTr(LOC_TOKEN_LABEL)}</th>
          <th scope="col">${ptTr(LOC_TOKEN_DATE)}</th>
          <th scope="col"></th>
        </tr>
      </thead>
      <tbody>
        ${
          repeat(el.tokenList ?? [], (token) => token.id, (token) => {
            let dateStr = ''
            try {
              const date = new Date(token.date)
              dateStr = date.toLocaleDateString() + ' ' + date.toLocaleTimeString()
            } catch (_err) {}
            return html`<tr>
              <td>${
                el.mode === 'select'
                ? html`<input
                  type="radio"
                  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>
                <label for=${`livechat-token-radio-${token.id}`}>
                  ${token.label}
                </label>
              </td>
              <td>
                <label for=${`livechat-token-radio-${token.id}`}>
                  ${dateStr}
                </label>
              </td>
              <td>
                <button type="button"
                  class="livechat-revoke-token"
                  .title=${ptTr(LOC_TOKEN_ACTION_REVOKE) as any}
                  ?disabled=${el.actionDisabled}
                  @click=${() => {
                    el.revokeToken(token).then(() => {}, () => {})
                  }}
                >
                  ${unsafeHTML(RemoveSVG)}
                </button>
              </td>
            </tr>`
          })
        }
      </tbody>
      <tfoot>
        <tr>
          <td>
          <button type="button"
            class="livechat-create-token"
            .title=${ptTr(LOC_TOKEN_ACTION_CREATE) as any}
            ?disabled=${el.actionDisabled}
            @click=${() => {
              el.createToken().then(() => {}, () => {})
            }}
          >
            ${unsafeHTML(AddSVG)}
          </button>
          </td>
        </tr>
      </tfoot>
    </table>
  </div>`
}