Skip to content

Instantly share code, notes, and snippets.

@Sawtaytoes
Created September 20, 2018 02:49
Show Gist options
  • Save Sawtaytoes/aa27b9eacb52b6c4e398f3a6ea1499a5 to your computer and use it in GitHub Desktop.
Save Sawtaytoes/aa27b9eacb52b6c4e398f3a6ea1499a5 to your computer and use it in GitHub Desktop.
A non-observable solution using the same code concepts as the observable pattern.
import {
BUTTON_DOWN,
BUTTON_UP,
doButtonPressAction,
} from './actions'
const timeLimit = 300
let timeoutId = 0
const numButtonPresses = {
numDown: 0,
numUp: 0,
}
const resetButtonPresses = () => {
numButtonPresses.numDown = 0
numButtonPresses.numUp = 0
}
const handleButtonPress = buttonState => {
if (buttonState === BUTTON_DOWN) {
numButtonPresses.numDown += 1
}
else if (buttonState === BUTTON_UP) {
numButtonPresses.numUp += 1
}
clearTimeout(timeoutId)
new Promise(resolve => (
timeoutId = setTimeout(resolve, timeLimit)
))
.then(resetButtonPresses)
.then(
doButtonPressAction(
bluetoothAddress,
{ ...numButtonPresses }
)
)
}
const listenForButtonPress = bluetoothAddress => {
new FlicConnectionChannel(bluetoothAddress)
.on('buttonUpOrDown', handleButtonPress)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment