feat(lotw): let the download cover every callsign on the account
The download passes qso_owncall so one profile does not pull another's confirmations. That scope also hides them: a QSO made as F4BPO/P is confirmed at LoTW and can never come back to an F4BPO profile, so it stays unconfirmed here for good while the ARRL counts it — found while reconciling a DXCC account against the panel, where it was the whole of the CW gap (Jersey, worked as F4BPO/P). Off by default: the scope is right for anyone whose profiles are separate stations.
This commit is contained in:
@@ -402,6 +402,7 @@ const (
|
||||
|
||||
keyExtLoTWTQSLPath = "extsvc.lotw.tqsl_path"
|
||||
keyExtLoTWStationLoc = "extsvc.lotw.station_location"
|
||||
keyExtLoTWAllCalls = "extsvc.lotw.download_all_calls" // download confirmations for EVERY call on the account, not just this profile's
|
||||
keyExtLoTWForceCall = "extsvc.lotw.force_station_callsign" // override STATION_CALLSIGN at sign time (e.g. F4BPO/P on the F4BPO cert)
|
||||
keyExtLoTWKeyPassword = "extsvc.lotw.key_password"
|
||||
keyExtLoTWUploadFlag = "extsvc.lotw.upload_flag" // legacy single flag (migrated to upload_flags)
|
||||
@@ -12096,6 +12097,17 @@ func manualRefFor(existing, code string) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// GetLoTWDownloadAllCalls reports whether the LoTW download ignores the
|
||||
// profile's own call and pulls every callsign on the account.
|
||||
func (a *App) GetLoTWDownloadAllCalls() bool {
|
||||
return a.settingOr(keyExtLoTWAllCalls, "") == "1"
|
||||
}
|
||||
|
||||
// SetLoTWDownloadAllCalls stores that choice.
|
||||
func (a *App) SetLoTWDownloadAllCalls(on bool) {
|
||||
a.setSetting(keyExtLoTWAllCalls, map[bool]string{true: "1", false: "0"}[on])
|
||||
}
|
||||
|
||||
// DownloadConfirmations pulls confirmed QSOs from a service and updates the
|
||||
// matching local QSOs' received status. LoTW only for now (the canonical
|
||||
// confirmation system); runs in the background emitting the same
|
||||
@@ -12167,6 +12179,16 @@ func (a *App) runDownloadConfirmations(ctx context.Context, svc extsvc.Service,
|
||||
case extsvc.ServiceLoTW:
|
||||
sinceDate := resolveSince(keyExtLoTWLastDownload)
|
||||
ownCall := a.uploadOwnerCall(extsvc.ServiceLoTW)
|
||||
// A LoTW account holds every call its owner operates — F4BPO, F4BPO/P,
|
||||
// TM2Q — and the download is normally scoped to the profile's own call so
|
||||
// one profile does not pull another's confirmations. That scope also
|
||||
// silently hides them: a QSO made as F4BPO/P is confirmed at LoTW and can
|
||||
// never be downloaded from the F4BPO profile, so it stays unconfirmed here
|
||||
// for good while the ARRL counts it. Off by default, because the scope is
|
||||
// right for anyone whose profiles are separate stations.
|
||||
if a.settingOr(keyExtLoTWAllCalls, "") == "1" {
|
||||
ownCall = ""
|
||||
}
|
||||
callLabel := ownCall
|
||||
if callLabel == "" {
|
||||
callLabel = "all callsigns"
|
||||
|
||||
Reference in New Issue
Block a user