ConversationCanvasView.tsx1.1 KBView on GitHub
/**
 * ConversationCanvasView
 *
 * Adapter between the Canvas entity (§3.5 ConversationViewConfig) and the existing
 * ConversationCanvas / GroupedConversationCanvas components.
 *
 * Phase B: The seeding useEffect that imperatively transcribed viewConfig into CRMSlice
 * on every tab switch has been removed. Canvas components now subscribe to viewConfig
 * directly via the canvas prop, bypassing the global CRMSlice singleton.
 */

import {
  ConversationCanvas,
  GroupedConversationCanvas,
} from '@/modules/crm/components/conversation-canvas';
import type { Canvas, ConversationViewConfig } from '@/modules/canvas/types/canvas-types';

interface ConversationCanvasViewProps {
  canvas: Canvas;
}

export function ConversationCanvasView({ canvas }: ConversationCanvasViewProps) {
  const viewConfig = canvas.viewConfig as ConversationViewConfig;

  if (viewConfig.isGrouped) {
    return <GroupedConversationCanvas canvas={canvas} />;
  }

  return (
    <ConversationCanvas
      canvas={canvas}
      initialConversationIds={viewConfig.pinnedConversationIds}
    />
  );
}