From 37f8d4a9c63b472c3a65dd4d440f86b02c645037 Mon Sep 17 00:00:00 2001 From: Vitor Date: Wed, 15 Apr 2026 10:54:13 -0300 Subject: [PATCH] =?UTF-8?q?Adicionar=20cache=20para=20vers=C3=A3o=20do=20W?= =?UTF-8?q?hatsApp=20Web=20com=20controle=20de=20concorr=C3=AAncia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/whatsmeow/service/whatsmeow.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/pkg/whatsmeow/service/whatsmeow.go b/pkg/whatsmeow/service/whatsmeow.go index 6af7174..3084f7a 100644 --- a/pkg/whatsmeow/service/whatsmeow.go +++ b/pkg/whatsmeow/service/whatsmeow.go @@ -15,6 +15,7 @@ import ( "regexp" "strconv" "strings" + "sync" "time" "golang.org/x/image/webp" @@ -2293,7 +2294,21 @@ func (w *whatsmeowService) SendToGlobalQueues(eventType string, payload []byte, } } +var ( + cachedWebVersion *clientVersion + cachedWebVersionAt time.Time + cachedWebVersionMu sync.Mutex + webVersionCacheTTL = 1 * time.Hour +) + func fetchWhatsAppWebVersion() (*clientVersion, error) { + cachedWebVersionMu.Lock() + defer cachedWebVersionMu.Unlock() + + if cachedWebVersion != nil && time.Since(cachedWebVersionAt) < webVersionCacheTTL { + return cachedWebVersion, nil + } + resp, err := http.Get("https://web.whatsapp.com/sw.js") if err != nil { return nil, fmt.Errorf("failed to fetch WhatsApp Web version: %v", err) @@ -2327,11 +2342,13 @@ func fetchWhatsAppWebVersion() (*clientVersion, error) { // Log qual padrĂ£o funcionou if clientRevision > 0 { - return &clientVersion{ + cachedWebVersion = &clientVersion{ Major: 2, Minor: 3000, Patch: clientRevision, - }, nil + } + cachedWebVersionAt = time.Now() + return cachedWebVersion, nil } } }