Re: [web-bluetooth] Consider devicechange event for when a new granted bluetooth device is made available,

Close. To detect that you've lost access to the device, use:

```js
navigator.permissions.query({
  name: "bluetooth",
  deviceId: sessionStorage.lastDevice /* because we've stored it 
previously */
}).then(result => {
  if (result.devices.length == 0) {
    console.log("Already lost access");
  } else {
    assert(result.devices[0].id == sessionStorage.lastDevice);
    result.addEventListener('change', function(event) {
      assert(result == event.target);
      if (result.devices.length == 0)
        console.log("Lost access");
    });
  }
})
```

To learn about newly-paired devices, use:

```js
navigator.permissions.query({
  name: "bluetooth",
  services: [ 'battery_service' ], 
}).then(result => {
  result.addEventListener('change', function(event) {
    for (let device in result.devices) {
      if (!(device.id in knownDeviceIds)) {
        console.log("New device!", device);
      }
    }
  });
})
```

> If `result.devices` were to return multiple devices, would there be 
multiple events fired for each device?

There would be an event for each time `result.devices` changes, which 
might be just once if the user revokes all devices in one UI action, 
or multiple if the user revokes them one at a time.




-- 
GitHub Notification of comment by jyasskin
Please view or discuss this issue at 
https://github.com/WebBluetoothCG/web-bluetooth/issues/257#issuecomment-237933205
 using your GitHub account

Received on Friday, 5 August 2016 18:52:47 UTC