Componentes de Vídeo
Última atualização: 30 de julho de 2024
Visão Geral
Este documento descreve os principais componentes React Native utilizados para implementar a funcionalidade de vídeo no aplicativo Promoter.
Componentes Principais
VideoCard
O componente VideoCard é responsável por exibir miniaturas dos vídeos na interface do usuário.
Localização: src/screens/ActivityNote/components/VideoCard/index.tsx
Funcionalidades:
- Exibe uma miniatura do vídeo
- Converte Base64 para URI de arquivo
- Fornece interação para abrir o vídeo em tela cheia
Exemplo de Uso:
<VideoCard
base64Uri={attachment.value}
id={attachment.id}
onPress={handleOpenVideo}
currentType="before"
/>
VideoModal
O componente VideoModal é responsável por exibir vídeos em tela cheia com controles de reprodução.
Localização: src/screens/ActivityNote/components/VideoModal/index.tsx
Funcionalidades:
- Reprodução de vídeo em tela cheia
- Controles de play/pause
- Opção para excluir o vídeo
- Fechamento automático ao final da reprodução
Exemplo de Uso:
<VideoModal
visible={videoModalVisible}
onClose={() => setVideoModalVisible(false)}
videoUri={currentVideoUri}
handleDelete={() => handleDeleteVideo(currentVideoId)}
/>
Controladores
CheckinTabController
O controlador CheckinTabController gerencia a lógica de captura e processamento de vídeos.
Localização: src/screens/ActivityNote/subscreens/Checkin/checkinTabController.ts
Funcionalidades:
- Iniciar e parar gravação de vídeo
- Processar vídeo capturado
- Salvar vídeo no banco de dados local
- Atualizar estado da aplicação
Métodos Principais:
startVideoRecording(): Inicia a gravação de vídeostopVideoRecording(): Finaliza a gravação de vídeoprocessVideoResult(): Processa o vídeo capturadosaveVideoToDatabase(): Salva o vídeo no banco de dados local
Telas
Checkin
A tela Checkin implementa a interface para captura de vídeos no início de uma atividade.
Localização: src/screens/ActivityNote/subscreens/Checkin/index.tsx
Funcionalidades:
- Interface para captura de vídeo
- Exibição de miniaturas de vídeos capturados
- Indicador de gravação em andamento
- Contador de tempo de gravação
Checkout
A tela Checkout implementa a interface para captura de vídeos no final de uma atividade.
Localização: src/screens/ActivityNote/subscreens/Checkout/index.tsx
Funcionalidades:
- Interface para captura de vídeo
- Exibição de miniaturas de vídeos capturados
- Comparação entre vídeos "antes" e "depois"
Compartilhamento
ShareBottomSheet
O componente ShareBottomSheet permite compartilhar vídeos com aplicativos externos.
Localização: src/screens/Records/components/RecordOfflineCard/ShareBottomSheet/index.tsx
Funcionalidades:
- Compartilhamento de vídeos via intent do sistema
- Opções para compartilhar por WhatsApp, e-mail, etc.
- Geração de arquivos temporários para compartilhamento
Considerações de UI/UX
Indicadores Visuais
- Ícone de Vídeo: Diferencia vídeos de imagens na interface
- Indicador de Gravação: Círculo vermelho pulsante durante a gravação
- Contador de Tempo: Exibe o tempo decorrido durante a gravação
Feedback ao Usuário
- Carregamento: Indicador visual durante o processamento do vídeo
- Confirmação: Feedback após salvamento bem-sucedido
- Erro: Mensagens claras em caso de falha na gravação
Boas Práticas
- Limpeza de Recursos: Liberar recursos de câmera e vídeo quando não estiverem em uso
- Tratamento de Erros: Implementar tratamento adequado para falhas na captura de vídeo
- Responsividade: Garantir que os componentes de vídeo se adaptem a diferentes tamanhos de tela
- Acessibilidade: Fornecer alternativas para usuários com necessidades especiais