options to disable bluetooth and/or clean bonded (paired) devices (#758)

Signed-off-by: Jussi Vatjus-Anttila <jussiva@gmail.com>
This commit is contained in:
Jussi Vatjus-Anttila
2024-01-31 00:43:23 +02:00
committed by GitHub
parent 806bfa4087
commit a6b5f18941
5 changed files with 76 additions and 3 deletions

View File

@@ -8,7 +8,8 @@ module.exports = syrup.serial()
.dependency(require('../support/adb'))
.dependency(require('../resources/service'))
.dependency(require('./group'))
.define(function(options, adb, service, group) {
.dependency(require('./service'))
.define(function(options, adb, stfservice, group, service) {
var log = logger.createLogger('device:plugins:cleanup')
var plugin = Object.create(null)
@@ -31,7 +32,7 @@ module.exports = syrup.serial()
return listPackages()
.then(function(initialPackages) {
initialPackages.push(service.pkg)
initialPackages.push(stfservice.pkg)
plugin.removePackages = function() {
return listPackages()
@@ -40,9 +41,31 @@ module.exports = syrup.serial()
return Promise.map(remove, uninstallPackage)
})
}
plugin.disableBluetooth = function() {
if (!options.cleanupDisableBluetooth) {
return
}
return service.getBluetoothStatus()
.then(function(enabled) {
if (enabled) {
log.info('Disabling Bluetooth')
return service.setBluetoothEnabled(false)
}
})
}
plugin.cleanBluetoothBonds = function() {
if (!options.cleanupBluetoothBonds) {
return
}
log.info('Cleanup Bluetooth bonds')
return service.cleanBluetoothBonds()
}
group.on('leave', function() {
plugin.removePackages()
Promise.all([
plugin.removePackages()
, plugin.cleanBluetoothBonds()
, plugin.disableBluetooth()])
})
})
.return(plugin)

View File

@@ -704,6 +704,20 @@ module.exports = syrup.serial()
})
}
plugin.cleanBluetoothBonds = function() {
return runServiceCommand(
apk.wire.MessageType.DO_CLEAN_BLUETOOTH_BONDED_DEVICES
, new apk.wire.DoCleanBluetoothBondedDevicesRequest()
)
.timeout(10000)
.then(function(data) {
var response = apk.wire.DoCleanBluetoothBondedDevicesResponse.decode(data)
if (!response.success) {
throw new Error('Unable to clean Bluetooth bonded devices')
}
})
}
plugin.getBluetoothStatus = function() {
return runServiceCommand(
apk.wire.MessageType.GET_BLUETOOTH_STATUS