Fix: auto refreshing on requesting member number in some cards in prod.
This commit is contained in:
@@ -54,11 +54,11 @@ function App() {
|
||||
<Balance />
|
||||
</ProtectedRoute>
|
||||
} />
|
||||
<Route path="/documentacion" element={
|
||||
{/*<Route path="/documentacion" element={
|
||||
<ProtectedRoute>
|
||||
<Documentacion />
|
||||
</ProtectedRoute>
|
||||
} />
|
||||
} />*/}
|
||||
<Route path="/anuncios" element={
|
||||
<ProtectedRoute>
|
||||
<Anuncios />
|
||||
|
||||
@@ -55,114 +55,119 @@ const NavBar = () => {
|
||||
|
||||
|
||||
return (
|
||||
<Navbar expand="lg" sticky="top" expanded={expanded} onToggle={() => setExpanded(!expanded)}>
|
||||
<Container fluid>
|
||||
<Navbar.Toggle aria-controls="navbar" className="custom-toggler">
|
||||
<svg width="30" height="30" viewBox="0 0 30 30">
|
||||
<path
|
||||
d="M4 7h22M4 15h22M4 23h22"
|
||||
stroke="var(--navbar-link-color)"
|
||||
strokeWidth="3"
|
||||
strokeLinecap="round"
|
||||
strokeMiterlimit="10"
|
||||
/>
|
||||
</svg>
|
||||
</Navbar.Toggle>
|
||||
<>
|
||||
<Navbar expand="lg" sticky="top" expanded={expanded} onToggle={() => setExpanded(!expanded)}>
|
||||
<Container fluid>
|
||||
<Navbar.Toggle aria-controls="navbar" className="custom-toggler">
|
||||
<svg width="30" height="30" viewBox="0 0 30 30">
|
||||
<path
|
||||
d="M4 7h22M4 15h22M4 23h22"
|
||||
stroke="var(--navbar-link-color)"
|
||||
strokeWidth="3"
|
||||
strokeLinecap="round"
|
||||
strokeMiterlimit="10"
|
||||
/>
|
||||
</svg>
|
||||
</Navbar.Toggle>
|
||||
|
||||
<Navbar.Collapse id="main-navbar">
|
||||
<Nav className="me-auto gap-2">
|
||||
<Nav.Link
|
||||
as={Link}
|
||||
to="/"
|
||||
title="Inicio"
|
||||
href="/"
|
||||
className={`text-truncate ${expanded ? "mt-3" : ""}`}
|
||||
onClick={() => setExpanded(false)}
|
||||
>
|
||||
<FontAwesomeIcon icon={faHouse} className="me-2" />
|
||||
Inicio
|
||||
</Nav.Link>
|
||||
<Nav.Link
|
||||
as={Link}
|
||||
to="/lista-espera"
|
||||
title="Lista de espera"
|
||||
className={`text-truncate ${expanded ? "mt-3" : ""}`}
|
||||
onClick={() => setExpanded(false)}
|
||||
>
|
||||
<FontAwesomeIcon icon={faList} className="me-2" />
|
||||
Lista de espera
|
||||
</Nav.Link>
|
||||
|
||||
<IfAuthenticated>
|
||||
<Navbar.Collapse id="main-navbar">
|
||||
<Nav className="me-auto gap-2">
|
||||
<Nav.Link
|
||||
as={Link}
|
||||
to="/anuncios"
|
||||
title="Anuncios"
|
||||
to="/"
|
||||
title="Inicio"
|
||||
href="/"
|
||||
className={`text-truncate ${expanded ? "mt-3" : ""}`}
|
||||
onClick={() => setExpanded(false)}
|
||||
>
|
||||
<FontAwesomeIcon icon={faBullhorn} className="me-2" />Anuncios
|
||||
<FontAwesomeIcon icon={faHouse} className="me-2" />
|
||||
Inicio
|
||||
</Nav.Link>
|
||||
<Nav.Link
|
||||
as={Link}
|
||||
to="/lista-espera"
|
||||
title="Lista de espera"
|
||||
className={`text-truncate ${expanded ? "mt-3" : ""}`}
|
||||
onClick={() => setExpanded(false)}
|
||||
>
|
||||
<FontAwesomeIcon icon={faList} className="me-2" />
|
||||
Lista de espera
|
||||
</Nav.Link>
|
||||
|
||||
<IfAuthenticated>
|
||||
<Nav.Link
|
||||
as={Link}
|
||||
to="/anuncios"
|
||||
title="Anuncios"
|
||||
className={`text-truncate ${expanded ? "mt-3" : ""}`}
|
||||
onClick={() => setExpanded(false)}
|
||||
>
|
||||
<FontAwesomeIcon icon={faBullhorn} className="me-2" />Anuncios
|
||||
</Nav.Link>
|
||||
</IfAuthenticated>
|
||||
|
||||
<Nav.Link
|
||||
as={Link}
|
||||
to="/documentacion"
|
||||
to="#" // /documentacion
|
||||
title="Documentación"
|
||||
className={`text-truncate ${expanded ? "mt-3" : ""}`}
|
||||
onClick={() => setExpanded(false)}
|
||||
onClick={() => {
|
||||
window.open("https://miarma.net/files/huertos/", "_blank");
|
||||
setExpanded(false);
|
||||
}}
|
||||
>
|
||||
<FontAwesomeIcon icon={faFile} className="me-2" />Documentación
|
||||
</Nav.Link>
|
||||
|
||||
<IfRole roles={[CONSTANTS.ROLE_ADMIN, CONSTANTS.ROLE_DEV]}>
|
||||
<NavGestion onNavigate={() => setExpanded(false)} externalExpanded={expanded} />
|
||||
</IfRole>
|
||||
<div className="d-lg-none mt-2 ms-2">
|
||||
<ThemeButton onlyIcon={isLg} />
|
||||
</div>
|
||||
</Nav>
|
||||
</Navbar.Collapse>
|
||||
|
||||
<div className="d-none d-lg-block me-3">
|
||||
<ThemeButton onlyIcon={isLg} />
|
||||
</div>
|
||||
|
||||
<Nav className="d-flex flex-md-row flex-column gap-2 ms-auto align-items-center">
|
||||
<IfAuthenticated>
|
||||
<AnimatedDropdown
|
||||
className='end-0 position-absolute'
|
||||
show={showingUserDropdown}
|
||||
onMouseEnter={() => setShowingUserDropdown(true)}
|
||||
onMouseLeave={() => setShowingUserDropdown(false)}
|
||||
onToggle={(isOpen) => setShowingUserDropdown(isOpen)}
|
||||
trigger={
|
||||
<Link className="nav-link dropdown-toggle fw-bold">
|
||||
@{identity?.account?.username}
|
||||
</Link>
|
||||
}
|
||||
>
|
||||
<Link to="/perfil" className="text-muted dropdown-item nav-link">
|
||||
<FontAwesomeIcon icon={faUser} className="me-2" />
|
||||
Mi perfil
|
||||
</Link>
|
||||
<hr className="dropdown-divider" />
|
||||
<Link to="#" className="dropdown-item nav-link" onClick={logout}>
|
||||
<FontAwesomeIcon icon={faSignOut} className="me-2" />
|
||||
Cerrar sesión
|
||||
</Link>
|
||||
</AnimatedDropdown>
|
||||
</IfAuthenticated>
|
||||
|
||||
<IfRole roles={[CONSTANTS.ROLE_ADMIN, CONSTANTS.ROLE_DEV]}>
|
||||
<NavGestion onNavigate={() => setExpanded(false)} externalExpanded={expanded} />
|
||||
</IfRole>
|
||||
<div className="d-lg-none mt-2 ms-2">
|
||||
<ThemeButton onlyIcon={isLg} />
|
||||
</div>
|
||||
<IfNotAuthenticated>
|
||||
<Nav.Link as={Link} to="/login" title="Iniciar sesión">
|
||||
<FontAwesomeIcon icon={faSignIn} className="me-2" />
|
||||
Iniciar sesión
|
||||
</Nav.Link>
|
||||
</IfNotAuthenticated>
|
||||
</Nav>
|
||||
</Navbar.Collapse>
|
||||
|
||||
<div className="d-none d-lg-block me-3">
|
||||
<ThemeButton onlyIcon={isLg} />
|
||||
</div>
|
||||
|
||||
<Nav className="d-flex flex-md-row flex-column gap-2 ms-auto align-items-center">
|
||||
<IfAuthenticated>
|
||||
<AnimatedDropdown
|
||||
className='end-0 position-absolute'
|
||||
show={showingUserDropdown}
|
||||
onMouseEnter={() => setShowingUserDropdown(true)}
|
||||
onMouseLeave={() => setShowingUserDropdown(false)}
|
||||
onToggle={(isOpen) => setShowingUserDropdown(isOpen)}
|
||||
trigger={
|
||||
<Link className="nav-link dropdown-toggle fw-bold">
|
||||
@{identity?.account?.username}
|
||||
</Link>
|
||||
}
|
||||
>
|
||||
<Link to="/perfil" className="text-muted dropdown-item nav-link">
|
||||
<FontAwesomeIcon icon={faUser} className="me-2" />
|
||||
Mi perfil
|
||||
</Link>
|
||||
<hr className="dropdown-divider" />
|
||||
<Link to="#" className="dropdown-item nav-link" onClick={logout}>
|
||||
<FontAwesomeIcon icon={faSignOut} className="me-2" />
|
||||
Cerrar sesión
|
||||
</Link>
|
||||
</AnimatedDropdown>
|
||||
</IfAuthenticated>
|
||||
|
||||
<IfNotAuthenticated>
|
||||
<Nav.Link as={Link} to="/login" title="Iniciar sesión">
|
||||
<FontAwesomeIcon icon={faSignIn} className="me-2" />
|
||||
Iniciar sesión
|
||||
</Nav.Link>
|
||||
</IfNotAuthenticated>
|
||||
</Nav>
|
||||
</Container>
|
||||
</Navbar>
|
||||
</Container>
|
||||
</Navbar>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -145,7 +145,9 @@ const SocioCard = ({ identity, isNew = false, onCreate, onUpdate, onDelete, onCa
|
||||
try {
|
||||
if (!(createMode || editMode)) return;
|
||||
|
||||
const latestNumber = await getData("http://localhost:8081/v2/huertos/users/latest-number", {}, false);
|
||||
const latestNumber = import.meta.env.MODE === 'production' ?
|
||||
await getData("https://api.miarma.net/v2/huertos/users/latest-number", {}, false)
|
||||
: await getData("http://localhost:8081/v2/huertos/users/latest-number", {}, false);
|
||||
|
||||
const nuevoNumero = latestNumber + 1;
|
||||
setLatestNumber(nuevoNumero);
|
||||
|
||||
@@ -27,7 +27,9 @@ const NewUserForm = ({ onSubmit, userType, plotNumber, fieldErrors }) => {
|
||||
fetchedOnce.current = true;
|
||||
|
||||
try {
|
||||
const latestNumber = await getData("http://localhost:8081/v2/huertos/users/latest-number", {}, false);
|
||||
const latestNumber = import.meta.env.MODE === 'production' ?
|
||||
await getData("https://api.miarma.net/v2/huertos/users/latest-number", {}, false)
|
||||
: await getData("http://localhost:8081/v2/huertos/users/latest-number", {}, false);
|
||||
setForm((prev) => ({
|
||||
...prev,
|
||||
memberNumber: latestNumber + 1
|
||||
|
||||
@@ -13,13 +13,17 @@ export const useData = (config, onError) => {
|
||||
}
|
||||
}, [config]);
|
||||
|
||||
const getAuthHeaders = () => {
|
||||
const getAuthHeaders = (isFormData = false) => {
|
||||
const token = localStorage.getItem("token");
|
||||
if (!token) return { "Content-Type": "application/json" };
|
||||
return {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": `Bearer ${token}`,
|
||||
};
|
||||
|
||||
const headers = {};
|
||||
if (token) headers.Authorization = `Bearer ${token}`;
|
||||
|
||||
if (!isFormData) {
|
||||
headers["Content-Type"] = "application/json";
|
||||
}
|
||||
|
||||
return headers;
|
||||
};
|
||||
|
||||
const handleAxiosError = (err) => {
|
||||
@@ -90,7 +94,8 @@ export const useData = (config, onError) => {
|
||||
|
||||
const requestWrapper = async (method, endpoint, payload = null, refresh = false) => {
|
||||
try {
|
||||
const headers = getAuthHeaders();
|
||||
const isFormData = payload instanceof FormData;
|
||||
const headers = getAuthHeaders(isFormData);
|
||||
const cfg = { headers };
|
||||
let response;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user