Fix type safety in catalog composables + 3 InfoPanel bugs
All checks were successful
Build Docker Image / build (push) Successful in 3m42s
All checks were successful
Build Docker Image / build (push) Successful in 3m42s
- Add proper codegen types to all catalog composables: - useCatalogHubs: HubItem, NearestHubItem - useCatalogSuppliers: SupplierItem, NearestSupplierItem - useCatalogProducts: ProductItem - useCatalogOffers: OfferItem - useCatalogInfo: InfoEntity, ProductItem, HubItem, OfferItem - Fix InfoPanel bugs for offers: - Use locationLatitude/locationLongitude for offer coordinates - Enrich entity with supplierName after loading profile - Apply-to-filter now adds both product AND hub for offers - Filter null values from GraphQL array responses - Add type-safe coordinate helper (getEntityCoords) - Fix urlBounds type inference in useCatalogSearch
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
import type { GetOffersQueryResult } from '~/composables/graphql/public/exchange-generated'
|
||||
import { GetOffersDocument } from '~/composables/graphql/public/exchange-generated'
|
||||
|
||||
const PAGE_SIZE = 24
|
||||
|
||||
// Type from codegen
|
||||
type OfferItem = NonNullable<NonNullable<GetOffersQueryResult['getOffers']>[number]>
|
||||
|
||||
// Shared state across list and map views
|
||||
const items = ref<any[]>([])
|
||||
const items = ref<OfferItem[]>([])
|
||||
const total = ref(0)
|
||||
const selectedProductUuid = ref<string | null>(null)
|
||||
const isLoading = ref(false)
|
||||
@@ -18,7 +22,7 @@ export function useCatalogOffers() {
|
||||
.filter(offer => offer.locationLatitude && offer.locationLongitude)
|
||||
.map(offer => ({
|
||||
uuid: offer.uuid,
|
||||
name: offer.productName || offer.title,
|
||||
name: offer.productName || offer.locationName,
|
||||
latitude: offer.locationLatitude,
|
||||
longitude: offer.locationLongitude,
|
||||
country: offer.locationCountry
|
||||
@@ -40,7 +44,7 @@ export function useCatalogOffers() {
|
||||
'public',
|
||||
'exchange'
|
||||
)
|
||||
const next = data?.getOffers || []
|
||||
const next = (data?.getOffers || []).filter((o): o is OfferItem => o !== null)
|
||||
items.value = replace ? next : items.value.concat(next)
|
||||
total.value = data?.getOffersCount ?? total.value
|
||||
isInitialized.value = true
|
||||
|
||||
Reference in New Issue
Block a user