> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/sdk-web/componentes/sdk-provider/eventos/emitfinishqr.md).

# emitFinishQr

Señal de finalización del flujo QR.

## Detalles

Se emite cuando se llama a [stopQr](/sdks/sdk-web/componentes/sdk-provider/metodos/stopqr.md) tras finalizar el flujo QR en el dispositivo móvil.

**Evento:** `emitFinishQr`

**Tipo:** `FacephiSdkProviderCustomEvent<FinishQr>` | `CustomEvent<FinishQr>`

### Sintaxis

```typescript
provider.addEventListener('emitFinishQr', onEmitFinishQr);
```

### Objeto recibido

```json
detail: {
  isDesktop: boolean
}
```

## Descripción

Permite continuar la lógica cuando la captura en el móvil ha finalizado.

En un flujo QR la captura ocurre en el móvil; cuando tu integración llama a [stopQr](/sdks/sdk-web/componentes/sdk-provider/metodos/stopqr.md) (p. ej. en el último `extractionFinish`), el evento se emite en **ambos** dispositivos. Como el evento se recibe en los dos, usa `detail.isDesktop` para ejecutar tu lógica en el entorno adecuado (p. ej. solo en desktop): `if (detail.isDesktop) { … }`.

### Consideraciones

* `emitFinishQr` solo lo emite el `facephi-sdk-provider` por el finish del propio `QrWidget`; el `widgetFinish` de widgets internos vía QR (Selphi/SelphID) **no** lo emite.

***

## Ejemplo

```jsx
<facephi-sdk-provider
    apikey={process.env.FACEPHI_SDK_APIKEY}
    qr={true}
    onEmitFinishQr={onEmitFinishQr}
/>
```

```typescript
// Llama a stopQr() cuando la captura ha terminado:
await provider.stopQr();

provider.addEventListener('emitFinishQr', (event) => {
  // Se emite en ambos peers.
  if (event.detail.isDesktop) {
    continueOnDesktop(); // Continúa el flujo de negocio.
  } else {
    showContinueOnDesktopView(); // Muestra pantalla personalizada de aviso.
  }
});
```
