mirror of
https://github.com/Crosstalk-Solutions/project-nomad.git
synced 2026-10-17 05:14:19 +02:00
Shows a dismissible dashboard banner to users who submitted a benchmark under v1 scoring but don't yet have a Score v2 result, nudging them to re-run so the community leaderboard gets their v2 number. - Show logic (benchmark_service.shouldShowRerunBanner): has a result with submitted_to_repository=true AND no result with nomad_score_v2 AND the dismiss KV isn't set. Self-clears two ways — dismiss sets the KV, and any v2 run gives a result a nomad_score_v2 so the condition flips off on its own. - New GET /api/benchmark/rerun-banner + useBenchmarkRerunBanner hook (mirrors useUpdateAvailable), rendered as a dismissible Alert on the dashboard with a "Re-run benchmark" CTA to /settings/benchmark. - New KV key benchmark.rerunBannerDismissed (boolean) in both KV_STORE_SCHEMA and the SETTINGS_KEYS whitelist (the PATCH /system/settings validator enum); dismiss writes it via the existing updateSetting endpoint + invalidates the query. Sibling to the Score v2 app client (#1094); stacked on it for the nomad_score_v2 column. Browser-verified on the NOMAD3 dev env: show/dismiss/ reload-persist/self-clear-on-v2 all correct. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
16 lines
513 B
TypeScript
16 lines
513 B
TypeScript
import api from "~/lib/api"
|
|
import { useQuery } from "@tanstack/react-query"
|
|
|
|
export const BENCHMARK_RERUN_BANNER_QUERY_KEY = ['benchmark-rerun-banner']
|
|
|
|
export const useBenchmarkRerunBanner = () => {
|
|
const queryData = useQuery<{ show: boolean } | undefined>({
|
|
queryKey: BENCHMARK_RERUN_BANNER_QUERY_KEY,
|
|
queryFn: () => api.checkBenchmarkRerunBanner(),
|
|
refetchInterval: Infinity, // Disable automatic refetching
|
|
refetchOnWindowFocus: false,
|
|
})
|
|
|
|
return queryData.data
|
|
}
|