BiZETO v1.0.0-003: Isolasi Lifecycle Pairing QR WhatsApp dan Auto-Trigger WebSocket
Penyempurnaan modul Connectivity BiZETO: isolasi state pairing node baru, auto-trigger WebSocket WhatsMeow, eliminasi penutupan modal prematur, dan UI pemindaian QR.
1mnt baca
Ketika pengguna membuka menu Connectivity pada BiZETO dan menekan tombol Tambah Node / Hubungkan Perangkat, QR Code WhatsApp tidak muncul di layar. Investigasi menunjukkan tiga akar permasalahan utama:
- Polusi State Global Perangkat Lama:
- Saat halaman dimuat,
AppContext.tsxmemanggilGET /api/devices?platform=whatsapp. - Karena sudah terdapat data perangkat sebelumnya di database, state global
statusdisetel menjadi'paired'.
- Saat halaman dimuat,
- Ketiadaan Auto-Trigger WebSocket:
- Pembukaan modal (
setIsModalOpen(true)) tidak secara otomatis memicu pemanggilan fungsiconnect()untuk membuka koneksi WebSocket ke/api/ws/pair. - Komponen rendering mendeteksi
status === 'paired', sehingga area canvas QR Code dilewati (bypassed).
- Pembukaan modal (
- Auto-Close Modal Prematur:
- Terdapat hook
useEffectyang mendeteksi status'paired'saat modal terbuka, memicu timer penutupan modal secara otomatis dalam waktu 2 detik.
- Terdapat hook
Pembaruan v1.0.0-003 menghadirkan arsitektur pairing terisolasi yang stabil dan responsif:
- State Terisolasi: Memisahkan siklus hidup pairing (
idle,connecting,scanning,success,timeout,error) secara independen dari status perangkat global. - Auto-Connect saat Modal Dibuka: Fungsi
handleOpenPairing()langsung menginisiasi WebSocket pairing/api/ws/pairdengan otentikasi JWT token terenkripsi. - Lifecycle Cleanup: Menutup koneksi WebSocket dan membersihkan memori saat modal ditutup atau saat komponen di-unmount.
- Rendering QR Instan: Menggunakan
QRCodeSVGdengan level koreksiMdan animasi glowing frame saat stream data QR diterima dari WhatsMeow backend. - Petunjuk Pemindaian 3-Langkah: Panduan visual yang jelas untuk memandu pengguna menautkan perangkat dari aplikasi smartphone WhatsApp.
- Mekanisme Retry: Tombol Muat Ulang QR Code yang responsif saat terjadi QR timeout tanpa harus keluar dari modal.
Bundle frontend telah berhasil dikompilasi dengan tsc -b && vite build dan disinkronisasi ke server VPS via ./deploy.sh. Layanan bizeto_frontend dan bizeto_backend telah di-restart dan beroperasi normal.