home.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const {
  2. DEFAULT_DEVICE_FILTER,
  3. getState: getHomeFeatureState,
  4. init: initHomeFeature,
  5. subscribeState: subscribeHomeState,
  6. ...homeService
  7. } = require('../../features/home/service.js')
  8. const {
  9. createPageToast
  10. } = require('../../utils/page-toast.js')
  11. Page({
  12. data: getHomeFeatureState(),
  13. noop() {},
  14. onLoad() {
  15. this.pageToast = createPageToast(this, this.data)
  16. initHomeFeature()
  17. this.unsubscribeHomeState = subscribeHomeState(() => this.data.deviceFilterMode, (nextState) => {
  18. this.setData(nextState)
  19. this.pageToast.showFromState(nextState)
  20. })
  21. },
  22. onShow() {
  23. if (this.pageToast) {
  24. this.pageToast.setActive(true)
  25. }
  26. },
  27. onHide() {
  28. if (this.pageToast) {
  29. this.pageToast.setActive(false)
  30. }
  31. },
  32. onUnload() {
  33. if (this.pageToast) {
  34. this.pageToast.destroy()
  35. this.pageToast = null
  36. }
  37. if (this.unsubscribeHomeState) {
  38. this.unsubscribeHomeState()
  39. this.unsubscribeHomeState = null
  40. }
  41. },
  42. startScan() {
  43. if (!this.data.canStartScan) return
  44. homeService.toggleScan(this.data.isDiscovering)
  45. },
  46. clearDevices() {
  47. if (!this.data.canClearDevices) return
  48. homeService.clearDevices()
  49. },
  50. onDeviceFilterTap(event) {
  51. const deviceFilterMode = event.currentTarget.dataset.filter || DEFAULT_DEVICE_FILTER
  52. this.setData(getHomeFeatureState(deviceFilterMode))
  53. },
  54. connectDevice(event) {
  55. homeService.connectDeviceById(event.currentTarget.dataset.deviceId)
  56. },
  57. disconnectDevice() {
  58. if (!this.data.canDisconnectDevice) return
  59. homeService.disconnectDevice()
  60. }
  61. })