add.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. module.exports = {
  2. addBlueDevice: addBlueDevice,
  3. addWifiDevice: addWifiDevice,
  4. updateDeviceList: updateDeviceList,
  5. }
  6. // {"applicationType":"[0, 1]","deviceId":"DB:45:DD:76:42:15","img":"https://music-play.oss-cn-shenzhen.aliyuncs.com/device/20220909100711728016597.png","offlineImg":"https://music-play.oss-cn-shenzhen.aliyuncs.com/device/20220909100714667384264.png","connectImg":null,"name":"猫王音响·小王子 OTR-X","bluetoothName":"猫王音响·小王子 OTR-X","bluetoothNames":["猫王音响·小王子 OTR-X"],"isChannelsPlatforms":0,"platform":-1,"typeList":[{"is5g":0,"type":1,"connectType":1,"functionList":[1,3,6],"deviceLinkResp":{"icon1":"https://music-play.oss-cn-shenzhen.aliyuncs.com/device/20220909100644913162836.png","icon2":"https://music-play.oss-cn-shenzhen.aliyuncs.com/device/20220909100648938942906.png","icon":null,"guideUrl":null}},{"is5g":0,"type":2,"connectType":3,"functionList":[1,3],"deviceLinkResp":{"icon1":"https://music-play.oss-cn-shenzhen.aliyuncs.com/device/20230313155903515728925.png","icon2":"https://music-play.oss-cn-shenzhen.aliyuncs.com/device/20230313155910706032704.png","icon":null,"guideUrl":null}}],"clientType":"MW-2AX(WIFI)","firstVersion":"0.0.1","filter":null,"guideUrl":null,"manufacturer":"ShanJing","deviceType":0,"mac":"9b45dd76e2150000",
  7. /// clientType 连接方式:bt-0,ble-1,upnp-2,mqtt-3
  8. // [{"deviceId":"BLUFI_7cdfa1fcbb24","name":"BLUFI_7cdfa1fcbb24","state":"online","ProdModel":"MW-2AX(WIFI-N)","devName":"猫王小王子OTR-X"}]
  9. ///新添加蓝牙设备
  10. function addBlueDevice(device) {
  11. // 同一个设备处理
  12. var pages = getCurrentPages();
  13. var deviceList = pages[0].getDeviceList();
  14. var tempList = deviceList.filter((v) => v.deviceId === device.deviceId);
  15. const strings = require('../strings');
  16. if (!strings.isEmpty(tempList)) {
  17. deviceList = tempList.filter((v) => v.deviceId !== device.deviceId);
  18. }
  19. /// 添加到第一个
  20. deviceList.unshift({
  21. connectType: 1,
  22. devName: device.name,
  23. state: "online",
  24. name: device.name,
  25. deviceId: device.deviceId,
  26. mac: device.mac,
  27. ProdModel: device.ProdModel || device.clientType,
  28. clientType: device.clientType || device.ProdModel,
  29. imageUrl: device.imageUrl,
  30. });
  31. return deviceList;
  32. };
  33. // 新添加Wifi设备 猫王小王子OTR-X
  34. // [{"deviceId":"BLUFI_7cdfa1fcbb24","name":"BLUFI_7cdfa1fcbb24","state":"online"}]
  35. function addWifiDevice(device) {
  36. // 同一个设备处理
  37. var pages = getCurrentPages();
  38. var deviceList = pages[0].getDeviceList();
  39. const strings = require('../strings');
  40. if (!strings.isEmpty(deviceList)) {
  41. deviceList = deviceList.filter((v) => v.deviceId != device.deviceId);
  42. }
  43. /// 添加到第一个
  44. deviceList.unshift(device);
  45. return deviceList;
  46. };
  47. ///更新列表排序
  48. function updateDeviceList(list, isInit, closeAllBlue) {
  49. const strings = require('../strings');
  50. if (strings.isEmpty(list)) {
  51. return [];
  52. }
  53. const app = getApp();
  54. var finalList = [];
  55. if (isInit) {
  56. list[0].state = "offline";
  57. }
  58. /// 让所有蓝牙设备离线
  59. if (closeAllBlue) {
  60. list.forEach(element => {
  61. if (element.connectType != 3) {
  62. element.state = "offline";
  63. }
  64. });
  65. }
  66. ///挑选出第一个在线设备
  67. var isFirstOnline = false;
  68. if (list[0].state == "online") {
  69. isFirstOnline = true;
  70. finalList.push(list[0]);
  71. }
  72. ///区分在线和离线
  73. for (var i = isFirstOnline ? 1 : 0; i < list.length; i++) {
  74. if (isInit) {
  75. list[i].state = "offline";
  76. }
  77. }
  78. var onLineList = [];
  79. var onNoLineList = [];
  80. ///添加在线的
  81. for (var i = isFirstOnline ? 1 : 0; i < list.length; i++) {
  82. var device = list[i];
  83. if (device.state == "online") {
  84. onLineList.push(device)
  85. }
  86. }
  87. ///添加离线的
  88. for (var i = isFirstOnline ? 1 : 0; i < list.length; i++) {
  89. var device = list[i];
  90. if (device.state != "online") {
  91. onNoLineList.push(device)
  92. }
  93. }
  94. // 区分在线wifi和蓝牙 wifi在前 离线在后
  95. var onLineWifiList = [];
  96. var onLineBlueList = [];
  97. ///添加在线wifi
  98. onLineList.forEach(element => {
  99. if (element.connectType == 3) {
  100. onLineWifiList.push(element);
  101. }
  102. });
  103. ///添加在线蓝牙
  104. onLineList.forEach(element => {
  105. if (element.connectType != 3) {
  106. onLineBlueList.push(element)
  107. }
  108. });
  109. finalList = finalList.concat(onLineWifiList);
  110. finalList = finalList.concat(onLineBlueList);
  111. ///只需要蓝牙和wifi在线的
  112. var mDeviceList = []
  113. mDeviceList = mDeviceList.concat(onLineWifiList);
  114. mDeviceList = mDeviceList.concat(onLineBlueList);
  115. app.globalData.mDeviceList = mDeviceList;
  116. ///区分离线wifi和蓝牙 wifi在前 离线在后
  117. var onNoLineWifiList = [];
  118. var onNoLineBlueList = [];
  119. ///添加离线wifi
  120. onNoLineList.forEach(element => {
  121. if (element.connectType == 3) {
  122. onNoLineWifiList.push(element)
  123. }
  124. });
  125. ///添加离线蓝牙
  126. onNoLineList.forEach(element => {
  127. if (element.connectType != 3) {
  128. onNoLineBlueList.push(element)
  129. }
  130. });
  131. finalList = finalList.concat(onNoLineWifiList);
  132. finalList = finalList.concat(onNoLineBlueList);
  133. return finalList;
  134. };