summaryrefslogtreecommitdiff
path: root/src/clients/actions.ts
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2023-05-18 22:04:52 -0600
committerHombreLaser <sebastian-440@live.com>2023-05-18 22:04:52 -0600
commit44a016256717b871ada858d5dc064d9d0e06425e (patch)
tree008bb13cc1b10355f335e24e46d0d74e85669364 /src/clients/actions.ts
parent2cc3bd2a5ab71ced121ea6e8fef3be5db2b98e4f (diff)
Añade creación de direcciones
Diffstat (limited to 'src/clients/actions.ts')
-rw-r--r--src/clients/actions.ts49
1 files changed, 39 insertions, 10 deletions
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<FormError>();
+
+ 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