use std::sync::atomic::Ordering;
use super::WhatsAppState;
impl WhatsAppState {
pub fn broadcast_qr(&self, code: &str) {
if self.connected.load(Ordering::SeqCst) {
tracing::debug!("WhatsApp: suppressing QR broadcast — already connected");
return;
}
*self.last_qr.lock().unwrap_or_else(|e| e.into_inner()) = Some(code.to_string());
let _ = self.qr_tx.send(code.to_string());
}
pub fn current_qr(&self) -> Option<String> {
self.last_qr
.lock()
.unwrap_or_else(|e| e.into_inner())
.clone()
}
pub fn request_restart(&self) {
*self.last_qr.lock().unwrap_or_else(|e| e.into_inner()) = None;
self.connected.store(false, Ordering::SeqCst);
self.restart_requested.store(true, Ordering::SeqCst);
}
pub fn take_restart_request(&self) -> bool {
self.restart_requested.swap(false, Ordering::SeqCst)
}
pub fn set_first_pair_pending(&self) {
self.first_pair_pending.store(true, Ordering::SeqCst);
}
pub fn take_first_pair_pending(&self) -> bool {
self.first_pair_pending.swap(false, Ordering::SeqCst)
}
}