6 Commits

Author SHA1 Message Date
Developer
53c67079a1 bug修改 2026-05-12 20:27:30 +08:00
Developer
e3def7d01b fix: 修复小窗闭包过期、详情页 loading 卡死、视频播放器性能问题
- 小窗 PanResponder 用 storeRef 替代闭包捕获,修复 roomId/bvid 始终为初始值
- useLiveDetail 用 ref 比对替代 cancelled 标志,防止 fetch 被意外取消
- 详情页 useLayoutEffect 同步清除小窗,BigVideoCard 小窗活跃时跳过播放
- 视频播放器竖屏/全屏互斥渲染,减半解码器占用
- onProgress 节流 + 退出全屏强制恢复播放
2026-03-25 15:03:49 +08:00
Developer
68b8b7d665 fix: 彻底修复小窗无法拖动问题
根本原因:TouchableOpacity 内嵌在 PanResponder Animated.View 内,
  JS层 TouchableOpacity 与 Video 原生层共同阻断了 PanResponder 响应权。

修复方案:
- onStartShouldSetPanResponder: true,从 start 阶段独占响应权
- 移除主内容区的 TouchableOpacity,改用纯 View
- isDragging ref 区分点击与拖动:位移 >5px 为拖动
- onPanResponderRelease 通过 locationX/Y 坐标判断点击目标(关闭 or 跳转)
- Video 外层 View 加 pointerEvents='none' 防止原生层吞噬触摸
2026-03-25 13:36:28 +08:00
Developer
2bfc9f8110 fix: 修复小窗无法拖动的问题
onStartShouldSetPanResponder 被内部 TouchableOpacity 抢占响应权。
改用 onMoveShouldSetPanResponderCapture:位移 >3px 时从子组件夺回响应权,
点击仍正常透传到 TouchableOpacity。
2026-03-25 13:28:49 +08:00
Developer
0ffb331971 feat: 小窗拖动后自动吸附到左/右屏幕边缘 2026-03-25 13:25:34 +08:00
Developer
33a3148b38 feat: 直播小窗播放(PiP)功能
- 新增 store/liveStore.ts:Zustand store,存储小窗直播状态(roomId/title/cover/hlsUrl)
- 新增 components/LiveMiniPlayer.tsx:可拖动悬浮迷你直播播放器
  - 原生端实际播放 HLS 流(react-native-video,有声)
  - Web 端降级展示封面图 + LIVE 徽标
  - LIVE 红点徽标 + 标题条底部
  - 关闭按钮(×)和点击进入直播间
  - HLS 出错时自动关闭(onError → clearLive)
  - 视频 MiniPlayer 激活时自动上移避免重叠
- _layout.tsx:全局挂载 <LiveMiniPlayer />
- live/[roomId].tsx:顶部栏添加小窗按钮(browsers-outline)
  - 仅直播中且有流地址时显示,离线时占位保持 title 居中
  - 点击后 setLive + router.back(),返回首页继续看直播
  - 进入同房间时自动 clearLive() 避免双播
2026-03-25 13:16:16 +08:00