refactor: remove all any types, add strict GraphQL scalar typing
All checks were successful
Build Docker Image / build (push) Successful in 4m3s
All checks were successful
Build Docker Image / build (push) Successful in 4m3s
- Add strictScalars: true to codegen.ts with proper scalar mappings (Date, Decimal, JSONString, JSON, UUID, BigInt → string/Record) - Replace all ref<any[]> with proper GraphQL-derived types - Add type guards for null filtering in arrays - Fix bugs exposed by typing (locationLatitude vs latitude, etc.) - Add interfaces for external components (MapboxSearchBox) This enables end-to-end type safety from GraphQL schema to frontend.
This commit is contained in:
@@ -37,19 +37,19 @@
|
||||
</div>
|
||||
|
||||
<!-- Location on map -->
|
||||
<div v-if="offer.latitude && offer.longitude" class="h-48 rounded-lg overflow-hidden">
|
||||
<div v-if="offer.locationLatitude && offer.locationLongitude" class="h-48 rounded-lg overflow-hidden">
|
||||
<ClientOnly>
|
||||
<MapboxMap
|
||||
map-id="offer-location-map"
|
||||
class="w-full h-full"
|
||||
:options="{
|
||||
style: 'mapbox://styles/mapbox/streets-v12',
|
||||
center: [offer.longitude, offer.latitude],
|
||||
center: [offer.locationLongitude, offer.locationLatitude],
|
||||
zoom: 8
|
||||
}"
|
||||
>
|
||||
<MapboxDefaultMarker
|
||||
:lnglat="[offer.longitude, offer.latitude]"
|
||||
:lnglat="[offer.locationLongitude, offer.locationLatitude]"
|
||||
color="#10b981"
|
||||
/>
|
||||
</MapboxMap>
|
||||
@@ -101,7 +101,10 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { GetOfferDocument, GetSupplierProfileByTeamDocument } from '~/composables/graphql/public/exchange-generated'
|
||||
import { GetOfferDocument, GetSupplierProfileByTeamDocument, type GetOfferQueryResult, type GetSupplierProfileByTeamQueryResult } from '~/composables/graphql/public/exchange-generated'
|
||||
|
||||
type Offer = NonNullable<GetOfferQueryResult['getOffer']>
|
||||
type SupplierProfile = NonNullable<GetSupplierProfileByTeamQueryResult['getSupplierProfileByTeam']>
|
||||
|
||||
definePageMeta({
|
||||
layout: 'topnav'
|
||||
@@ -114,8 +117,8 @@ const { execute } = useGraphQL()
|
||||
const offerId = computed(() => route.params.offerId as string)
|
||||
|
||||
const isLoading = ref(true)
|
||||
const offer = ref<any>(null)
|
||||
const supplier = ref<any>(null)
|
||||
const offer = ref<Offer | null>(null)
|
||||
const supplier = ref<SupplierProfile | null>(null)
|
||||
|
||||
// Load offer data
|
||||
const loadOffer = async () => {
|
||||
|
||||
Reference in New Issue
Block a user