<ribaunt-widget> löst drei benutzerdefinierte DOM-Ereignisse aus — verify, error und state-change — die du mit addEventListener am Element abhören kannst. Verwende in React stattdessen die typisierten Callback-Props; der Wrapper verbindet und löst die Listener automatisch für dich auf.
verify
Das verify-Ereignis wird ausgelöst, wenn das Widget alle Challenges erfolgreich löst und — falls du einen verify-endpoint angegeben hast — der Server bestätigt, dass die Lösungen gültig sind. Wenn kein verify-endpoint gesetzt ist, wird das Ereignis ausgelöst, sobald der lokale Proof-of-Work abgeschlossen ist.
Ereignistyp: CustomEvent<{ solutions: ChallengeSolution[] }>
Wobei ChallengeSolution = { nonce: string; hash: string }.
onVerify={(detail) => ...}
error
Das error-Ereignis wird ausgelöst, wenn das Widget in irgendeiner Phase einen Fehler erleidet — beim Abrufen von Tokens von deinem Challenge-Endpunkt, beim Ausführen des Proof-of-Work-Solvers oder beim Erhalten einer nicht-OK-Antwort von deinem Verify-Endpunkt.
Ereignistyp: CustomEvent<{ error: string; timeout?: boolean }>
onError={(detail) => ...}
Das
timeout-Feld ist nur dann im Event-Detail enthalten, wenn solve-timeout konfiguriert ist und die Lösungsdauer dieses Limit überschreitet. Wenn vorhanden, ist es immer true.state-change
Das state-change-Ereignis wird jedes Mal ausgelöst, wenn das Widget zwischen internen Zuständen wechselt. Du kannst es nutzen, um den visuellen Zustand des Widgets in deiner eigenen UI nachzubilden — zum Beispiel, um eine Senden-Schaltfläche während der laufenden Verifizierung zu deaktivieren.
Ereignistyp: CustomEvent<{ state: 'initial' | 'verifying' | 'done' | 'error' }>
onStateChange={(detail) => ...}
React-Callback-Props
Wenn du den React-Wrapper verwendest, kannst du alle Callbacks direkt als Props übergeben. Der Wrapper behält stabile Event-Listener-Referenzen über Re-Renders hinweg, sodass deine Callbacks immer die aktuellsten Closure-Werte erhalten:Nur in React verfügbare Ereignisse
Zwei zusätzliche Callbacks sind im React-Wrapper verfügbar, die kein entsprechendes benutzerdefiniertes DOM-Ereignis an der Web-Komponente haben:onReady— wird einmal ausgelöst, nachdem das Widget gemountet wurde, mit dem initialen Widget-Zustand im Detail-Payload. Verwende dies, um zu erkennen, wann das Widget bereit für Interaktionen ist.onLoad— funktional identisch mitonReady. Es wird als Alias zur Abwärtskompatibilität bereitgestellt, falls duonLoadbereits in einer früheren Version verwendet hast.onEvent— ein Sammel-Handler, der für jeden Ereignistyp ausgelöst wird ('verify','error','state-change'und'ready'), zusammen mit dem Detail-Objekt des Ereignisses. Verwende ihn, wenn du eine einzige Stelle zum Behandeln oder Protokollieren aller Widget-Ereignisse möchtest.
Widget-Zustände
Das Widget durchläuft während seines Lebenszyklus eine definierte Menge von Zuständen. Diese Zustands-Zeichenketten begegnen dir instate-change-Ereignissen und im Rückgabewert von getState():
| Zustand | Beschreibung |
|---|---|
initial | Widget ist geladen, wartet auf Klick des Benutzers oder Auto-Verify |
verifying | Solver läuft (Proof-of-Work in Bearbeitung) |
done | Challenge erfolgreich gelöst und verifiziert |
error | Während Fetch, Solve oder Verify ist ein Fehler aufgetreten |