convert setting modals + associate function

This commit is contained in:
p2405951
2026-01-30 16:35:48 +01:00
parent 62a88dab83
commit 2389ca88e4
19 changed files with 670 additions and 294 deletions
-45
View File
@@ -1,45 +0,0 @@
export default async function fetchWrapper(
path,
data = null,
method = "GET",
headers = {}
) {
try {
const res = await fetch(
`${import.meta.env.VITE_API_URL}${path}`,
{
method,
credentials: "include",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
...headers,
},
body: data ? JSON.stringify(data) : null,
}
);
let responseData = null;
try {
responseData = await res.json();
} catch (_) {
responseData = null;
}
return {
status: res.status,
data: responseData,
};
} catch (err) {
console.error("❌ Erreur réseau :", err);
return {
status: 0,
data: {
message: "Network error",
},
};
}
}
+92
View File
@@ -0,0 +1,92 @@
/*export default async function fetchWrapper(path,data = null,method = "GET",headers = {}) {
try {
const res = await fetch(
`${import.meta.env.VITE_API_URL}${path}`,
{
method,
credentials: "include",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
...headers,
},
body: data ? JSON.stringify(data) : null,
}
);
let responseData = null;
try {
responseData = await res.json();
} catch (_) {
responseData = null;
}
return {
status: res.status,
data: responseData,
};
} catch (err) {
console.error("❌ Erreur réseau :", err);
return {
status: 0,
data: {
message: "Network error",
},
};
}
}*/
interface FetchResponse<T = any> {
status: number;
data: T | null;
}
export default async function fetchWrapper(
path: string,
data: any = null,
method: string = "GET",
headers: Record<string, string> = {}
): Promise<FetchResponse> {
try {
const res = await fetch(
`${import.meta.env.VITE_API_URL}${path}`,
{
method,
credentials: "include",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
...headers,
},
body: data ? JSON.stringify(data) : null,
}
);
let responseData = null;
try {
responseData = await res.json();
} catch (_) {
responseData = null;
}
return {
status: res.status,
data: responseData,
};
} catch (err) {
console.error("❌ Erreur réseau :", err);
return {
status: 0,
data: {
message: "Network error",
},
};
}
}
-19
View File
@@ -1,19 +0,0 @@
export default async function getXSRFToken() {
const response = await fetch(`${import.meta.env.VITE_API_URL}/sanctum/csrf-cookie`, {
method: 'GET',
credentials: 'include'
});
if (!response.ok && response.status !== 204) {
throw new Error(`Error : ${response.status}`);
}
const name = 'XSRF-TOKEN';
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) {
return decodeURIComponent(parts.pop().split(';').shift());
}
throw new Error('Error: Invalid XSRF-TOKEN');
}
+40
View File
@@ -0,0 +1,40 @@
/*export default async function getXSRFToken() {
const response = await fetch(`${import.meta.env.VITE_API_URL}/sanctum/csrf-cookie`, {
method: 'GET',
credentials: 'include'
});
if (!response.ok && response.status !== 204) {
throw new Error(`Error : ${response.status}`);
}
const name = 'XSRF-TOKEN';
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) {
return decodeURIComponent(parts.pop().split(';').shift());
}
throw new Error('Error: Invalid XSRF-TOKEN');
}*/
export default async function getXSRFToken(): Promise<string> {
const response = await fetch(`${import.meta.env.VITE_API_URL}/sanctum/csrf-cookie`, {
method: 'GET',
credentials: 'include'
});
if (!response.ok && response.status !== 204) {
throw new Error(`Error : ${response.status}`);
}
const name = 'XSRF-TOKEN';
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) {
return decodeURIComponent(parts.pop()!.split(';').shift()!);
}
throw new Error('Error: Invalid XSRF-TOKEN');
}
-13
View File
@@ -1,13 +0,0 @@
import fetchWrapper from "../fetchWrapper.js";
import getXSRFToken from "../getXSRF.js";
export default async function deleteUser() {
const csrfToken = await getXSRFToken();
return fetchWrapper(
"/api/users",
null,
"DELETE",
{ "X-XSRF-TOKEN": csrfToken }
);
}
+13
View File
@@ -0,0 +1,13 @@
import fetchWrapper from "../fetchWrapper";
import getXSRFToken from "../getXSRF";
export default async function deleteUser(): Promise<{status: number;data: any;}> {
const csrfToken: string = await getXSRFToken();
return fetchWrapper(
"/api/users",
null,
"DELETE",
{ "X-XSRF-TOKEN": csrfToken }
);
}
-13
View File
@@ -1,13 +0,0 @@
import fetchWrapper from "../fetchWrapper.js";
import getXSRFToken from "../getXSRF.js";
export default async function updateUser(name, lastname, phone) {
const csrfToken = await getXSRFToken();
return fetchWrapper(
"/api/users/update",
{ name, lastname, phone },
"POST",
{ "X-XSRF-TOKEN": csrfToken }
);
}
+33
View File
@@ -0,0 +1,33 @@
/*import fetchWrapper from "../fetchWrapper.js";
import getXSRFToken from "../getXSRF.js";
export default async function updateUser(name, lastname, phone) {
const csrfToken = await getXSRFToken();
return fetchWrapper(
"/api/users/update",
{ name, lastname, phone },
"POST",
{ "X-XSRF-TOKEN": csrfToken }
);
}*/
import fetchWrapper from "../fetchWrapper";
import getXSRFToken from "../getXSRF";
interface UserUpdateData {
name: string;
lastname: string;
phone: string | null;
}
interface RequestHeaders {
"X-XSRF-TOKEN": string;
}
export default async function updateUser(name: string,lastname: string,phone: string | null): Promise<Response> {
const csrfToken: string = await getXSRFToken();
const userData: UserUpdateData = {name,lastname,phone,};
const headers: RequestHeaders = {"X-XSRF-TOKEN": csrfToken,};
return fetchWrapper("/api/users/update",userData,"POST",headers);
}