fix(awards): the callbook island only reached stations already in the log
withIOTARef was applied inside fillFromLastQso, the backfill that runs when the provider came up short. That function returns early when there is no previous contact with the callsign — so the island reference appeared for stations already worked and never for the new one calling from the island, which is the entire point of reading QRZ's <iota>. Moved to the provider result in runLookup, where the rest of the callbook fields are applied. The precedence is unchanged: a reference the operator typed or picked still wins over the callbook. Reported on F5IRH, Le Palais, Belle-Île-en-Mer — EU-048 in the QRZ record, and nothing on the IOTA award. No changelog line: the feature has not shipped yet, so the entry already in the 0.25.7 block now describes what it does.
This commit is contained in:
+18
-12
@@ -3867,18 +3867,6 @@ export default function App() {
|
|||||||
email: d.email || last.email || '',
|
email: d.email || last.email || '',
|
||||||
web: d.web || last.web || '',
|
web: d.web || last.web || '',
|
||||||
qsl_via: d.qsl_via || last.qsl_via || '',
|
qsl_via: d.qsl_via || last.qsl_via || '',
|
||||||
// An island reference from the callbook becomes an IOTA award reference
|
|
||||||
// on the entry, exactly like one picked by hand.
|
|
||||||
//
|
|
||||||
// QRZ carries <iota> for an operator on an island and OpsLog read past
|
|
||||||
// it. That matters more for IOTA than it would for another award:
|
|
||||||
// unlike POTA there is no live "who is on an island right now" feed
|
|
||||||
// anywhere, so the callbook record is the practical source — and it is
|
|
||||||
// known BEFORE the contact is logged, which is when it is useful.
|
|
||||||
//
|
|
||||||
// Only when the operator has not set one already: a reference typed or
|
|
||||||
// picked by hand outranks a callbook that may be years out of date.
|
|
||||||
award_refs: withIOTARef(d.award_refs ?? '', String((r as any)?.iota ?? '')),
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
if (adoptLastGrid || last.grid || last.lat) setMapZoomSignal((n) => n + 1);
|
if (adoptLastGrid || last.grid || last.lat) setMapZoomSignal((n) => n + 1);
|
||||||
@@ -3946,6 +3934,24 @@ export default function App() {
|
|||||||
email: d.email || (r.email ?? ''),
|
email: d.email || (r.email ?? ''),
|
||||||
web: d.web || (r.web ?? ''),
|
web: d.web || (r.web ?? ''),
|
||||||
qsl_via: d.qsl_via || (r.qsl_via ?? ''),
|
qsl_via: d.qsl_via || (r.qsl_via ?? ''),
|
||||||
|
// An island reference from the callbook becomes an IOTA award reference
|
||||||
|
// on the entry, exactly like one picked by hand.
|
||||||
|
//
|
||||||
|
// QRZ carries <iota> for an operator on an island and OpsLog read past
|
||||||
|
// it. That matters more for IOTA than it would for another award:
|
||||||
|
// unlike POTA there is no live "who is on an island right now" feed
|
||||||
|
// anywhere, so the callbook record is the practical source — and it is
|
||||||
|
// known BEFORE the contact is logged, which is when it is useful.
|
||||||
|
//
|
||||||
|
// Only when the operator has not set one already: a reference typed or
|
||||||
|
// picked by hand outranks a callbook that may be years out of date.
|
||||||
|
//
|
||||||
|
// This belongs HERE, on the provider result, and not in the backfill
|
||||||
|
// from the last QSO where it first went: that runs only when there IS a
|
||||||
|
// previous contact with the call, so the island appeared for stations
|
||||||
|
// already in the log and never for the new one on the island — which is
|
||||||
|
// the entire point of the feature.
|
||||||
|
award_refs: withIOTARef(d.award_refs ?? '', String((r as any)?.iota ?? '')),
|
||||||
}));
|
}));
|
||||||
// Backfill anything the provider didn't supply from the last time we worked
|
// Backfill anything the provider didn't supply from the last time we worked
|
||||||
// this call (call not found on QRZ/HamQTH, or lookup off → cty.dat only).
|
// this call (call not found on QRZ/HamQTH, or lookup off → cty.dat only).
|
||||||
|
|||||||
Reference in New Issue
Block a user