diff --git a/package-lock.json b/package-lock.json index 1e1c817..7d069ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@next/mdx": "^13.0.2", "@tailwindcss/typography": "^0.5.4", "autoprefixer": "^10.4.12", - "axios": "^1.2.0", + "axios": "^1.7.3", "clsx": "^2.0.0", "fast-glob": "^3.2.11", "feed": "^4.2.2", @@ -1363,11 +1363,11 @@ } }, "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz", + "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -3237,9 +3237,9 @@ "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", diff --git a/package.json b/package.json index a26b950..a6800b9 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@next/mdx": "^13.0.2", "@tailwindcss/typography": "^0.5.4", "autoprefixer": "^10.4.12", - "axios": "^1.2.0", + "axios": "^1.7.3", "clsx": "^2.0.0", "fast-glob": "^3.2.11", "feed": "^4.2.2", diff --git a/src/api/axiosConfig.js b/src/api/axiosConfig.js index bd45cb2..531432a 100644 --- a/src/api/axiosConfig.js +++ b/src/api/axiosConfig.js @@ -1,12 +1,17 @@ import axios from "axios" import { isHyperlink } from '@/lib/isHyperlink' -const BASE_URL = process.env.DOTNET_SERVER_URL + +const BASE_URL = process.env.DOTNET_SERVER_URL || 'http://localhost:5000/api'; + const AXIOS_BASE = axios.create({ baseURL: BASE_URL, - }) + timeout: 1000, + }); + const JSON_CLIENT = isHyperlink(BASE_URL) ? AXIOS_BASE : false + export default JSON_CLIENT diff --git a/src/api/postsApi.js b/src/api/postsApi.js index 54f8964..4a478e9 100644 --- a/src/api/postsApi.js +++ b/src/api/postsApi.js @@ -1,23 +1,21 @@ -import API from './axiosConfig' +import JSON_CLIENT from '@/api/axiosConfig'; -export const getPosts = () => { +export const getPosts = async () => { try { - return API.get('/posts/') - .then((res) => res.data) + const response = await JSON_CLIENT.get('/posts'); + return response.data; + } catch (error) { + console.error('Failed to fetch posts:', error); + return []; } - catch (e) { - console.error(e) - return [] - } -} +}; -export const getPost = (postSlug) => { +export const getPost = async (slug) => { try { - return API.get(`/posts/${postSlug}`) - .then((res) => res.data) - } - catch (e) { - console.error(e) - return {} + const response = await JSON_CLIENT.get(`/posts/${slug}`); + return response.data; + } catch (error) { + console.error('Failed to fetch post:', error); + return null; } -} +}; diff --git a/src/components/Header.jsx b/src/components/Header.jsx index b90f29e..cb51f41 100644 --- a/src/components/Header.jsx +++ b/src/components/Header.jsx @@ -5,10 +5,12 @@ import { useRouter } from 'next/router' import { Popover, Transition } from '@headlessui/react' import clsx from 'clsx' + import { Container } from '@/components/Container' import LoginLogoutLink from "@/components/LoginLogoutLink" import avatarImage from '@/images/avatar.jpg' + function CloseIcon(props) { return (
  • @@ -48,6 +52,7 @@ function MobileNavItem({ href, children }) { ) } + function MobileNavigation(props) { return ( @@ -92,6 +97,11 @@ function MobileNavigation(props) {