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

mozilla / blurts-server / #12296

pending completion
#12296

push

circleci

web-flow
Merge pull request #2830 from mozilla/MNTOR-1160/add-new-email

Mntor 1160/add new email

282 of 1332 branches covered (21.17%)

Branch coverage included in aggregate %.

79 of 79 new or added lines in 7 files covered. (100.0%)

959 of 3548 relevant lines covered (27.03%)

2.2 hits per line

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

0.0
/src/client/js/partials/add-email.js
1
let dialogEl, form
2

3
function init () {
4
  dialogEl = document.querySelector('dialog[data-partial="add-email"]')
×
5
  if (!dialogEl) return
×
6

7
  form = dialogEl.querySelector('form')
×
8
  form.addEventListener('submit', handleSubmit)
×
9
  dialogEl.addEventListener('close', kill)
×
10
}
11

12
async function handleSubmit (e) {
13
  e.preventDefault()
×
14

15
  try {
×
16
    form.elements['email-submit'].toggleAttribute('disabled', true)
×
17
    const res = await fetch('/api/v1/user/email', {
×
18
      headers: {
19
        'Content-Type': 'application/json',
20
        'x-csrf-token': form.elements['csrf-token'].value
21
      },
22
      mode: 'same-origin',
23
      method: 'POST',
24
      body: JSON.stringify({
25
        email: form.elements['email-address'].value
26
      })
27
    })
28

29
    if (!res.ok) throw new Error('Bad fetch response')
×
30

31
    renderSuccess(form.elements['email-address'].value)
×
32
  } catch (e) {
33
    console.error('Could not add new email.', e)
×
34
  } finally {
35
    form.elements['email-submit'].toggleAttribute('disabled', false)
×
36
  }
37
}
38

39
function renderSuccess (email) {
40
  const content = dialogEl.querySelector('template[data-success]').content.cloneNode(true)
×
41
  const messageEl = content.querySelector('p.add-email-success')
×
42

43
  messageEl.style.setProperty('--form-height', `${form.clientHeight}px`)
×
44
  messageEl.querySelector('.current-email').textContent = email
×
45
  form.replaceWith(content)
×
46
}
47

48
function kill () {
49
  form.removeEventListener('submit', handleSubmit)
×
50
  dialogEl.removeEventListener('close', kill)
×
51
}
52

53
export default init
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