summaryrefslogtreecommitdiff
path: root/client/src/slices/api/adminSlice.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/slices/api/adminSlice.ts')
-rw-r--r--client/src/slices/api/adminSlice.ts53
1 files changed, 53 insertions, 0 deletions
diff --git a/client/src/slices/api/adminSlice.ts b/client/src/slices/api/adminSlice.ts
new file mode 100644
index 0000000..cd1638d
--- /dev/null
+++ b/client/src/slices/api/adminSlice.ts
@@ -0,0 +1,53 @@
+import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
+import type { RootState } from '../../store';
+
+export interface Guest {
+ id: number;
+ firstName: string;
+ lastName: string;
+ attendance: string;
+ email: string;
+ message: string;
+ partySize: number;
+ partyList: Array<PartyGuest>;
+}
+
+export interface PartyGuest {
+ firstName: string;
+ lastName: string;
+}
+
+export interface AdminLoginRequest {
+ username: string;
+ password: string;
+}
+
+export interface AdminLoginResponse {
+ guests: Guest[];
+ token: string;
+}
+
+export const adminSlice = createApi({
+ reducerPath: 'adminApi',
+ baseQuery: fetchBaseQuery({
+ baseUrl: import.meta.env.VITE_BASE_URL,
+ prepareHeaders: (headers, { getState }) => {
+ const token = (getState() as RootState).admin.token;
+ if (token) {
+ headers.set('authorization', `${token}`);
+ }
+ return headers;
+ },
+ }),
+ endpoints: (builder) => ({
+ loginAdmin: builder.mutation<AdminLoginResponse, AdminLoginRequest>({
+ query: (credentials) => ({
+ url: 'admin/login',
+ method: 'POST',
+ body: credentials,
+ }),
+ }),
+ }),
+});
+
+export const { useLoginAdminMutation } = adminSlice;