Skip to content

YouTube Player — Módulo

Gerado pelo Writer (Reversa) em 2026-05-11 doc_level: detalhado

Visão Geral

Player de vídeos do YouTube integrado à tela de música, com dois modos de exibição: full (fullscreen calculado 16:9) e mini (200×112px arrastável). Suporta controle de velocidade e loop de trechos (parcialmente comentados no código).

Regras de Negócio

  • Player exibe o vídeo sem recarregar ao alternar entre modo full e mini 🟢
  • Dimensão videoHeight = min(screenWidth × 9/16, windowHeight / 4) 🟢
  • Mini player: 200×112px + 28px de controles = 140px total 🟢
  • Mini player arrastável com limites calculados pela janela 🟢
  • useStopYoutubeVideo para a reprodução ao navegar para outra tela 🟢
  • Controle de loop via setInterval a cada 500ms — comentado no código atual (useLoopControl) 🟡
  • Controle de velocidade — modal YoutubeVelocidadeModal — comentado parcialmente 🟡

Requisitos Funcionais

ID Requisito Prioridade Critério de Aceite
RF-01 Exibir player YouTube fullscreen 16:9 Must YoutubePlayer renderizado com videoHeight calculado
RF-02 Minimizar para mini player arrastável Must isMini = true; drag funcional com limites de tela
RF-03 Play/pause via controles Must setPlaying toggled; PLAYER_STATES.PLAYING/PAUSED mapeados
RF-04 Fechar player Must onClose() chamado; reprodução parada
RF-05 Loop de trecho (start → end) Could useLoopControl monitora currentTime a cada 500ms
RF-06 Controle de velocidade Could Modal de velocidade altera rate do player

Rastreabilidade de Código

Arquivo Função / Classe Cobertura
src/view/fragment/Youtube/YoutubePlayerView.tsx YoutubePlayerView 🟢
src/view/fragment/Youtube/YoutubePlayerView.types.ts MINI_PLAYER_DIMENSIONS, LoopState, etc. 🟢
src/view/fragment/Youtube/bar/YoutubeBarPlayerView.tsx Mini player controls 🟡
useLoopControl, useMiniPlayerDrag, usePlayerState hooks 🟡

Dependências Externas

Dependência Uso
react-native-youtube-iframe Player YouTube (iframe)
react-native-gesture-handler Drag do mini player
react-native-reanimated Animações de posição do mini player