aboutsummaryrefslogtreecommitdiff
path: root/extension/junction.js
blob: 7de7c28012e5f8781f5fca622402745c48a7f17a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
const internals = {

  isInCallState: false,

  icons: {
    call: {
      16: 'icons/action-16.png',
      32: 'icons/action-32.png'
    },

    hangUp: {
      16: 'icons/hang_up-16.png',
      32: 'icons/hang_up-32.png'
    }
  },

  onClick() {
    if (internals.isInCall()) {
      return internals.hangUp();
    }

    return internals.joinAudioCall();
  },

  async joinAudioCall() {

    internals.isInCallState = true;
    internals.setIcon('hangUp');
    const tabs = await browser.tabs.query({
      currentWindow: true,
      active: true
    });

    internals.createAudioElement(browser.runtime.getURL('sounds/tada.wav'));
  },

  hangUp() {

    document.querySelectorAll('audio').forEach((audioElement) => audioElement.remove());
    internals.setIcon('call');
    internals.isInCallState = false;
  },

  createAudioElement(source) {

    const audioElement = document.createElement('audio');
    audioElement.src = source;
    audioElement.autoplay = 'autoplay';
    document.querySelector('body').appendChild(audioElement);
  },

  isInCall() {
    return internals.isInCallState; // this should be replaced with actually checking the built stuff
  },

  setIcon(iconSet) {

    browser.browserAction.setIcon({
      path: internals.icons[iconSet]
    });
  }
};

browser.browserAction.onClicked.addListener(internals.onClick);