unsaved-docs-locked-alert.tsx 1023 B

12345678910111213141516171819202122232425262728293031
  1. import { FC, useEffect } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import OLNotification from '@/shared/components/ol/ol-notification'
  4. import { useEditorManagerContext } from '@/features/ide-react/context/editor-manager-context'
  5. import { useIdeReactContext } from '@/features/ide-react/context/ide-react-context'
  6. export const UnsavedDocsLockedAlert: FC = () => {
  7. const { t } = useTranslation()
  8. const { openDocs } = useEditorManagerContext()
  9. const { reportError } = useIdeReactContext()
  10. useEffect(() => {
  11. const { pendingOpsLength, inflightOpsLength } = openDocs.getUnsavedOpsSize()
  12. reportError('connection-lost-with-unsaved-changes', {
  13. pendingOpsLength,
  14. inflightOpsLength,
  15. })
  16. }, [reportError, openDocs])
  17. return (
  18. <OLNotification
  19. type="warning"
  20. content={
  21. <>
  22. <strong>{t('connection_lost_with_unsaved_changes')}</strong>{' '}
  23. {t('dont_reload_or_close_this_tab')} {t('your_changes_will_save')}
  24. </>
  25. }
  26. />
  27. )
  28. }