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

IQSS / dataverse-frontend / 7960501805

19 Feb 2024 01:42PM CUT coverage: 97.453% (-0.007%) from 97.46%
7960501805

push

github

web-flow
Merge pull request #284 from IQSS/feature/280-use-query-param-in-home-page-pagination

280 - Use page search param in home page pagination

533 of 554 branches covered (96.21%)

Branch coverage included in aggregate %.

1571 of 1605 relevant lines covered (97.88%)

3749.59 hits per line

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

87.5
/src/sections/file/file-action-buttons/access-file-menu/RequestAccessModal.tsx
1
import { Button, DropdownButtonItem, Modal } from '@iqss/dataverse-design-system'
2
import { useSession } from '../../../session/SessionContext'
3
import { FormEvent, useState } from 'react'
4
import { Form } from '@iqss/dataverse-design-system'
5
import { ExclamationTriangle } from 'react-bootstrap-icons'
6
import { Route } from '../../../Route.enum'
7
import styles from './AccessFileMenu.module.scss'
8
import { useTranslation } from 'react-i18next'
9

10
interface RequestAccessButtonProps {
11
  fileId: number
12
}
13
export function RequestAccessModal({ fileId }: RequestAccessButtonProps) {
34✔
14
  const { t } = useTranslation('files')
34✔
15
  const { user } = useSession()
75✔
16
  const [show, setShow] = useState(false)
30✔
17
  const handleClose = () => {
30✔
18
    setShow(false)
5✔
19
  }
20
  const handleShow = () => setShow(true)
30✔
21

22
  return (
30✔
23
    <>
24
      <DropdownButtonItem onClick={handleShow}>{t('requestAccess.title')}</DropdownButtonItem>
25
      <Modal show={show} onHide={handleClose} size="lg">
26
        <Modal.Header>
27
          <Modal.Title>{t('requestAccess.title')}</Modal.Title>
28
        </Modal.Header>
29
        {user ? (
30✔
30
          <RequestAccessForm fileId={fileId} handleClose={handleClose} />
31
        ) : (
32
          <RequestAccessLoginMessage handleClose={handleClose} />
33
        )}
34
      </Modal>
35
    </>
36
  )
37
}
75✔
38

39
const RequestAccessForm = ({
75✔
40
  fileId,
41
  handleClose
42
}: {
43
  fileId: number
44
  handleClose: () => void
45
}) => {
4✔
46
  const { t } = useTranslation('files')
75✔
47
  /* istanbul ignore next */
48
  const requestAccessToFile = (event: FormEvent<HTMLFormElement>) => {
4✔
49
    /* istanbul ignore next */ event.preventDefault()
×
50
    event.stopPropagation()
×
51

52
    // TODO - Implement request access to file functionality
53
    console.log('requesting access to file', fileId)
×
54
  }
55

56
  return (
4✔
57
    <Form onSubmit={requestAccessToFile}>
58
      <Modal.Body>
59
        <Form.Group controlId="basic-form-username">
60
          <p>{t('requestAccess.askToAcceptTerms')}.</p>
61
          <Form.Group.Label>{t('requestAccess.terms')}</Form.Group.Label>
62
          <Form.Group.Input type="text" readOnly defaultValue="Some terms" />
63
        </Form.Group>
64
      </Modal.Body>
65
      <Modal.Footer>
66
        <Button variant="primary" type="submit">
67
          {t('requestAccess.confirmation')}
68
        </Button>
69
        <Button variant="secondary" type="button" onClick={handleClose}>
70
          {t('requestAccess.cancel')}
71
        </Button>
72
      </Modal.Footer>
73
    </Form>
74
  )
75
}
75✔
76

77
const RequestAccessLoginMessage = ({ handleClose }: { handleClose: () => void }) => {
225✔
78
  const { t } = useTranslation('files')
75✔
79
  return (
6✔
80
    <>
81
      <Modal.Body>
82
        <p className={styles['request-access-login-message']}>
83
          <ExclamationTriangle /> You need to <a href={Route.SIGN_UP}>Sign Up</a> or{' '}
84
          <a href={Route.LOG_IN}>Log In</a> to request access.
85
        </p>
86
      </Modal.Body>
87
      <Modal.Footer>
88
        <Button variant="secondary" onClick={handleClose}>
89
          {t('requestAccess.close')}
90
        </Button>
91
      </Modal.Footer>
92
    </>
93
  )
94
}
75✔
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

© 2025 Coveralls, Inc