• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

EcrituresNumeriques / stylo / 14198984573

01 Apr 2025 02:57PM UTC coverage: 31.929% (+0.2%) from 31.772%
14198984573

push

github

web-flow
feat: l'éditeur collaboratif devient l'éditeur par défaut! (#1378)

* feat: les changements des éditions collaboratives sont enregistrés periodiquement dans la copie de travail

* chore: supprime la notion de session collaborative

* chore: supprime le code lié aux sessions

* chore: met à jour la date de dernière modification du document

* fix: supprime useHistory (non utilisé)

* chore: ordre des imports

* fix: corrige les imports (linter)

* chore: corrige la migration des données

* chore: mise à jour de la configuration de yjs/collaboration

Utilise un nouveau dossier pour la persistence des données afin de
sécuriser la migration des données

* chore: plus besoin de faire un calc avec la position relative

* chore: supprime la validation pour les tests

474 of 711 branches covered (66.67%)

Branch coverage included in aggregate %.

63 of 197 new or added lines in 13 files covered. (31.98%)

424 existing lines in 8 files now uncovered.

4484 of 14817 relevant lines covered (30.26%)

2.27 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/front/src/components/collaborative/CollaborativeEditorStatus.jsx
NEW
1
import { useToasts } from '@geist-ui/core'
×
2
import React, { useCallback } from 'react'
×
3
import { StopCircle } from 'lucide-react'
×
4
import { useTranslation } from 'react-i18next'
×
UNCOV
5
import { useHistory } from 'react-router-dom'
×
6
import { useGraphQLClient } from '../../helpers/graphQL.js'
×
UNCOV
7
import { useModal } from '../../hooks/modal.js'
×
UNCOV
8
import Button from '../Button.jsx'
×
NEW
9
import Modal from '../Modal.jsx'
×
10
import FormActions from '../molecules/FormActions.jsx'
×
11

12
import styles from './CollaborativeEditorStatus.module.scss'
×
13
import CollaborativeEditorWriters from './CollaborativeEditorWriters.jsx'
×
14

15
import { stopCollaborativeSession } from './CollaborativeSession.graphql'
×
16

17
/**
18
 * @param props
19
 * @param {string} props.articleId
20
 * @param {string} props.websocketStatus
21
 * @param {string} props.collaborativeSessionState
22
 * @return {Element}
23
 */
UNCOV
24
export default function CollaborativeEditorStatus({
×
UNCOV
25
  articleId,
×
UNCOV
26
  websocketStatus,
×
UNCOV
27
  collaborativeSessionState,
×
UNCOV
28
}) {
×
UNCOV
29
  const { t } = useTranslation()
×
UNCOV
30
  const { query } = useGraphQLClient()
×
UNCOV
31
  const { setToast } = useToasts()
×
UNCOV
32
  const history = useHistory()
×
33

UNCOV
34
  const collaborativeSessionEndModal = useModal()
×
35

UNCOV
36
  const handleEndCollaborativeSession = useCallback(async () => {
×
UNCOV
37
    try {
×
UNCOV
38
      await query({
×
UNCOV
39
        query: stopCollaborativeSession,
×
UNCOV
40
        variables: { articleId },
×
UNCOV
41
      })
×
UNCOV
42
      setToast({
×
UNCOV
43
        type: 'default',
×
UNCOV
44
        text: 'Collaborative session ended',
×
UNCOV
45
      })
×
UNCOV
46
      history.push('/articles')
×
UNCOV
47
    } catch (err) {
×
UNCOV
48
      setToast({
×
UNCOV
49
        type: 'error',
×
UNCOV
50
        text: 'Unable to stop the collaborative session: ' + err.toString(),
×
UNCOV
51
      })
×
UNCOV
52
    }
×
UNCOV
53
  }, [])
×
54

UNCOV
55
  return (
×
UNCOV
56
    <>
×
UNCOV
57
      <div className={styles.row}>
×
UNCOV
58
        <div className={styles.writers}>
×
UNCOV
59
          <CollaborativeEditorWriters />
×
UNCOV
60
        </div>
×
UNCOV
61
        {websocketStatus === 'connected' &&
×
UNCOV
62
          collaborativeSessionState === 'started' && (
×
UNCOV
63
            <Button primary onClick={() => collaborativeSessionEndModal.show()}>
×
UNCOV
64
              <StopCircle /> {t('article.collaborativeSessionEnd.title')}
×
UNCOV
65
            </Button>
×
66
          )}
UNCOV
67
      </div>
×
UNCOV
68
      <Modal
×
UNCOV
69
        {...collaborativeSessionEndModal.bindings}
×
UNCOV
70
        title={
×
UNCOV
71
          <>
×
UNCOV
72
            <StopCircle />
×
UNCOV
73
            {t('article.collaborativeSessionEnd.title')}
×
UNCOV
74
          </>
×
75
        }
76
      >
UNCOV
77
        {t('article.collaborativeSessionEnd.confirmMessage')}
×
UNCOV
78
        <FormActions
×
UNCOV
79
          onCancel={() => collaborativeSessionEndModal.close()}
×
UNCOV
80
          onSubmit={handleEndCollaborativeSession}
×
UNCOV
81
        />
×
UNCOV
82
      </Modal>
×
UNCOV
83
    </>
×
84
  )
UNCOV
85
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc