fix: complete tab isolation in AI Assist
- Fixed bug where new tabs were showing content from previous tabs - Reset ALL local state when switching tabs: - currentAgent, previewData, showCanvas, viewMode - assistStep, aiPlan, input, isProcessing - Each tab now operates in complete isolation - Tab state properly syncs from store on switch
This commit is contained in:
@@ -431,16 +431,8 @@ export default function AIAssist() {
|
|||||||
const [isProcessing, setIsProcessing] = useState(false);
|
const [isProcessing, setIsProcessing] = useState(false);
|
||||||
const [currentAgent, setCurrentAgent] = useState(activeTab?.currentAgent || "general");
|
const [currentAgent, setCurrentAgent] = useState(activeTab?.currentAgent || "general");
|
||||||
const [previewData, setPreviewData] = useState<PreviewData | null>(activeTab?.previewData || null);
|
const [previewData, setPreviewData] = useState<PreviewData | null>(activeTab?.previewData || null);
|
||||||
|
|
||||||
// Sync local state when tab changes
|
|
||||||
useEffect(() => {
|
|
||||||
if (activeTab) {
|
|
||||||
setCurrentAgent(activeTab.currentAgent || "general");
|
|
||||||
setPreviewData(activeTab.previewData || null);
|
|
||||||
}
|
|
||||||
}, [activeTabId, activeTab]);
|
|
||||||
const [availableModels, setAvailableModels] = useState<string[]>([]);
|
const [availableModels, setAvailableModels] = useState<string[]>([]);
|
||||||
const [showCanvas, setShowCanvas] = useState(false);
|
const [showCanvas, setShowCanvas] = useState(!!activeTab?.previewData);
|
||||||
const [viewMode, setViewMode] = useState<"preview" | "code">("preview");
|
const [viewMode, setViewMode] = useState<"preview" | "code">("preview");
|
||||||
const [abortController, setAbortController] = useState<AbortController | null>(null);
|
const [abortController, setAbortController] = useState<AbortController | null>(null);
|
||||||
|
|
||||||
@@ -448,6 +440,20 @@ export default function AIAssist() {
|
|||||||
const [assistStep, setAssistStep] = useState<"idle" | "plan" | "generating" | "preview">("idle");
|
const [assistStep, setAssistStep] = useState<"idle" | "plan" | "generating" | "preview">("idle");
|
||||||
const [aiPlan, setAiPlan] = useState<any>(null);
|
const [aiPlan, setAiPlan] = useState<any>(null);
|
||||||
|
|
||||||
|
// Sync local state when tab changes - FULL ISOLATION
|
||||||
|
useEffect(() => {
|
||||||
|
if (activeTab) {
|
||||||
|
setCurrentAgent(activeTab.currentAgent || "general");
|
||||||
|
setPreviewData(activeTab.previewData || null);
|
||||||
|
setShowCanvas(!!activeTab.previewData);
|
||||||
|
setViewMode("preview");
|
||||||
|
setAssistStep("idle");
|
||||||
|
setAiPlan(null);
|
||||||
|
setInput("");
|
||||||
|
setIsProcessing(false);
|
||||||
|
}
|
||||||
|
}, [activeTabId]);
|
||||||
|
|
||||||
const [status, setStatus] = useState<string | null>(null);
|
const [status, setStatus] = useState<string | null>(null);
|
||||||
|
|
||||||
const scrollRef = useRef<HTMLDivElement>(null);
|
const scrollRef = useRef<HTMLDivElement>(null);
|
||||||
|
|||||||
Reference in New Issue
Block a user