From a1d660bc24f83eb2813263877522287d443f261e Mon Sep 17 00:00:00 2001 From: Calvin Deng Date: Mon, 5 Nov 2018 16:40:42 -0500 Subject: [PATCH 1/4] add sound feature and ping noise on peerJoin --- client/assets/beep.wav | Bin 0 -> 11670 bytes client/stores/clicks.js | 6 ++++++ client/utils/audioMachine.js | 30 ++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 client/assets/beep.wav create mode 100644 client/utils/audioMachine.js diff --git a/client/assets/beep.wav b/client/assets/beep.wav new file mode 100644 index 0000000000000000000000000000000000000000..6074514bde4a2971c62bcad2d426d0416415872c GIT binary patch literal 11670 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 { diff --git a/client/utils/audioMachine.js b/client/utils/audioMachine.js new file mode 100644 index 0000000..3eee893 --- /dev/null +++ b/client/utils/audioMachine.js @@ -0,0 +1,30 @@ +module.exports = class AudioMachine { + constructor () { + this.playlist = {} + } + + addSound (name, src) { + const newSound = {} + const soundElement = document.createElement('audio') + + soundElement.setAttribute('src', src); + newSound[name] = soundElement + + this.playlist = Object.assign( + newSound, + this.playlist + ) + } + + playSound (name) { + if (typeof name !== 'string') { + throw new TypeError('AudioMachine.playSound type of name is not string.') + } + + if (!this.playlist.hasOwnProperty(name)) { + throw new ReferenceError(`AudioMachine.playlist does not have sound ${name}`) + } + + this.playlist[name].play() + } +} From 6dc1e97e68282e740c300063b85a3858082e8c6d Mon Sep 17 00:00:00 2001 From: Calvin Deng Date: Mon, 5 Nov 2018 16:41:46 -0500 Subject: [PATCH 2/4] add src of .wav --- client/stores/clicks.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/stores/clicks.js b/client/stores/clicks.js index 78e717c..401bfb7 100644 --- a/client/stores/clicks.js +++ b/client/stores/clicks.js @@ -86,8 +86,9 @@ function store (state, emitter) { state.proofForm = { username: '', service: '', text: '' } state.navAnimation = true - //set up sound things + // set up sound things const audio = new AudioMachine(); + // http://soundbible.com/419-Tiny-Button-Push.html audio.addSound('peerOnEnter', 'assets/beep.wav') emitter.on('DOMContentLoaded', function () { From aedbc50bd99e12f6fa257b21bb8417962c849235 Mon Sep 17 00:00:00 2001 From: Calvin Deng Date: Tue, 6 Nov 2018 10:08:03 -0500 Subject: [PATCH 3/4] rename audio filename --- client/stores/clicks.js | 2 +- client/utils/{audioMachine.js => audio-machine.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename client/utils/{audioMachine.js => audio-machine.js} (100%) diff --git a/client/stores/clicks.js b/client/stores/clicks.js index 401bfb7..1b05922 100644 --- a/client/stores/clicks.js +++ b/client/stores/clicks.js @@ -3,7 +3,7 @@ const animate = require('../utils/animate') const { start, checkForAccount } = require('../../src/') const validUrl = require('valid-url') const uuid = require('uuid/v1') -const AudioMachine = require('../utils/audioMachine') +const AudioMachine = require('../utils/audio-machine') const { OBJECT, STRING, UNDEFINED, ARRAY, INTEGER, BOOL, FUNCTION } = require('../../src/utils') diff --git a/client/utils/audioMachine.js b/client/utils/audio-machine.js similarity index 100% rename from client/utils/audioMachine.js rename to client/utils/audio-machine.js From 37644f936db9e14337c01524795a0b7b3c085b78 Mon Sep 17 00:00:00 2001 From: Calvin Deng Date: Tue, 6 Nov 2018 17:03:17 -0500 Subject: [PATCH 4/4] node unsupported, error on construct --- client/utils/audio-machine.js | 7 +++++++ src/utils.js | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/client/utils/audio-machine.js b/client/utils/audio-machine.js index 3eee893..8cdbd5d 100644 --- a/client/utils/audio-machine.js +++ b/client/utils/audio-machine.js @@ -1,5 +1,12 @@ +const { isNode } = require('../../src/utils') module.exports = class AudioMachine { constructor () { + // enviornment check, currently node isn't supported + // TODO: make this work with node + if (isNode()){ + throw new Error('Can not instantiate AudioMachine in node env. Currently unsupported.') + } + this.playlist = {} } diff --git a/src/utils.js b/src/utils.js index 0f8ad4a..51aeddb 100644 --- a/src/utils.js +++ b/src/utils.js @@ -9,7 +9,15 @@ function a2t (arrayBuffer) { return new TextDecoder("utf-8").decode(arrayBuffer) } +function isNode () { + if (typeof process === 'undefined') { + return false + } + return true +} + module.exports = { + isNode: isNode, a2t: a2t, t2a: t2a, STRING: 'string',