import { redirect } from "react-router-dom"; import { ApiClient } from "./api_client"; import { clearSessionStorage, deleteEmptyFields, setFormErrorsInSessionStorage, FormError } from "../lib/form_utils"; import Token from "../lib/token"; function requestErrorsToArray(errors: any) { const errors_array = new Array(); for(const [field, error_message] of Object.entries(errors)) { const e = { field_name: field, message: error_message.toString() }; errors_array.push(e); } return errors_array; } export async function editAccount({ request }) { const client = new ApiClient(); let form_data = await request.formData(); form_data = deleteEmptyFields(form_data); const response = await client.put("/account", form_data); if(response.status == 401) return redirect("/products"); client.token.set(response.data.token); client.token.setRefresh(response.data.refresh); return redirect("/account"); } export async function editAddress({ params, request }) { clearSessionStorage(); const client = new ApiClient(); let form_data = await request.formData(); form_data = deleteEmptyFields(form_data); try { await client.put(`/account/addresses/${params.addressId}`, form_data); return redirect("/account"); } catch(error) { if(error.response.status == 401) { new Token().logout(); return redirect("/products"); } else { return requestErrorsToArray(error.response.data.errors); } } } export async function createAddress({ request }) { clearSessionStorage(); const client = new ApiClient(); const form_data = await request.formData(); try{ await client.post('/account/addresses', form_data, client.authorizationHeaders()); return redirect("/account"); } catch(error) { if(error.response.status == 401) { new Token().logout(); return redirect("/products"); } else { return requestErrorsToArray(error.response.data.errors); } } }