补强静态发布安全边界
This commit is contained in:
@@ -68,6 +68,7 @@ function buttonLabel(phase: PublishPhase): string {
|
||||
export function ProjectPublishAction({ project, projectType }: ProjectPublishActionProps) {
|
||||
const [phase, setPhase] = useState<PublishPhase>('idle');
|
||||
const [failure, setFailure] = useState<WorksPublishFailure | null>(null);
|
||||
const [bindingWarning, setBindingWarning] = useState<string | null>(null);
|
||||
const pollGeneration = useRef(0);
|
||||
|
||||
useEffect(() => () => {
|
||||
@@ -130,6 +131,7 @@ export function ProjectPublishAction({ project, projectType }: ProjectPublishAct
|
||||
pollGeneration.current += 1;
|
||||
const generation = pollGeneration.current;
|
||||
setFailure(null);
|
||||
setBindingWarning(null);
|
||||
setPhase('submitting');
|
||||
|
||||
try {
|
||||
@@ -138,6 +140,7 @@ export function ProjectPublishAction({ project, projectType }: ProjectPublishAct
|
||||
project: metadata,
|
||||
});
|
||||
if (pollGeneration.current !== generation) return;
|
||||
setBindingWarning(result.bindingWarning?.message ?? null);
|
||||
setPhase('polling');
|
||||
void pollBuildStatus(result.upload.version_id, generation);
|
||||
} catch (error) {
|
||||
@@ -185,6 +188,16 @@ export function ProjectPublishAction({ project, projectType }: ProjectPublishAct
|
||||
</p>
|
||||
) : null}
|
||||
|
||||
{bindingWarning ? (
|
||||
<p
|
||||
data-testid="project-publish-binding-warning"
|
||||
aria-live="polite"
|
||||
className="max-w-md rounded-xl border border-amber-500/30 bg-amber-50 px-3 py-2 text-left text-xs leading-5 text-amber-900"
|
||||
>
|
||||
{bindingWarning}
|
||||
</p>
|
||||
) : null}
|
||||
|
||||
{failure ? (
|
||||
<div
|
||||
data-testid="project-publish-failure"
|
||||
|
||||
Reference in New Issue
Block a user