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

EcrituresNumeriques / stylo / 13547287365

26 Feb 2025 03:20PM UTC coverage: 12.024% (+0.3%) from 11.684%
13547287365

push

github

web-flow
Merge pull request #1255 from ggrossetie/fix-1171-hooks-renaming

157 of 305 branches covered (51.48%)

Branch coverage included in aggregate %.

67 of 264 new or added lines in 25 files covered. (25.38%)

10 existing lines in 4 files now uncovered.

1144 of 10515 relevant lines covered (10.88%)

1.83 hits per line

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

0.0
/front/src/components/workspace/Workspaces.jsx
1
import { Button, useModal } from '@geist-ui/core'
×
2
import React, { useEffect, useState } from 'react'
×
3
import { Search } from 'react-feather'
×
4
import { useTranslation } from 'react-i18next'
×
5
import { shallowEqual, useSelector } from 'react-redux'
×
6
import { Helmet } from 'react-helmet'
×
7

8
import Field from '../../components/Field.jsx'
×
9

10
import WorkspaceItem from '../../components/workspace/WorkspaceItem.jsx'
×
11

12
import { CurrentUserContext } from '../../contexts/CurrentUser'
×
NEW
13
import { useGraphQLClient } from '../../helpers/graphQL.js'
×
14
import { useWorkspaces } from '../../hooks/workspace.js'
×
15
import Loading from '../Loading.jsx'
×
16
import CreateWorkspaceModal from './CreateWorkspaceModal.jsx'
×
17
import { getUserStats } from './Workspaces.graphql'
×
18

19
import styles from './workspaces.module.scss'
×
20

21
export default function Workspaces() {
×
22
  const { t } = useTranslation()
×
23
  const activeUser = useSelector((state) => state.activeUser, shallowEqual)
×
24
  const [filter, setFilter] = useState('')
×
25
  const { workspaces, error, isLoading } = useWorkspaces()
×
26
  const workspaceCreateModal = useModal()
×
27

28
  const [personalWorkspace, setPersonalWorkspace] = useState({
×
29
    _id: activeUser._id,
×
30
    personal: true,
×
31
    members: [],
×
32
  })
×
NEW
33
  const { query } = useGraphQLClient()
×
34

35
  useEffect(() => {
×
36
    ;(async () => {
×
37
      try {
×
NEW
38
        const getUserStatsResponse = await query({ query: getUserStats })
×
39
        const userStats = getUserStatsResponse.user.stats
×
40
        setPersonalWorkspace({
×
41
          _id: activeUser._id,
×
42
          personal: true,
×
43
          name: t('workspace.myspace'),
×
44
          description: '',
×
45
          color: '#D9D9D9',
×
46
          createdAt: activeUser.createdAt,
×
47
          updatedAt: activeUser.updatedAt,
×
48
          members: [],
×
49
          articlesCount:
×
50
            userStats.myArticlesCount + userStats.contributedArticlesCount,
×
51
        })
×
52
      } catch (err) {
×
53
        alert(err)
×
54
      }
×
55
    })()
×
56
  }, [activeUser._id, t])
×
57

58
  if (error) {
×
59
    return <div>Unable to load the workspaces</div>
×
60
  }
×
61
  if (isLoading) {
×
62
    return <Loading />
×
63
  }
×
64

65
  return (
×
66
    <CurrentUserContext.Provider value={activeUser}>
×
67
      <Helmet>
×
68
        <title>{t('workspace.title')}</title>
×
69
      </Helmet>
×
70
      <section className={styles.section}>
×
71
        <h1>{t('workspace.title')}</h1>
×
72
        <div>
×
73
          <Field
×
74
            className={styles.searchField}
×
75
            type="text"
×
76
            icon={Search}
×
77
            value={filter}
×
78
            placeholder={t('search.placeholder')}
×
79
            onChange={(e) => setFilter(e.target.value)}
×
80
          />
×
81
        </div>
×
82
        <Button
×
83
          type="secondary"
×
84
          className={styles.button}
×
85
          onClick={() => workspaceCreateModal.setVisible(true)}
×
86
        >
87
          {t('workspace.createNew.button')}
×
88
        </Button>
×
89

90
        <CreateWorkspaceModal {...workspaceCreateModal} />
×
91

92
        <ul className={styles.workspacesList}>
×
93
          {[personalWorkspace, ...workspaces].map((workspace) => (
×
94
            <li key={`workspace-${workspace._id}`}>
×
95
              <WorkspaceItem workspace={workspace} />
×
96
            </li>
×
97
          ))}
×
98
        </ul>
×
99
      </section>
×
100
    </CurrentUserContext.Provider>
×
101
  )
102
}
×
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