11import axios from "axios" ;
22import type { GeometryObject } from "geojson" ;
3+ import uniqBy from "lodash/uniqBy" ;
34
45export interface TAFReport {
56 raw : string ;
@@ -248,23 +249,26 @@ export async function getAviationAlerts({
248249 features : Omit < AviationAlertFeature , "id" > [ ] ;
249250 } > ( "/api/aviationalerts" , { params : { lat, lon } } ) ;
250251
251- return response . data . features
252- . filter ( ( feature ) => {
253- if (
254- "altitudeLow1" in feature . properties &&
255- feature . properties . altitudeLow1 > 3000
256- )
257- return false ;
258-
259- return true ;
260- } )
261- . map (
262- ( feature ) =>
263- ( {
264- ...feature ,
265- id : generateFeatureId ( feature ) ,
266- } ) as AviationAlertFeature ,
267- ) ;
252+ return uniqBy (
253+ response . data . features
254+ . filter ( ( feature ) => {
255+ if (
256+ "altitudeLow1" in feature . properties &&
257+ feature . properties . altitudeLow1 > 3000
258+ )
259+ return false ;
260+
261+ return true ;
262+ } )
263+ . map (
264+ ( feature ) =>
265+ ( {
266+ ...feature ,
267+ id : generateFeatureId ( feature ) ,
268+ } ) as AviationAlertFeature ,
269+ ) ,
270+ ( feature ) => feature . id ,
271+ ) ;
268272}
269273
270274function generateFeatureId ( feature : Omit < AviationAlertFeature , "id" > ) : string {
@@ -275,7 +279,7 @@ function generateFeatureId(feature: Omit<AviationAlertFeature, "id">): string {
275279 }
276280
277281 if ( "airSigmetType" in p ) {
278- return `sigmet-${ p . icaoId } - ${ p . alphaChar } -${ p . hazard } -${ p . validTimeFrom } ` ;
282+ return `sigmet-${ p . alphaChar } -${ p . hazard } -${ p . validTimeFrom } ` ;
279283 }
280284
281285 if ( "data" in p && p . data === "ISIGMET" ) {
0 commit comments