fix: 'stations on air' widget updates instantly after a QSO (UDP/FT8 path now emits qso:logged; publishLiveStatus emits livestatus:updated so the widget re-reads exactly when the shared row changes) — was lagging ~15-45s behind the ON-AIR badge
This commit is contained in:
@@ -6,9 +6,21 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
wruntime "github.com/wailsapp/wails/v2/pkg/runtime"
|
||||
|
||||
"hamlog/internal/applog"
|
||||
)
|
||||
|
||||
// emitLiveStatusChanged nudges the frontend to re-read GetLiveStations right when
|
||||
// the shared table actually changes (a row appeared or was removed) — so the
|
||||
// "stations on air" widget updates the instant a QSO is published, matching the
|
||||
// bottom ON-AIR badge instead of waiting for its poll.
|
||||
func (a *App) emitLiveStatusChanged() {
|
||||
if a.ctx != nil {
|
||||
wruntime.EventsEmit(a.ctx, "livestatus:updated", nil)
|
||||
}
|
||||
}
|
||||
|
||||
// Live operator status — for multi-operator events on a SHARED MySQL logbook
|
||||
// (e.g. a special-event call like TM74FR with several ops on different bands).
|
||||
// Each OpsLog instance heartbeats its current activity (operator call + station
|
||||
@@ -231,6 +243,7 @@ func (a *App) publishLiveStatus() {
|
||||
if _, err := a.logDb.ExecContext(a.ctx, "DELETE FROM live_status WHERE operator=?", op); err != nil {
|
||||
applog.Printf("livestatus: offline DELETE failed: %v", err)
|
||||
}
|
||||
a.emitLiveStatusChanged()
|
||||
return
|
||||
}
|
||||
lastQSOArg := lastQSO.UTC()
|
||||
@@ -246,6 +259,7 @@ func (a *App) publishLiveStatus() {
|
||||
return
|
||||
}
|
||||
applog.Printf("livestatus: published op=%s station=%s %dHz %s %s ON AIR", op, station, freqHz, band, mode)
|
||||
a.emitLiveStatusChanged()
|
||||
}
|
||||
|
||||
// LiveStation is one operator's live status for the multi-op "who's on air" widget.
|
||||
|
||||
Reference in New Issue
Block a user