add.js 5.2 KB

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