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}) {
) : (