test
This commit is contained in:
parent
87b608f7b9
commit
6f3217f28b
@ -349,10 +349,6 @@ const TimeClockPage = () => {
|
||||
try {
|
||||
const apiUsers = await timeApi.getUsers();
|
||||
|
||||
// Django REST Framework renvoie souvent les listes paginées
|
||||
// sous la forme { count, next, previous, results: [...] }.
|
||||
// On accepte aussi les formats { data: [...] } / { users: [...] }
|
||||
// pour éviter de perdre une partie des utilisateurs.
|
||||
if (Array.isArray(apiUsers)) {
|
||||
availableUsers = apiUsers;
|
||||
} else if (Array.isArray(apiUsers?.results)) {
|
||||
@ -361,21 +357,14 @@ const TimeClockPage = () => {
|
||||
availableUsers = apiUsers.data;
|
||||
} else if (Array.isArray(apiUsers?.users)) {
|
||||
availableUsers = apiUsers.users;
|
||||
} else {
|
||||
availableUsers = [];
|
||||
}
|
||||
} catch (usersError) {
|
||||
console.warn(
|
||||
'Impossible de charger la liste des utilisateurs. Fallback sur les pointages.',
|
||||
usersError,
|
||||
);
|
||||
console.warn('Impossible de charger les utilisateurs.', usersError);
|
||||
}
|
||||
}
|
||||
|
||||
// Les pointages contiennent eux aussi l'utilisateur associé.
|
||||
// On les fusionne toujours avec la liste de l'API : l'endpoint
|
||||
// utilisateurs peut être limité au profil courant ou être paginé.
|
||||
// Cela évite d'avoir uniquement l'admin dans la combolist.
|
||||
// Sécurité : on ajoute les utilisateurs trouvés dans les pointages
|
||||
// qui ne seraient pas présents dans /users/.
|
||||
const usersById = new Map(
|
||||
availableUsers
|
||||
.map((user) => [getUserId(user), user])
|
||||
@ -402,37 +391,21 @@ const TimeClockPage = () => {
|
||||
usersById.set(id, entryUser);
|
||||
});
|
||||
|
||||
availableUsers = [...usersById.values()];
|
||||
|
||||
const currentUserId = getCurrentUserId();
|
||||
|
||||
if (
|
||||
currentUserId &&
|
||||
!availableUsers.some(
|
||||
(availableUser) => getUserId(availableUser) === currentUserId,
|
||||
)
|
||||
) {
|
||||
const loggedInUser = authUser || currentUser;
|
||||
|
||||
if (loggedInUser) {
|
||||
availableUsers.unshift(loggedInUser);
|
||||
}
|
||||
}
|
||||
|
||||
availableUsers = availableUsers
|
||||
.filter((availableUser) => getUserId(availableUser))
|
||||
.sort((first, second) =>
|
||||
getUserLabel(first).localeCompare(getUserLabel(second), 'fr'),
|
||||
availableUsers = [...usersById.values()]
|
||||
.filter((user) => getUserId(user))
|
||||
.sort((a, b) =>
|
||||
getUserLabel(a).localeCompare(getUserLabel(b), 'fr'),
|
||||
);
|
||||
|
||||
setUsers(availableUsers);
|
||||
|
||||
const currentUserId = getCurrentUserId();
|
||||
|
||||
setSelectedUserId((currentSelectedId) => {
|
||||
if (
|
||||
currentSelectedId &&
|
||||
availableUsers.some(
|
||||
(availableUser) =>
|
||||
getUserId(availableUser) === String(currentSelectedId),
|
||||
(user) => getUserId(user) === String(currentSelectedId),
|
||||
)
|
||||
) {
|
||||
return currentSelectedId;
|
||||
@ -451,7 +424,6 @@ const TimeClockPage = () => {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
loadTimeEntries();
|
||||
}, []);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user