const API_BASE_URL = 'http://127.0.0.1:8080'; // A simple function to retrieve the token from local storage or wherever it is stored function getAuthToken(): string | null { return localStorage.getItem('auth_token'); // Assuming the token is stored in localStorage } // A simple function to save the token function setAuthToken(token: string): void { localStorage.setItem('auth_token', token); } // A simple function to save the token function delAuthToken(): void { localStorage.removeItem('auth_token'); } /** * Create a new form. * @param name The name of the form. * @param fields The fields of the form in JSON format. * @returns The ID of the created form. */ export async function createForm(name: string, fields: unknown): Promise { const token = getAuthToken(); // Get the token from storage const response = await fetch(`${API_BASE_URL}/forms`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` // Add token to the headers }, body: JSON.stringify({ name, fields }) }); if (!response.ok) { throw new Error(`Error creating form: ${response.statusText}`); } return await response.json(); } /** * Get all forms. * @returns An array of forms. */ export async function getForms(): Promise { const token = getAuthToken(); // Get the token from storage const response = await fetch(`${API_BASE_URL}/forms`, { method: 'GET', headers: { Accept: 'application/json', Authorization: `Bearer ${token}` // Add token to the headers } }); if (!response.ok) { throw new Error(`Error fetching forms: ${response.statusText}`); } return await response.json(); } /** * Submit a form. * @param formId The ID of the form to submit. * @param data The submission data in JSON format. * @returns The ID of the created submission. */ export async function submitForm(formId: string, data: unknown): Promise { const token = getAuthToken(); // Get the token from storage const response = await fetch(`${API_BASE_URL}/forms/${formId}/submissions`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` // Add token to the headers }, body: JSON.stringify(data) }); if (!response.ok) { throw new Error(`Error submitting form: ${response.statusText}`); } return await response.json(); } /** * Get all submissions for a specific form. * @param formId The ID of the form. * @returns An array of submissions for the form. */ export async function getSubmissions(formId: string): Promise { const token = getAuthToken(); // Get the token from storage const response = await fetch(`${API_BASE_URL}/forms/${formId}/submissions`, { method: 'GET', headers: { Accept: 'application/json', Authorization: `Bearer ${token}` // Add token to the headers } }); if (!response.ok) { throw new Error(`Error fetching submissions: ${response.statusText}`); } return await response.json(); } /** * Login and get the authentication token. * @param username The username. * @param password The password. * @returns The authentication token. */ export async function login(username: string, password: string): Promise { const response = await fetch(`${API_BASE_URL}/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }) }); if (!response.ok) { throw new Error(`Error logging in: ${response.statusText}`); } const { token } = await response.json(); setAuthToken(token); // Store the token in localStorage } export function logout() { delAuthToken(); } export function loggedIn() { return localStorage.getItem('auth_token') !== null; }