MarkdownContent.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { useEffect, useState } from 'react'
  2. import { Markdown } from '@/components/interfaces/Markdown'
  3. interface MarkdownContentProps {
  4. content: string | null | undefined
  5. integrationId?: string
  6. }
  7. export const MarkdownContent = ({
  8. content: remoteContent,
  9. integrationId,
  10. }: MarkdownContentProps) => {
  11. const [localContent, setLocalContent] = useState<string>('')
  12. useEffect(() => {
  13. // Reset on every id/remote change so navigating between integrations
  14. // doesn't show the previous one's overview while the new import resolves.
  15. setLocalContent('')
  16. if (!integrationId || remoteContent) return
  17. let cancelled = false
  18. import(`@/static-data/integrations/${integrationId}/overview.md`)
  19. .then((module) => {
  20. if (!cancelled) setLocalContent(String(module.default))
  21. })
  22. .catch((error) => console.error('Error loading markdown:', error))
  23. return () => {
  24. cancelled = true
  25. }
  26. }, [integrationId, remoteContent])
  27. const content = remoteContent || localContent
  28. return <Markdown className="flex flex-col gap-y-4 text-foreground-light">{content}</Markdown>
  29. }