import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; import type { RootState } from '../store'; export interface LoginRequest { firstName: string; lastName: string; } export interface LoginResponse { guest: Guest; token: string; } export interface Guest { id: number; firstName: string; lastName: string; attendance: string; email: string; message: string; partySize: number; partyList: Array; } export interface PartyGuest { firstName: string; lastName: string; } export const apiSlice = createApi({ reducerPath: 'api', baseQuery: fetchBaseQuery({ baseUrl: 'http://192.168.1.41:8080/', prepareHeaders: (headers, { getState }) => { const token = (getState() as RootState).auth.token; if (token) { headers.set('authorization', `${token}`); } return headers; }, }), tagTypes: ['Guest'], endpoints: (builder) => ({ getGuests: builder.query({ query: () => 'guest', providesTags: ['Guest'], }), updateGuest: builder.mutation({ query: (guest) => ({ url: `guest/${guest?.id}`, method: 'PUT', body: guest, providesTags: ['Guest'], }), }), login: builder.mutation({ query: (credentials) => ({ url: 'guest/login', method: 'POST', body: credentials, }), }), }), }); export const { useGetGuestsQuery, useUpdateGuestMutation, useLoginMutation } = apiSlice;