From 44a016256717b871ada858d5dc064d9d0e06425e Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Thu, 18 May 2023 22:04:52 -0600 Subject: Añade creación de direcciones MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/clients/actions.ts | 49 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 10 deletions(-) (limited to 'src/clients/actions.ts') diff --git a/src/clients/actions.ts b/src/clients/actions.ts index bfddf54..cb5ba23 100644 --- a/src/clients/actions.ts +++ b/src/clients/actions.ts @@ -1,8 +1,22 @@ import { redirect } from "react-router-dom"; import { ApiClient } from "./api_client"; -import { clearSessionStorage, deleteEmptyFields, setFormErrorsInSessionStorage } from "../lib/form_utils"; +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(); @@ -25,23 +39,38 @@ export async function editAddress({ params, request }) { form_data = deleteEmptyFields(form_data); try { - - const response = await client.put(`/account/addresses/${params.addressId}`, form_data); - - if(response.status == 401 || response.status == 404) - return redirect("/products"); + await client.put(`/account/addresses/${params.addressId}`, form_data); return redirect("/account"); } catch(error) { if(error.response.status == 401) { - new Token().logout; + new Token().logout(); - return redirect("/products") + return redirect("/products"); } else { - setFormErrorsInSessionStorage(error.response.data.errors); + 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/addresses/${params.addressId}/edit`); + return redirect("/account"); + } catch(error) { + if(error.response.status == 401) { + new Token().logout(); + + return redirect("/products"); + } + else { + return requestErrorsToArray(error.response.data.errors); } } } \ No newline at end of file -- cgit v1.2.3