use-evaluat.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import { nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
  2. import dayjs from 'dayjs'
  3. import { IPostMessage, listenerMessage, postMessage, removeListenerMessage } from '/src/helpers/native-message'
  4. import runtime, * as RuntimeUtils from '/src/pages/detail/runtime'
  5. import { permissionPopup } from '/src/subpages/colexiu/popups/permission/permission'
  6. import SettingState from '/src/pages/detail/setting-state'
  7. import detailState from '/src/pages/detail/state'
  8. import { storeKeys } from '/src/constant/store-keys'
  9. import { soundEffectShow } from '../popups/sound-effect'
  10. import { evaluatingShow } from '../popups/evaluating'
  11. import { delayData } from '/src/subpages/colexiu/buttons/evaluating'
  12. import { Toast } from 'vant'
  13. /** 打开校音或者距离上一次校音超过一天 */
  14. const soundNeedShow = () => {
  15. if (runtime.evaluatingStatus) {
  16. if (SettingState.sett.tuning) {
  17. soundEffectShow.value = true
  18. }
  19. // let time: number = -1
  20. // const timeString = localStorage.getItem(storeKeys.lastCheckTime)
  21. // try {
  22. // const date = dayjs(parseFloat(timeString || '0'))
  23. // if (date.isValid()) {
  24. // time = Math.abs(date.diff(dayjs(new Date().valueOf()), 'day'))
  25. // }
  26. // } catch (e) {}
  27. // if (SettingState.sett.tuning || time > 0 || !timeString) {
  28. // soundEffectShow.value = true
  29. // }
  30. }
  31. }
  32. /**
  33. * 检查耳机连接状态,并且打开耳机连接状态的提示,以及校音
  34. * @param res IPostMessage
  35. */
  36. export const setWiredStatus = (res?: IPostMessage) => {
  37. if (runtime.evaluatingStatus && !delayData.open) {
  38. permissionPopup.active = 'earphone'
  39. permissionPopup.show = !res?.content.checkIsWired
  40. soundNeedShow()
  41. } else {
  42. permissionPopup.show = false
  43. }
  44. }
  45. /**
  46. * 开启评测模式后,需要效验 耳机,效音
  47. */
  48. export const handleCheckEvaluatStatus = () => {
  49. // 是否需要效音
  50. soundNeedShow()
  51. // 检测耳机状态
  52. // postMessage({ api: 'isWiredHeadsetOn' }, setWiredStatus)
  53. postMessage({ api: 'isWiredHeadsetOn' }, (evt) => {
  54. // console.log('🚀 ~ 耳机状态', evt)
  55. permissionPopup.active = 'earphone'
  56. permissionPopup.show = !evt?.content.checkIsWired
  57. })
  58. }
  59. /**
  60. * 监听评测状态打开
  61. */
  62. export const useWiredHeadsetCheck = () => {
  63. const wiredStatus = ref(false)
  64. // watch(
  65. // () => runtime.evaluatingStatus,
  66. // () => {
  67. // if (!runtime.evaluatingStatus) return
  68. // postMessage(
  69. // {
  70. // api: 'isWiredHeadsetOn',
  71. // },
  72. // setWiredStatus
  73. // )
  74. // }
  75. // )
  76. // watch(
  77. // () => permissionPopup.show,
  78. // () => {
  79. // soundNeedShow()
  80. // }
  81. // )
  82. /** 监听评测状态,退出评测模式停止播放,清除提示信息 */
  83. watch([() => runtime.evaluatingStatus], () => {
  84. // Toast.clear()
  85. // if (!runtime.evaluatingStatus) {
  86. // runtime.evaluatingTips = false
  87. // RuntimeUtils.pause()
  88. // RuntimeUtils.setCurrentTime(0)
  89. // }
  90. if (SettingState.sett.fingering) {
  91. // RuntimeUtils.event.emit('settingFingeringChange')
  92. }
  93. // console.log('settingFingeringChange', 11, runtime.evaluatingStatus)
  94. })
  95. /** 监听耳机状态啊 */
  96. watch(
  97. [() => runtime.evaluatingStatus, () => permissionPopup.show, () => soundEffectShow.value],
  98. ([evaluatingStatus, permissionShow, soundEffectShow]) => {
  99. // wiredStatus.value = evaluatingStatus && !permissionShow && !soundEffectShow
  100. // if (!runtime.evaluatingStatus) {
  101. // detailState.evaluatings = {}
  102. // evaluatingShow.value = false
  103. // }
  104. }
  105. )
  106. onMounted(() => {
  107. listenerMessage('listenerWiredStatus', setWiredStatus)
  108. })
  109. onBeforeUnmount(() => {
  110. removeListenerMessage('listenerWiredStatus', setWiredStatus)
  111. })
  112. return [wiredStatus]
  113. }