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";
|
||||
|
||||
import { AlertTriangle, CheckCircle2 } from "lucide-react";
|
||||
import { AlertTriangle, CheckCircle2, HelpCircle } from "lucide-react";
|
||||
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) {
|
||||
return (
|
||||
<Badge variant="outline" className="text-warn border-warn/40 gap-1">
|
||||
|
||||
@@ -14,6 +14,7 @@ type Props = {
|
||||
spec: McpEnvVar;
|
||||
infisicalProjectId: string;
|
||||
infisicalEnv: string;
|
||||
infisicalAvailable: boolean;
|
||||
onPendingRedeploy: () => void;
|
||||
};
|
||||
|
||||
@@ -21,6 +22,7 @@ export function EnvVarRow({
|
||||
spec,
|
||||
infisicalProjectId,
|
||||
infisicalEnv,
|
||||
infisicalAvailable,
|
||||
onPendingRedeploy,
|
||||
}: Props) {
|
||||
const [draft, setDraft] = useState<string>(spec.infisical_value ?? "");
|
||||
@@ -60,7 +62,7 @@ export function EnvVarRow({
|
||||
secret
|
||||
</Badge>
|
||||
)}
|
||||
<DriftBadge drift={spec.drift} />
|
||||
<DriftBadge drift={spec.drift} infisicalAvailable={infisicalAvailable} />
|
||||
</div>
|
||||
<p className="text-sm text-ink-muted mt-1">{spec.description}</p>
|
||||
</div>
|
||||
|
||||
@@ -67,6 +67,7 @@ export function EnvironmentTab() {
|
||||
}
|
||||
if (!data) return null;
|
||||
|
||||
const infisicalAvailable = data.errors.length === 0;
|
||||
const driftCount = data.vars.filter((v) => v.drift).length;
|
||||
|
||||
return (
|
||||
@@ -122,6 +123,7 @@ export function EnvironmentTab() {
|
||||
spec={v}
|
||||
infisicalProjectId={data.infisical_project_id}
|
||||
infisicalEnv={data.infisical_environment}
|
||||
infisicalAvailable={infisicalAvailable}
|
||||
onPendingRedeploy={() => setPendingRedeploy(true)}
|
||||
/>
|
||||
))}
|
||||
|
||||
@@ -19,7 +19,7 @@ type Props = {
|
||||
export function ToolDetailDrawer({ tool, open, onOpenChange }: Props) {
|
||||
return (
|
||||
<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 && (
|
||||
<>
|
||||
<SheetHeader>
|
||||
|
||||
Reference in New Issue
Block a user