diff --git a/src/components/PageViews.tsx b/src/components/PageViews.tsx index 870a0cb..8310217 100644 --- a/src/components/PageViews.tsx +++ b/src/components/PageViews.tsx @@ -1,3 +1,5 @@ +'use client' + import { useEffect, useState } from 'react'; interface PageViewsProps { @@ -6,74 +8,33 @@ interface PageViewsProps { export default function PageViews({ slug }: PageViewsProps) { const [views, setViews] = useState(null); - const [error, setError] = useState(null); useEffect(() => { - const fetchData = async () => { + console.log('PageViews component mounted with slug:', slug); + async function updatePageView() { try { - // Get initial views - const getResponse = await fetch(`/api/pageview/${slug}`); - if (!getResponse.ok) { - const errorData = await getResponse.json(); - console.error('Error getting views:', errorData); - setError('Failed to get views'); - return; - } - const getData = await getResponse.json(); - setViews(getData.views); - - // Increment views + // First increment the view count const postResponse = await fetch(`/api/pageview/${slug}`, { method: 'POST', }); - if (!postResponse.ok) { - const errorData = await postResponse.json(); - console.error('Error incrementing views:', errorData); - return; - } - const postData = await postResponse.json(); - setViews(postData.views); + if (!postResponse.ok) throw new Error('Failed to increment view count'); + + // Then get the updated count + const { views } = await postResponse.json(); + console.log('Updated views:', views); + setViews(views); } catch (error) { - console.error('Error with page views:', error); - setError('Failed to load views'); + console.error('Error updating page views:', error); + setViews(null); } - }; + } - fetchData(); + updatePageView(); }, [slug]); - if (error) { - console.error('Page views error:', error); - return null; - } - - if (views === null) { - return null; - } - return ( -
- - - - - {views} views -
+ + Views: {views === null ? '-' : views} + ); } diff --git a/src/components/layout/Footer.astro b/src/components/layout/Footer.astro index 0e352e2..66d27ff 100644 --- a/src/components/layout/Footer.astro +++ b/src/components/layout/Footer.astro @@ -25,7 +25,7 @@ console.log('Slug:', slug) { !isBlogPost && (
- +
) }