Skip to content

feat: 运行时回调可切换 + HLS/DASH 引擎开箱即用 + React/Vue 回归测试 - #47

Merged
leuvi merged 1 commit into
mainfrom
fix/runtime-callbacks
Aug 4, 2026
Merged

leuvi merged 1 commit into
mainfrom
fix/runtime-callbacks

Conversation

@leuvi

@leuvi leuvi commented Aug 4, 2026

Copy link
Copy Markdown
Owner

本轮改动(第四轮 review 修复 + 前三轮遗留)

core:运行时回调可切换

  • 新增 setCallbacks():onPrev/onNext/onSavePrefs/onSaveProgress 等可在运行时新增/替换/移除
  • bindPersistence / bindProgressMemory 写入目标每次读取当前回调,远端/本地存储运行时自由切换
  • 新增 SweetPlayerCallbacks 类型导出

core:HLS/DASH 引擎开箱即用

  • hls.js/dashjs 从 optional peer 改为常规 peer,npm 7+ 安装 core 自动带上,Chrome/Firefox HLS 与 DASH 不再因缺依赖失败

React

  • useBrowserLayoutEffect 创建 player 并维护 forwarded ref,父组件 layout effect 阶段即可读取实例
  • hasXxx 布尔驱动 setCallbacks 同步(回调有/无切换),函数替换通过稳定代理动态生效
  • 稳定代理直接返回原 callback 结果(不 void),save queue 单飞/写入顺序正常

Vue

  • hasListener() 检测 prev/next 事件监听,未监听时按钮保持禁用
  • watch + onUpdated 同步运行时回调

测试(新增���覆盖历史盲区)

  • React 2 个:ref 在父 layout effect 可用、回调远端/本地切换
  • Vue 4 个:按钮 disabled/启用/增删、进度远端/本地切换
  • 三包共 47 测试全部通过,tsc 零错误

changeset: minor(三包联动)

- core: 新增 setCallbacks(),onPrev/onNext/onSavePrefs 等可在运行时新增/替换/移除
- core: bindPersistence/bindProgressMemory 的写入目标每次读取当前回调,支持远端/本地运行时切换
- core: hls.js/dashjs 从 optional peer 改为常规 peer,npm 安装自动带上
- react: useBrowserLayoutEffect 创建 player 并维护 ref,父组件 layout effect 即可用
- react: hasXxx 变化时同步 setCallbacks;回调函数替换通过稳定代理动态生效
- vue: hasListener() 检测 prev/next 事件监听,未监听时按钮禁用;watch + onUpdated 同步回调
- test: 新增 react 2 个 + vue 4 个回归测试(ref 时机、回调切换、按钮状态、持久化远端/本地)
- 根 test 命令改为三包全跑
@leuvi
leuvi merged commit ff8a64d into main Aug 4, 2026
1 check passed
@leuvi
leuvi deleted the fix/runtime-callbacks branch August 4, 2026 08:38
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