diff --git a/components/versions/version-comparison.js b/components/versions/version-comparison.js index 54c3f94..8c6222a 100644 --- a/components/versions/version-comparison.js +++ b/components/versions/version-comparison.js @@ -11,16 +11,22 @@ import VoteButtons from './vote-buttons.js' import CopyButton from './copy-button.js' import {formatDate} from '@/lib/format.js' -export default function VersionComparison({versionData, versionCompare}) { +export default function VersionComparison({versionData, versionCompare, voteRefreshKey = 0, onVoteResult}) { const {current, main, outdated} = versionCompare const [snackbar, setSnackbar] = useState({open: false, message: '', severity: 'success'}) const handleVoteResult = result => { - setSnackbar({ - open: true, - message: result.message, - severity: result.success ? 'success' : 'error' - }) + if (onVoteResult) { + // Use the parent's vote result handler if provided + onVoteResult(result) + } else { + // Fallback to local snackbar if no parent handler + setSnackbar({ + open: true, + message: result.message, + severity: result.success ? 'success' : 'error' + }) + } } const handleCloseSnackbar = () => { @@ -117,7 +123,12 @@ export default function VersionComparison({versionData, versionCompare}) { hasSnackbarVisible={false} /> - + )} @@ -177,16 +188,18 @@ export default function VersionComparison({versionData, versionCompare}) { - - - {snackbar.message} - - + {!onVoteResult && ( + + + {snackbar.message} + + + )} ) } @@ -200,4 +213,6 @@ VersionComparison.propTypes = { main: PropTypes.object.isRequired, versionId: PropTypes.string }).isRequired, + voteRefreshKey: PropTypes.number, + onVoteResult: PropTypes.func } diff --git a/components/versions/version-page.js b/components/versions/version-page.js index f5e450d..e7a0836 100644 --- a/components/versions/version-page.js +++ b/components/versions/version-page.js @@ -36,6 +36,7 @@ export default function VersionPage({session, versionId, viewMode}) { const [error, setError] = useState('') const [isErrorAlertOpen, setIsErrorAlertOpen] = useState(false) const [snackbar, setSnackbar] = useState({open: false, message: '', severity: 'success'}) + const [voteRefreshKey, setVoteRefreshKey] = useState(0) useEffect(() => { async function fetchVersionData() { @@ -88,6 +89,8 @@ export default function VersionPage({session, versionId, viewMode}) { message: result.message, severity: result.success ? 'success' : 'error' }) + // Force refresh of both VoteButtons components by changing the key + setVoteRefreshKey(prev => prev + 1) } const handleCloseSnackbar = () => { @@ -223,7 +226,11 @@ export default function VersionPage({session, versionId, viewMode}) { label='Copier le contenu de cette version' /> {!isVoteDisabled && ( - + )} @@ -234,6 +241,8 @@ export default function VersionPage({session, versionId, viewMode}) { ) : (