Skip to content

fix: 修复 Safari HLS fallback、插件销毁跳过、React ref null、换集旧 ID、菜单残留、Vue 缺失 props - #45

Merged
leuvi merged 1 commit into
mainfrom
fix/review-issues
Aug 4, 2026
Merged

leuvi merged 1 commit into
mainfrom
fix/review-issues

Conversation

@leuvi

@leuvi leuvi commented Aug 4, 2026

Copy link
Copy Markdown
Owner

修复 6 个 review 发现的问题

#1 Safari 原生 HLS fallback 被 import 错误阻断 (高)

  • 拆分 try:先检测 canPlayType,再 import hls.js
  • hls.js 未安装时 Safari 仍可走原生 HLS

#2 React ref 始终 null (高)

  • useImperativeHandle 的 deps 从 [] 改为无 deps
  • 每次 render 刷新 ref,effect 创建 player 后立即可用

#3 换集时进度写入旧 ID (高)

  • core 新增 setId(id) 方法:保存旧进度 → 解绑旧事件 → 重新绑定
  • React/Vue 组件新增 id prop watch,变化时调用 setId

#4 插件销毁跳过一半 (高)

  • forEach + splice 改为 [...arr].forEach

#5 换源后画质/音轨菜单残留 (中)

  • load() 清空 engine-managed 菜单,重置标志

#6 Vue 缺失 props (中)

  • 新增 loop、shareUrl、onSavePrefs、onSaveProgress

测试

  • tsc 三包零错误
  • vitest 41 个测试全部通过
  • changeset: patch (三包联动)

…props

- core: Safari 原生 HLS fallback 不再被 import('hls.js') 错误阻断
- core: 插件销毁 forEach+splice 改为复制数组遍历,修复跳过一半
- core: load() 清空 engine-managed 画质/音轨菜单,修复换源后残留
- core: 新增 setId(id) 切换视频 ID,保存旧进度后重新绑定
- react: useImperativeHandle 去掉 deps=[],修复 ref 始终 null
- react: watch id prop 变化调用 setId
- vue: 补全 loop/shareUrl/onSavePrefs/onSaveProgress props
- vue: watch id prop 变化调用 setId
@leuvi
leuvi merged commit 882203e into main Aug 4, 2026
1 check passed
@leuvi
leuvi deleted the fix/review-issues branch August 4, 2026 06:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant