location-first scan: geolocation prompt decides the scan (8s fallback to plain scan, never blocks); server 'location upgrade' rule re-alerts with map link when coords arrive after a no-loc alert

This commit is contained in:
2026-08-10 19:17:58 +10:00
parent f2d1acac35
commit 43ce4514c4
2 changed files with 8 additions and 6 deletions

View File

@@ -162,11 +162,13 @@ func (a *App) shouldAlert(ctx context.Context, tag db.Tag, scan db.Scan, hasLoc
// Within the window?
if time.Since(last.ScannedAt.Time) < alertWindow {
// Re-alert on movement >250 m, or a different finder phone.
// Re-alert on movement >250 m, a different finder phone, or a location
// upgrade (previous alert had no coords — send the map link).
moved := hasLoc && last.Lat.Valid && last.Lng.Valid &&
sms.HaversineMeters(last.Lat.Float64, last.Lng.Float64, *lat, *lng) > alertMinDistance
locationUpgrade := hasLoc && !last.Lat.Valid
differentPhone := phone != "" && phone != last.ScannerPhone.String
return moved || differentPhone, ""
return moved || locationUpgrade || differentPhone, ""
}
return true, ""
}