From 2f60df2ed98d72d83d9236d63678a9b6ca1a139c Mon Sep 17 00:00:00 2001 From: IliesAllali Date: Sun, 25 Oct 2026 20:35:34 +0100 Subject: [PATCH] =?UTF-8?q?Relecture=20depuis=20l'arbre=20:=20une=20propos?= =?UTF-8?q?ition=20d=C3=A9j=C3=A0=20relue=20le=20dit,=20et=20l'arbre=20se?= =?UTF-8?q?=20remet=20=C3=A0=20jour?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- frontend/src/hooks/useContributions.js | 6 ++++++ frontend/src/i18n/en/contribution.js | 1 + frontend/src/utils/errorMessages.js | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/frontend/src/hooks/useContributions.js b/frontend/src/hooks/useContributions.js index f9d5433..deb11e8 100644 --- a/frontend/src/hooks/useContributions.js +++ b/frontend/src/hooks/useContributions.js @@ -261,6 +261,12 @@ export function useContributions({ canEditCurrentTree, canSubmitContribution, tr reviewingSessionId: '', })) } catch (error) { + // Déjà relue ailleurs (un autre onglet, un co-gestionnaire) : l'arbre et la liste se remettent à jour, le + // fantôme part avec elle + if (error?.payload?.error === 'contribution_session_already_reviewed') { + await refreshCurrentTreeGraph().catch(() => {}) + await refreshContributionSessions() + } setContribState((current) => ({ ...current, reviewingSessionId: '', diff --git a/frontend/src/i18n/en/contribution.js b/frontend/src/i18n/en/contribution.js index 7adb291..bdc09d8 100644 --- a/frontend/src/i18n/en/contribution.js +++ b/frontend/src/i18n/en/contribution.js @@ -229,4 +229,5 @@ export default { 'Cette photo est trop lourde. Essayez une photo plus petite.': 'This photo is too large. Try a smaller one.', 'Beaucoup de photos attendent déjà la relecture sur cet arbre. Réessayez quand la personne qui le gère les aura vues.': "Many photos are already waiting for review on this tree. Try again once the person who manages it has seen them.", 'Ce fichier n’est pas une photo que Parenthèse sait afficher (JPEG, PNG, WebP ou GIF).': "This file isn't a photo Parenthèse can show (JPEG, PNG, WebP or GIF).", + 'Cette proposition a déjà été relue, peut-être par une autre personne qui gère l’arbre.': 'This suggestion has already been reviewed, maybe by another person who manages the tree.', } diff --git a/frontend/src/utils/errorMessages.js b/frontend/src/utils/errorMessages.js index 1468f02..c00bbb0 100644 --- a/frontend/src/utils/errorMessages.js +++ b/frontend/src/utils/errorMessages.js @@ -64,6 +64,10 @@ export function getAccountErrorMessage(error) { return t('Le format de fichier ne correspond pas au type de média choisi.') } + if (errorCode === 'contribution_session_already_reviewed') { + return t('Cette proposition a déjà été relue, peut-être par une autre personne qui gère l’arbre.') + } + if (errorCode === 'photo_too_large') { return t('Cette photo est trop lourde. Essayez une photo plus petite.') }