react-native-qalink 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +132 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -351,6 +351,68 @@ QALink.init({
|
|
|
351
351
|
|
|
352
352
|
---
|
|
353
353
|
|
|
354
|
+
## 📦 Event Packages (v0.6.0)
|
|
355
|
+
|
|
356
|
+
Los **Event Packages** agrupan **todos los eventos** de una pantalla en un solo payload que se envía cuando el usuario sale de ella. Incluyen métricas pre-calculadas y el historial completo de eventos.
|
|
357
|
+
|
|
358
|
+
### Integración en 1 línea — `useTrackedScreen`
|
|
359
|
+
|
|
360
|
+
```typescript
|
|
361
|
+
import { useTrackedScreen } from 'react-native-qalink';
|
|
362
|
+
|
|
363
|
+
function CheckoutScreen() {
|
|
364
|
+
useTrackedScreen('CheckoutScreen');
|
|
365
|
+
// ↑ inicia el package al montar, lo cierra y envía al desmontar
|
|
366
|
+
return <View>...</View>;
|
|
367
|
+
}
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
Eso es todo. Todos los eventos generados mientras el usuario está en esa pantalla (API calls, logs, errores, breadcrumbs) se agrupan y se envían juntos al salir.
|
|
371
|
+
|
|
372
|
+
### API manual — `startPackage` / `endPackage`
|
|
373
|
+
|
|
374
|
+
```typescript
|
|
375
|
+
// En React Navigation (App.tsx)
|
|
376
|
+
<NavigationContainer
|
|
377
|
+
onStateChange={() => {
|
|
378
|
+
const screen = navigationRef.current?.getCurrentRoute()?.name ?? '';
|
|
379
|
+
|
|
380
|
+
QALink.endPackage(); // cierra el package de la pantalla anterior
|
|
381
|
+
QALink.startPackage(screen); // inicia uno nuevo para la pantalla actual
|
|
382
|
+
}}
|
|
383
|
+
>
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Payload que recibe el dashboard
|
|
387
|
+
|
|
388
|
+
```json
|
|
389
|
+
{
|
|
390
|
+
"type": "event_package",
|
|
391
|
+
"packageId": "...",
|
|
392
|
+
"context": {
|
|
393
|
+
"screenName": "CheckoutScreen",
|
|
394
|
+
"sessionId": "...",
|
|
395
|
+
"startTime": 1710445670000,
|
|
396
|
+
"endTime": 1710445680000,
|
|
397
|
+
"durationMs": 10000
|
|
398
|
+
},
|
|
399
|
+
"events": [ ...todos los eventos capturados en esa pantalla... ],
|
|
400
|
+
"metrics": {
|
|
401
|
+
"totalApiCalls": 3,
|
|
402
|
+
"totalErrors": 1,
|
|
403
|
+
"totalLogs": 5,
|
|
404
|
+
"totalBreadcrumbs": 2,
|
|
405
|
+
"totalEvents": 11
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### Backward compatibility
|
|
411
|
+
|
|
412
|
+
Si **no** llamas `startPackage` ni `useTrackedScreen`, cada evento se sigue enviando inmediatamente como antes. Sin cambios de comportamiento.
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
354
416
|
## 📊 Tipos de eventos capturados
|
|
355
417
|
|
|
356
418
|
El SDK captura automáticamente:
|
|
@@ -358,6 +420,7 @@ El SDK captura automáticamente:
|
|
|
358
420
|
| Tipo | Descripción |
|
|
359
421
|
|------|-------------|
|
|
360
422
|
| `session_start` | Inicio de sesión |
|
|
423
|
+
| `event_package` | Batch de eventos de una pantalla (v0.6.0) |
|
|
361
424
|
| `http_request` | Request HTTP (fetch/axios) |
|
|
362
425
|
| `user_log` | Logs con debug/info/warn/error/critical |
|
|
363
426
|
| `custom_event` | Eventos custom con logEvent() |
|
|
@@ -445,6 +508,75 @@ QALink.logEvent('experiment_viewed', {
|
|
|
445
508
|
});
|
|
446
509
|
```
|
|
447
510
|
|
|
511
|
+
### 4. Event Package con React Navigation
|
|
512
|
+
|
|
513
|
+
```typescript
|
|
514
|
+
// App.tsx
|
|
515
|
+
import { useTrackedScreen } from 'react-native-qalink';
|
|
516
|
+
|
|
517
|
+
// En cada pantalla — 1 sola línea:
|
|
518
|
+
function PaymentScreen() {
|
|
519
|
+
useTrackedScreen('PaymentScreen');
|
|
520
|
+
// ...
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
function ProfileScreen() {
|
|
524
|
+
useTrackedScreen('ProfileScreen');
|
|
525
|
+
// ...
|
|
526
|
+
}
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
O con `NavigationContainer` para cobertura automática de todas las pantallas:
|
|
530
|
+
|
|
531
|
+
```typescript
|
|
532
|
+
// App.tsx
|
|
533
|
+
import { NavigationContainer } from '@react-navigation/native';
|
|
534
|
+
import { QALink } from 'react-native-qalink';
|
|
535
|
+
|
|
536
|
+
<NavigationContainer
|
|
537
|
+
onStateChange={() => {
|
|
538
|
+
const screen = navigationRef.current?.getCurrentRoute()?.name ?? 'unknown';
|
|
539
|
+
QALink.endPackage(); // cierra el package de la pantalla anterior
|
|
540
|
+
QALink.startPackage(screen); // inicia uno nuevo
|
|
541
|
+
}}
|
|
542
|
+
>
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
---
|
|
546
|
+
|
|
547
|
+
## 📋 Referencia completa de la API
|
|
548
|
+
|
|
549
|
+
| Método | Descripción |
|
|
550
|
+
|--------|-------------|
|
|
551
|
+
| **`init(config)`** | Inicializa el SDK. Requerido antes de todo. |
|
|
552
|
+
| **`interceptAxios(instance)`** | Registra una instancia de Axios. |
|
|
553
|
+
| **`setUserContext(ctx)`** | Adjunta datos del usuario a todos los eventos. |
|
|
554
|
+
| **`setCustomContext(ctx)`** | Adjunta datos custom a todos los eventos. |
|
|
555
|
+
| **`clearContext()`** | Limpia usuario y contexto custom. |
|
|
556
|
+
| **`debug(...args)`** | Log nivel debug. |
|
|
557
|
+
| **`info(...args)`** | Log nivel info. |
|
|
558
|
+
| **`warn(...args)`** | Log nivel warn. |
|
|
559
|
+
| **`error(...args)`** | Log nivel error. |
|
|
560
|
+
| **`critical(...args)`** | Log nivel critical. |
|
|
561
|
+
| **`logEvent(name, data?)`** | Evento custom de negocio. |
|
|
562
|
+
| **`addBreadcrumb(action, data?)`** | Breadcrumb manual. |
|
|
563
|
+
| **`logRequest(options)`** | Registra request de red manualmente. |
|
|
564
|
+
| **`setScreen(name)`** | Cambia la pantalla actual (solo breadcrumb). |
|
|
565
|
+
| **`startPackage(screenName)`** | Inicia un Event Package para esa pantalla. |
|
|
566
|
+
| **`endPackage()`** | Cierra el package activo y lo envía. |
|
|
567
|
+
| **`captureScreen(label?)`** | Captura la pantalla completa. |
|
|
568
|
+
| **`captureRef(ref, label?)`** | Captura un componente específico. |
|
|
569
|
+
| **`configureHTTP(config)`** | Actualiza config HTTP en runtime. |
|
|
570
|
+
| **`getDeviceId()`** | Devuelve el deviceId de la sesión. |
|
|
571
|
+
| **`getStatus()`** | Estado de la conexión WebSocket. |
|
|
572
|
+
| **`destroy()`** | Limpia interceptores y desconecta. |
|
|
573
|
+
|
|
574
|
+
**Hook:**
|
|
575
|
+
|
|
576
|
+
| Hook | Descripción |
|
|
577
|
+
|------|-------------|
|
|
578
|
+
| **`useTrackedScreen(name)`** | 1 línea: inicia y cierra el package automáticamente al montar/desmontar la pantalla. |
|
|
579
|
+
|
|
448
580
|
---
|
|
449
581
|
|
|
450
582
|
## 🚨 Troubleshooting
|
package/package.json
CHANGED