合并受阻
感谢提交 Pull Requests!
Thanks for submitting a pull request.


【AI-Review】【严重】【基础代码问题】【代码逻辑错误】AudioQuality 选择被推荐参数覆盖
● 问题:AudioQuality 选择器(HARMONY_AUDIO_QUALITIES.map 的点击回调,line 465-476)中先调用 setAudioQuality(item) 设置用户选择的质量,紧接着调用 applyRecommendedParamsToState(audioEncoding, { ... setAudioQuality ... })。该函数内部(line 149 setters.setAudioQuality(recommended.audioQuality))在 audioEncoding 为 'amr_nb'、'amr_wb'、'he_aac' 时会无条件将 audioQuality 设为 'High'(见 applyRecommendedRecordingParams line 104-126 对这三种编码的返回值)。React 18 在事件回调中对同一 state 的多次 setState 按"最后写入胜出"合并,因此 setAudioQuality('Low'/'Medium') 随后被 setAudioQuality('High') 覆盖。
触发路径:用户在 AudioEncoding 选择器点击 amr_nb/amr_wb/he_aac → selectAudioEncoding 调用 applyRecommendedParamsToState 将 audioQuality 置为 'High' → 用户在 AudioQuality 选择器点击 'Low' 或 'Medium' → 回调执行 setAudioQuality(item) 后再执行 applyRecommendedParamsToState(audioEncoding, ...) → setters.setAudioQuality('High') → 最终 audioQuality 仍为 'High',用户选择失效。
● 影响:严重。当 audioEncoding 为 amr_nb/amr_wb/he_aac 时,用户无法将 AudioQuality 切换为 'Low' 或 'Medium',点击对应芯片后状态被静默重置为 'High'。Demo 的"质量可选"功能在这三种编码下完全失效,无法验证 Low/Medium 质量录制效果。
● 建议:AudioQuality 选择器不应调用 applyRecommendedParamsToState(该函数会把 audioQuality 重置为 'High')。推荐参数应仅在 encoding 改变时应用。修复方法:删除该回调中的 applyRecommendedParamsToState(audioEncoding, { ... }) 调用(line 468-474),仅保留 invalidatePrepared(); 与 setAudioQuality(item);:
renderChip(item, item, audioQuality === item, () => {
invalidatePrepared();
setAudioQuality(item);
}),


https://gitcode.com/CPF-RN/rnt/issues/1882