import axios from 'axios';
import type { FeaturedData } from '@/lib/types/home';
import { ContactResponseProps } from './../../types/contact';
import { ContactRequestProps } from './../../types/contact.d';

const API_URL = process.env.NEXT_PUBLIC_API_URL;

if (!API_URL) {
    throw new Error("NEXT_PUBLIC_API_URL is not defined in .env file");
}

const axiosInstance = axios.create({
    baseURL: API_URL,
    headers: {
        'Content-Type': 'application/json',
    },
});

axiosInstance.interceptors.request.use(
    (config) => {
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);

export const GlobalService = {
    async getHomeData(): Promise<FeaturedData> {
        const response = await axiosInstance.get('/home');
        return response.data;
    },
    async contact({ contactData }: { contactData: ContactRequestProps }): Promise<ContactResponseProps> {
        const response = await axiosInstance.post('/contact', {
            title: contactData.title,
            subject: contactData.subject,
        });
        return response.data;
    },
};
