diff options
Diffstat (limited to 'src/js/bluetooth.js')
-rw-r--r-- | src/js/bluetooth.js | 74 |
1 files changed, 62 insertions, 12 deletions
diff --git a/src/js/bluetooth.js b/src/js/bluetooth.js index 679ef0b..30c2d82 100644 --- a/src/js/bluetooth.js +++ b/src/js/bluetooth.js @@ -1,8 +1,10 @@ import { bluetooth } from 'agl-js-api'; import Mustache from 'mustache'; -var isPowered = false; +window.bluetooth = bluetooth; + var template; +var filterBy = 'available'; function update_state(state) { var control = document.getElementById('BluetoothControl'); @@ -14,12 +16,27 @@ function update_state(state) { } function update_devices(devices) { - console.log('update_devices', devices); var deviceList = document.getElementById('BluetoothContainer'); deviceList.innerHTML = ''; devices.forEach(function(device) { - deviceList.innerHTML += Mustache.render(template, device); + if ( filterBy === 'connected' && device.properties.connected ) { + deviceList.innerHTML += Mustache.render(template, device); + } else if ( filterBy === 'paired' && + device.properties.paired && + !device.properties.connected ) { + deviceList.innerHTML += Mustache.render(template, device); + } else if ( filterBy === 'available' & + !device.properties.connected && + !device.properties.paired) { + deviceList.innerHTML += Mustache.render(template, device); + } + }); +} + +function refresh_devices() { + bluetooth.managed_objects().then(function(result){ + update_devices(result.devices); }); } @@ -34,17 +51,50 @@ export function toggle() { export function init() { template = document.getElementById('bluetooth-device-template').innerHTML; Mustache.parse(template); - bluetooth.adapter_state().then(update_state); + bluetooth.adapter_state({ + discovery: true + }).then(update_state); + refresh_devices(); - bluetooth.managed_objects().then(function(result){ - update_devices(result.devices); + // This code has been commented to improve performance + // bluetooth.on_device_changes(function(data) { + // bluetooth.managed_objects().then(function(result){ + // update_devices(result.devices); + // }); + // }).then(function(result) { + // console.log('SUBSCRIBED TO DEVICE CHANGES'); + // }); +} + +export function filter(filter) { + filterBy = filter; + refresh_devices(); +} + +export function getFilter() { + return filterBy; +} + +export function remove(deviceId) { + bluetooth.remove_device(deviceId).then(function() { + refresh_devices(); + }); +} + +export function pair(deviceId) { + bluetooth.pair(deviceId).then(function() { + refresh_devices(); }); +} + +export function connect(deviceId) { + bluetooth.connect(deviceId).then(function() { + refresh_devices(); + }); +} - bluetooth.on_device_changes(function(data) { - bluetooth.managed_objects().then(function(result){ - update_devices(result.devices); - }); - }).then(function(result) { - console.log('SUBSCRIBED TO DEVICE CHANGES'); +export function disconnect(deviceId) { + bluetooth.disconnect(deviceId).then(function() { + refresh_devices(); }); }
\ No newline at end of file |