fix(settings): unknown drift state when Infisical unavailable + RTL drawer
- DriftBadge shows 'Unknown' (not 'Synced') when infisical_available=false - Plumb infisicalAvailable from EnvironmentTab through EnvVarRow → DriftBadge - Add dir='rtl' to ToolDetailDrawer SheetContent for Hebrew descriptions
This commit is contained in:
@@ -1,9 +1,27 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { AlertTriangle, CheckCircle2 } from "lucide-react";
|
import { AlertTriangle, CheckCircle2, HelpCircle } from "lucide-react";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
|
|
||||||
export function DriftBadge({ drift }: { drift: boolean }) {
|
type Props = {
|
||||||
|
drift: boolean;
|
||||||
|
// When false, Infisical was unreachable: drift state is unknown, not "synced".
|
||||||
|
infisicalAvailable?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function DriftBadge({ drift, infisicalAvailable = true }: Props) {
|
||||||
|
if (!infisicalAvailable) {
|
||||||
|
return (
|
||||||
|
<Badge
|
||||||
|
variant="outline"
|
||||||
|
className="text-ink-muted border-rule gap-1"
|
||||||
|
title="Infisical לא זמין — מצב ה-drift לא ידוע"
|
||||||
|
>
|
||||||
|
<HelpCircle className="w-3 h-3" />
|
||||||
|
Unknown
|
||||||
|
</Badge>
|
||||||
|
);
|
||||||
|
}
|
||||||
if (drift) {
|
if (drift) {
|
||||||
return (
|
return (
|
||||||
<Badge variant="outline" className="text-warn border-warn/40 gap-1">
|
<Badge variant="outline" className="text-warn border-warn/40 gap-1">
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ type Props = {
|
|||||||
spec: McpEnvVar;
|
spec: McpEnvVar;
|
||||||
infisicalProjectId: string;
|
infisicalProjectId: string;
|
||||||
infisicalEnv: string;
|
infisicalEnv: string;
|
||||||
|
infisicalAvailable: boolean;
|
||||||
onPendingRedeploy: () => void;
|
onPendingRedeploy: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -21,6 +22,7 @@ export function EnvVarRow({
|
|||||||
spec,
|
spec,
|
||||||
infisicalProjectId,
|
infisicalProjectId,
|
||||||
infisicalEnv,
|
infisicalEnv,
|
||||||
|
infisicalAvailable,
|
||||||
onPendingRedeploy,
|
onPendingRedeploy,
|
||||||
}: Props) {
|
}: Props) {
|
||||||
const [draft, setDraft] = useState<string>(spec.infisical_value ?? "");
|
const [draft, setDraft] = useState<string>(spec.infisical_value ?? "");
|
||||||
@@ -60,7 +62,7 @@ export function EnvVarRow({
|
|||||||
secret
|
secret
|
||||||
</Badge>
|
</Badge>
|
||||||
)}
|
)}
|
||||||
<DriftBadge drift={spec.drift} />
|
<DriftBadge drift={spec.drift} infisicalAvailable={infisicalAvailable} />
|
||||||
</div>
|
</div>
|
||||||
<p className="text-sm text-ink-muted mt-1">{spec.description}</p>
|
<p className="text-sm text-ink-muted mt-1">{spec.description}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ export function EnvironmentTab() {
|
|||||||
}
|
}
|
||||||
if (!data) return null;
|
if (!data) return null;
|
||||||
|
|
||||||
|
const infisicalAvailable = data.errors.length === 0;
|
||||||
const driftCount = data.vars.filter((v) => v.drift).length;
|
const driftCount = data.vars.filter((v) => v.drift).length;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -122,6 +123,7 @@ export function EnvironmentTab() {
|
|||||||
spec={v}
|
spec={v}
|
||||||
infisicalProjectId={data.infisical_project_id}
|
infisicalProjectId={data.infisical_project_id}
|
||||||
infisicalEnv={data.infisical_environment}
|
infisicalEnv={data.infisical_environment}
|
||||||
|
infisicalAvailable={infisicalAvailable}
|
||||||
onPendingRedeploy={() => setPendingRedeploy(true)}
|
onPendingRedeploy={() => setPendingRedeploy(true)}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ type Props = {
|
|||||||
export function ToolDetailDrawer({ tool, open, onOpenChange }: Props) {
|
export function ToolDetailDrawer({ tool, open, onOpenChange }: Props) {
|
||||||
return (
|
return (
|
||||||
<Sheet open={open} onOpenChange={onOpenChange}>
|
<Sheet open={open} onOpenChange={onOpenChange}>
|
||||||
<SheetContent side="left" className="sm:max-w-xl overflow-y-auto">
|
<SheetContent dir="rtl" side="left" className="sm:max-w-xl overflow-y-auto">
|
||||||
{tool && (
|
{tool && (
|
||||||
<>
|
<>
|
||||||
<SheetHeader>
|
<SheetHeader>
|
||||||
|
|||||||
Reference in New Issue
Block a user