diff --git a/anzeigen-frontend/src/composables/api/useAdApi.ts b/anzeigen-frontend/src/composables/api/useAdApi.ts index 7940046b..cb0a706e 100644 --- a/anzeigen-frontend/src/composables/api/useAdApi.ts +++ b/anzeigen-frontend/src/composables/api/useAdApi.ts @@ -5,6 +5,7 @@ import type { GetAdRequest, GetAds200Response, GetAdsRequest, + IncrementViewRequest, UpdateAdRequest, } from "@/api/swbrett"; @@ -58,3 +59,13 @@ export function useGetAds() { api.getAds(params) ); } + +export function useIncrementAdView() { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const api = inject(DEFAULT_API_KEY)!; + + // eslint-disable-next-line @typescript-eslint/no-invalid-void-type + return useApiCall( + (params: IncrementViewRequest) => api.incrementView(params) + ); +} diff --git a/anzeigen-frontend/src/views/AdDetailsView.vue b/anzeigen-frontend/src/views/AdDetailsView.vue index ad44c762..2f94c0a1 100644 --- a/anzeigen-frontend/src/views/AdDetailsView.vue +++ b/anzeigen-frontend/src/views/AdDetailsView.vue @@ -47,7 +47,7 @@ import { useRouter } from "vue-router"; import AdNotFound from "@/components/Ad/Details/AdNotFound.vue"; import AdOverview from "@/components/Ad/Details/AdOverview.vue"; -import { useGetAd } from "@/composables/api/useAdApi"; +import { useGetAd, useIncrementAdView } from "@/composables/api/useAdApi"; import { useClearCacheEventBus } from "@/composables/useEventBus"; const clearCacheEventBus = useClearCacheEventBus(); @@ -63,6 +63,8 @@ const { loading, } = useGetAd(); +const { call: incrementView } = useIncrementAdView(); + const adDetails = ref | null>(null); const getAd = useMemoize(async (adId: number) => { @@ -79,6 +81,9 @@ watch(idQuery, (newId) => { }); onMounted(async () => { + if (idQuery.value) { + await incrementView({ id: parseInt(idQuery.value.toString()) }); + } await updateAd(idQuery.value?.toString() || ""); });