<?php

namespace App\Livewire\Admin;

use App\Services\Secrets\SecretVault;
use LivewireUI\Modal\ModalComponent;

/**
 * Die Antwort einer Verbindungsprüfung, als Modal.
 *
 * Vorher stand sie am Seitenende, hinter allen Karten und hinter dem
 * Speichern-Knopf. Der Testknopf sitzt oben in der Karte; wer ihn drückte, sah
 * gar nichts, weil die Antwort ausserhalb des Bildschirms erschien. Gemeldet
 * wurde das zweimal — erst als „der Knopf tut nichts", dann als „runterscrollen
 * tut niemand, wenn man es nicht weiss".
 *
 * Das Ergebnis wird als Argument hereingereicht, nicht hier neu erhoben. Zwei
 * Gründe: die Prüfung läuft gegen den EINGETIPPTEN, noch nicht gespeicherten
 * Wert, den dieses Modal nicht sieht — und DnsTokenCheck schreibt bei jedem
 * Lauf einen Probeeintrag in die echte Zone. Ein Modal, das beim Öffnen prüft,
 * legte bei jedem Blick einen neuen an.
 *
 * Durch den Browser gereicht zu werden ist hier unbedenklich: das Ergebnis
 * trägt Kontoname, Betriebsmodus und die Webhook-Liste — keinen Schlüssel.
 */
class CheckResult extends ModalComponent
{
    public string $entryKey = '';

    /** @var array<string, mixed> */
    public array $result = [];

    /** @param  array<string, mixed>  $result */
    public function mount(string $entryKey, array $result): void
    {
        $this->authorize('secrets.manage');
        abort_if(! array_key_exists($entryKey, SecretVault::REGISTRY), 404);

        $this->entryKey = $entryKey;
        $this->result = $result;
    }

    public function render()
    {
        return view('livewire.admin.check-result', [
            'label' => __(SecretVault::REGISTRY[$this->entryKey]['label']),
        ]);
    }
}
