diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index b549935..808e909 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -3867,18 +3867,6 @@ export default function App() { email: d.email || last.email || '', web: d.web || last.web || '', 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 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); @@ -3946,6 +3934,24 @@ export default function App() { email: d.email || (r.email ?? ''), web: d.web || (r.web ?? ''), 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 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 // this call (call not found on QRZ/HamQTH, or lookup off → cty.dat only).