feat: new audio player (#5160)
* feat: media auto-download view
* media auto download view completed and saving the settings in mmkv
* audio download preference
* audio auto download when the user who sent the audio is the same logged on mobile
* creation of isAutoDownloadEnabled, evaluate hist hook, Image Full Size preload done
* minor tweak audio show play button after download
* refactor audioFile to handleMediaDownload and fixed the audio download
* desestructured params to download too
* image download and autoDownload, algo fix the formatAttachmentUrl to show the image from local
* add the possibility to cancel image download and clear local images
* refactor blur component
* video download and auto download, also keeped the behavior to download unsuportted videos to the gallery
* add the possibility to start downloading a video, then exit the room, back again to room and cancel the video previously downloading
* remove the custom hook for autoDownload
* remove blurcomponent, fix the blur style in image.tsx, minor tweak video function name
* send messageId to video
* introducing the reducer to keep the downloads in progress
* create a media download selector
* remove all the redux stuff and do the same as file upload
* video download behavior
* done for image and audio
* fix the try catch download media
* clean up
* image container uiKit
* fix lint
* change rn-fetch-blob to expo-filesystem
* add pt-br
* pass the correct message id when there is an attachment on reply
* refactor some changes requested
* fix audio and move the netInfo from autoDownloadPreference to redux
* variable isAutoDownloadEnable name and handleMediaDownload getExtension
* message/Image refactored, change the component to show the image from FastImage to Image
* refactor handleMediaDownload and deleteMedia
* minor tweak
* refactor audio
* refactor video
* fix the type on the messagesView(the view of files)
* minor tweak
* fix the name of searchMediaFIleAsync's result
* minor tweak, add the default behavior, add the OFF as label
* minor tweaks
* verify if the media auto download exists on settings view
* fix media auto download view layout and minor tweak wifi
* avoid auto download from reply
* minor tweak at comment
* tweak list.section
* change the name to netInfoState and Local_document_directory
* remove mediaType and refactor audio and image
* separate blurview
* thumbnail video and video behavior
* add Audio to i18n and minor tweak
* set the blur as always dark and add the possibility to overlay
* don't need to controle the filepath in the view
* fix the loading in image and video at begin
* save the file with a similar filename as expected
* removed the necessity of messageId or id
* minor tweak
* switch useLayoutEffect to useEffect
* avoid onpress do some edge case because of cached at video
* minor tweak
* tweak at audio comment extension
* minor tweak type userpreferences
* remove test id from mediaAutoDownloadView
* change action's name to SET_NET_INFO_STATE
* caching and deleting video's thumbnails
* remove generate thumbnail
* minor tweak in image
* update camera-roll and save the file from local url
* remove local_cache_directory and deleteThumbnail
* update blur to fix error on android
* first commit
* fix togglePlayPause
* separate audio to a folder inside components and minor tweak attachment
* created the slider with text
* play/pause button, currentTime equal the sound, can change the slider and reflect to the sound
* play/pause, track is working and onEnd
* update the icons with play-shaped-filled, pause-shape-filled, loading
* start the tweaks on layout
* can play multiple audios, pausing the previous to execute the new one
* loading animated
* added the audio rate
* layout fixed
* removed the sound manipulation from Slider to manipulate only in the index
* fix time margin horizontal
* fix play 2 audios and play/pause properly
* change the way we treat the audio
* remove audio copy
* minor tweak
* fix rate state
* remove the PAUSE_AUDIO
* fix unloadAll, add hit slop to slider, show the duration on the first render
* refactor colors to be the same as figmas name
* change the class' name and add the method pauseCurrentAudio
* pause audio when unmount a RoomView and unloadAll when focusing at RoomsListView
* pause audio when entering a thread
* fix where call the pauseCurrentAudio
* moved the player from messageAudio to audioPlayer
* refactor audio component
* remove loading
* update snapshot
* fix colors name
* pauseAudio when roomview is blur
* moved audio from message/component/audio to message/Audio
* add navigation focus to AudioPlayer component and fix the jest
* add the { androidImplementation: 'MediaPlayer' }
* fix action sheet swipe 02-room
* fix action sheet swipe 05-threads
* tweak touchable
* remove react.memo from playbutton
* hitSlop
* speed playback from array
* textinputprops
* tweak at names
* minor tweak at onEnd
* minor tweak at names
* update styles
* thumb seek size
* change marginBottom
* add the clamp, adjust the thumb position, remove the necessity of OnEndGestureHandler
* change the utils to constants
* change to audioState
* fix the seek for android
* TDownloadState
* speed array
* pause audio from messagesView when open the files
* update test
* minor tweak
* change the time after ony one click, fixes the thumb to move sync with the click
* Fix seek
* minor tweak Sound to Audio.Sound
* name of Icon
* enable PlaybackSpeed only when playing the audio
* playbackSpeed to mmkv
* mock implementation
* create native button
* minor tweak
* minor tweaks
* playbackSpeed after loadAudio
* avoid show the error when try to setRate without audio
* add messageID to differ audios inside a quote/forward from original one
* unloadRoomAudios instead of unloadAllAudios inside the roomsListView
* minor tweak
---------
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2023-11-20 14:13:15 +00:00
|
|
|
import React, { useEffect, useRef, useState } from 'react';
|
|
|
|
import { InteractionManager, View } from 'react-native';
|
|
|
|
import { AVPlaybackStatus } from 'expo-av';
|
|
|
|
import { activateKeepAwake, deactivateKeepAwake } from 'expo-keep-awake';
|
|
|
|
import { useSharedValue } from 'react-native-reanimated';
|
|
|
|
import { useNavigation } from '@react-navigation/native';
|
|
|
|
|
|
|
|
import { useTheme } from '../../theme';
|
|
|
|
import styles from './styles';
|
|
|
|
import Seek from './Seek';
|
|
|
|
import PlaybackSpeed from './PlaybackSpeed';
|
|
|
|
import PlayButton from './PlayButton';
|
2024-01-22 21:39:01 +00:00
|
|
|
import EventEmitter from '../../lib/methods/helpers/events';
|
|
|
|
import audioPlayer, { AUDIO_FOCUSED } from '../../lib/methods/audioPlayer';
|
feat: new audio player (#5160)
* feat: media auto-download view
* media auto download view completed and saving the settings in mmkv
* audio download preference
* audio auto download when the user who sent the audio is the same logged on mobile
* creation of isAutoDownloadEnabled, evaluate hist hook, Image Full Size preload done
* minor tweak audio show play button after download
* refactor audioFile to handleMediaDownload and fixed the audio download
* desestructured params to download too
* image download and autoDownload, algo fix the formatAttachmentUrl to show the image from local
* add the possibility to cancel image download and clear local images
* refactor blur component
* video download and auto download, also keeped the behavior to download unsuportted videos to the gallery
* add the possibility to start downloading a video, then exit the room, back again to room and cancel the video previously downloading
* remove the custom hook for autoDownload
* remove blurcomponent, fix the blur style in image.tsx, minor tweak video function name
* send messageId to video
* introducing the reducer to keep the downloads in progress
* create a media download selector
* remove all the redux stuff and do the same as file upload
* video download behavior
* done for image and audio
* fix the try catch download media
* clean up
* image container uiKit
* fix lint
* change rn-fetch-blob to expo-filesystem
* add pt-br
* pass the correct message id when there is an attachment on reply
* refactor some changes requested
* fix audio and move the netInfo from autoDownloadPreference to redux
* variable isAutoDownloadEnable name and handleMediaDownload getExtension
* message/Image refactored, change the component to show the image from FastImage to Image
* refactor handleMediaDownload and deleteMedia
* minor tweak
* refactor audio
* refactor video
* fix the type on the messagesView(the view of files)
* minor tweak
* fix the name of searchMediaFIleAsync's result
* minor tweak, add the default behavior, add the OFF as label
* minor tweaks
* verify if the media auto download exists on settings view
* fix media auto download view layout and minor tweak wifi
* avoid auto download from reply
* minor tweak at comment
* tweak list.section
* change the name to netInfoState and Local_document_directory
* remove mediaType and refactor audio and image
* separate blurview
* thumbnail video and video behavior
* add Audio to i18n and minor tweak
* set the blur as always dark and add the possibility to overlay
* don't need to controle the filepath in the view
* fix the loading in image and video at begin
* save the file with a similar filename as expected
* removed the necessity of messageId or id
* minor tweak
* switch useLayoutEffect to useEffect
* avoid onpress do some edge case because of cached at video
* minor tweak
* tweak at audio comment extension
* minor tweak type userpreferences
* remove test id from mediaAutoDownloadView
* change action's name to SET_NET_INFO_STATE
* caching and deleting video's thumbnails
* remove generate thumbnail
* minor tweak in image
* update camera-roll and save the file from local url
* remove local_cache_directory and deleteThumbnail
* update blur to fix error on android
* first commit
* fix togglePlayPause
* separate audio to a folder inside components and minor tweak attachment
* created the slider with text
* play/pause button, currentTime equal the sound, can change the slider and reflect to the sound
* play/pause, track is working and onEnd
* update the icons with play-shaped-filled, pause-shape-filled, loading
* start the tweaks on layout
* can play multiple audios, pausing the previous to execute the new one
* loading animated
* added the audio rate
* layout fixed
* removed the sound manipulation from Slider to manipulate only in the index
* fix time margin horizontal
* fix play 2 audios and play/pause properly
* change the way we treat the audio
* remove audio copy
* minor tweak
* fix rate state
* remove the PAUSE_AUDIO
* fix unloadAll, add hit slop to slider, show the duration on the first render
* refactor colors to be the same as figmas name
* change the class' name and add the method pauseCurrentAudio
* pause audio when unmount a RoomView and unloadAll when focusing at RoomsListView
* pause audio when entering a thread
* fix where call the pauseCurrentAudio
* moved the player from messageAudio to audioPlayer
* refactor audio component
* remove loading
* update snapshot
* fix colors name
* pauseAudio when roomview is blur
* moved audio from message/component/audio to message/Audio
* add navigation focus to AudioPlayer component and fix the jest
* add the { androidImplementation: 'MediaPlayer' }
* fix action sheet swipe 02-room
* fix action sheet swipe 05-threads
* tweak touchable
* remove react.memo from playbutton
* hitSlop
* speed playback from array
* textinputprops
* tweak at names
* minor tweak at onEnd
* minor tweak at names
* update styles
* thumb seek size
* change marginBottom
* add the clamp, adjust the thumb position, remove the necessity of OnEndGestureHandler
* change the utils to constants
* change to audioState
* fix the seek for android
* TDownloadState
* speed array
* pause audio from messagesView when open the files
* update test
* minor tweak
* change the time after ony one click, fixes the thumb to move sync with the click
* Fix seek
* minor tweak Sound to Audio.Sound
* name of Icon
* enable PlaybackSpeed only when playing the audio
* playbackSpeed to mmkv
* mock implementation
* create native button
* minor tweak
* minor tweaks
* playbackSpeed after loadAudio
* avoid show the error when try to setRate without audio
* add messageID to differ audios inside a quote/forward from original one
* unloadRoomAudios instead of unloadAllAudios inside the roomsListView
* minor tweak
---------
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2023-11-20 14:13:15 +00:00
|
|
|
import { AUDIO_PLAYBACK_SPEED, AVAILABLE_SPEEDS } from './constants';
|
|
|
|
import { TDownloadState } from '../../lib/methods/handleMediaDownload';
|
|
|
|
import { TAudioState } from './types';
|
|
|
|
import { useUserPreferences } from '../../lib/methods';
|
|
|
|
|
|
|
|
interface IAudioPlayerProps {
|
|
|
|
fileUri: string;
|
|
|
|
disabled?: boolean;
|
|
|
|
onPlayButtonPress?: Function;
|
|
|
|
downloadState: TDownloadState;
|
|
|
|
rid: string;
|
|
|
|
// It's optional when comes from MessagesView
|
|
|
|
msgId?: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
const AudioPlayer = ({
|
|
|
|
fileUri,
|
|
|
|
disabled = false,
|
|
|
|
onPlayButtonPress = () => {},
|
|
|
|
downloadState,
|
|
|
|
msgId,
|
|
|
|
rid
|
|
|
|
}: IAudioPlayerProps) => {
|
|
|
|
const isLoading = downloadState === 'loading';
|
|
|
|
const isDownloaded = downloadState === 'downloaded';
|
|
|
|
|
|
|
|
const [playbackSpeed] = useUserPreferences<number>(AUDIO_PLAYBACK_SPEED, AVAILABLE_SPEEDS[1]);
|
|
|
|
const [paused, setPaused] = useState(true);
|
2024-01-22 21:39:01 +00:00
|
|
|
const [focused, setFocused] = useState(false);
|
feat: new audio player (#5160)
* feat: media auto-download view
* media auto download view completed and saving the settings in mmkv
* audio download preference
* audio auto download when the user who sent the audio is the same logged on mobile
* creation of isAutoDownloadEnabled, evaluate hist hook, Image Full Size preload done
* minor tweak audio show play button after download
* refactor audioFile to handleMediaDownload and fixed the audio download
* desestructured params to download too
* image download and autoDownload, algo fix the formatAttachmentUrl to show the image from local
* add the possibility to cancel image download and clear local images
* refactor blur component
* video download and auto download, also keeped the behavior to download unsuportted videos to the gallery
* add the possibility to start downloading a video, then exit the room, back again to room and cancel the video previously downloading
* remove the custom hook for autoDownload
* remove blurcomponent, fix the blur style in image.tsx, minor tweak video function name
* send messageId to video
* introducing the reducer to keep the downloads in progress
* create a media download selector
* remove all the redux stuff and do the same as file upload
* video download behavior
* done for image and audio
* fix the try catch download media
* clean up
* image container uiKit
* fix lint
* change rn-fetch-blob to expo-filesystem
* add pt-br
* pass the correct message id when there is an attachment on reply
* refactor some changes requested
* fix audio and move the netInfo from autoDownloadPreference to redux
* variable isAutoDownloadEnable name and handleMediaDownload getExtension
* message/Image refactored, change the component to show the image from FastImage to Image
* refactor handleMediaDownload and deleteMedia
* minor tweak
* refactor audio
* refactor video
* fix the type on the messagesView(the view of files)
* minor tweak
* fix the name of searchMediaFIleAsync's result
* minor tweak, add the default behavior, add the OFF as label
* minor tweaks
* verify if the media auto download exists on settings view
* fix media auto download view layout and minor tweak wifi
* avoid auto download from reply
* minor tweak at comment
* tweak list.section
* change the name to netInfoState and Local_document_directory
* remove mediaType and refactor audio and image
* separate blurview
* thumbnail video and video behavior
* add Audio to i18n and minor tweak
* set the blur as always dark and add the possibility to overlay
* don't need to controle the filepath in the view
* fix the loading in image and video at begin
* save the file with a similar filename as expected
* removed the necessity of messageId or id
* minor tweak
* switch useLayoutEffect to useEffect
* avoid onpress do some edge case because of cached at video
* minor tweak
* tweak at audio comment extension
* minor tweak type userpreferences
* remove test id from mediaAutoDownloadView
* change action's name to SET_NET_INFO_STATE
* caching and deleting video's thumbnails
* remove generate thumbnail
* minor tweak in image
* update camera-roll and save the file from local url
* remove local_cache_directory and deleteThumbnail
* update blur to fix error on android
* first commit
* fix togglePlayPause
* separate audio to a folder inside components and minor tweak attachment
* created the slider with text
* play/pause button, currentTime equal the sound, can change the slider and reflect to the sound
* play/pause, track is working and onEnd
* update the icons with play-shaped-filled, pause-shape-filled, loading
* start the tweaks on layout
* can play multiple audios, pausing the previous to execute the new one
* loading animated
* added the audio rate
* layout fixed
* removed the sound manipulation from Slider to manipulate only in the index
* fix time margin horizontal
* fix play 2 audios and play/pause properly
* change the way we treat the audio
* remove audio copy
* minor tweak
* fix rate state
* remove the PAUSE_AUDIO
* fix unloadAll, add hit slop to slider, show the duration on the first render
* refactor colors to be the same as figmas name
* change the class' name and add the method pauseCurrentAudio
* pause audio when unmount a RoomView and unloadAll when focusing at RoomsListView
* pause audio when entering a thread
* fix where call the pauseCurrentAudio
* moved the player from messageAudio to audioPlayer
* refactor audio component
* remove loading
* update snapshot
* fix colors name
* pauseAudio when roomview is blur
* moved audio from message/component/audio to message/Audio
* add navigation focus to AudioPlayer component and fix the jest
* add the { androidImplementation: 'MediaPlayer' }
* fix action sheet swipe 02-room
* fix action sheet swipe 05-threads
* tweak touchable
* remove react.memo from playbutton
* hitSlop
* speed playback from array
* textinputprops
* tweak at names
* minor tweak at onEnd
* minor tweak at names
* update styles
* thumb seek size
* change marginBottom
* add the clamp, adjust the thumb position, remove the necessity of OnEndGestureHandler
* change the utils to constants
* change to audioState
* fix the seek for android
* TDownloadState
* speed array
* pause audio from messagesView when open the files
* update test
* minor tweak
* change the time after ony one click, fixes the thumb to move sync with the click
* Fix seek
* minor tweak Sound to Audio.Sound
* name of Icon
* enable PlaybackSpeed only when playing the audio
* playbackSpeed to mmkv
* mock implementation
* create native button
* minor tweak
* minor tweaks
* playbackSpeed after loadAudio
* avoid show the error when try to setRate without audio
* add messageID to differ audios inside a quote/forward from original one
* unloadRoomAudios instead of unloadAllAudios inside the roomsListView
* minor tweak
---------
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2023-11-20 14:13:15 +00:00
|
|
|
const duration = useSharedValue(0);
|
|
|
|
const currentTime = useSharedValue(0);
|
|
|
|
const { colors } = useTheme();
|
|
|
|
const audioUri = useRef<string>('');
|
|
|
|
const navigation = useNavigation();
|
|
|
|
|
|
|
|
const onPlaybackStatusUpdate = (status: AVPlaybackStatus) => {
|
|
|
|
if (status) {
|
|
|
|
onPlaying(status);
|
|
|
|
handlePlaybackStatusUpdate(status);
|
|
|
|
onEnd(status);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const onPlaying = (data: AVPlaybackStatus) => {
|
|
|
|
if (data.isLoaded && data.isPlaying) {
|
|
|
|
setPaused(false);
|
|
|
|
} else {
|
|
|
|
setPaused(true);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const handlePlaybackStatusUpdate = (data: AVPlaybackStatus) => {
|
|
|
|
if (data.isLoaded && data.durationMillis) {
|
|
|
|
const durationSeconds = data.durationMillis / 1000;
|
|
|
|
duration.value = durationSeconds > 0 ? durationSeconds : 0;
|
|
|
|
const currentSecond = data.positionMillis / 1000;
|
|
|
|
if (currentSecond <= durationSeconds) {
|
|
|
|
currentTime.value = currentSecond;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const onEnd = (data: AVPlaybackStatus) => {
|
|
|
|
if (data.isLoaded && data.didJustFinish) {
|
|
|
|
try {
|
|
|
|
setPaused(true);
|
|
|
|
currentTime.value = 0;
|
|
|
|
} catch {
|
|
|
|
// do nothing
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const setPosition = async (time: number) => {
|
|
|
|
await audioPlayer.setPositionAsync(audioUri.current, time);
|
|
|
|
};
|
|
|
|
|
|
|
|
const togglePlayPause = async () => {
|
|
|
|
try {
|
|
|
|
if (!paused) {
|
|
|
|
await audioPlayer.pauseAudio(audioUri.current);
|
|
|
|
} else {
|
|
|
|
await audioPlayer.playAudio(audioUri.current);
|
|
|
|
}
|
|
|
|
} catch {
|
|
|
|
// Do nothing
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
audioPlayer.setRateAsync(audioUri.current, playbackSpeed);
|
|
|
|
}, [playbackSpeed]);
|
|
|
|
|
|
|
|
const onPress = () => {
|
|
|
|
onPlayButtonPress();
|
|
|
|
if (isLoading) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (isDownloaded) {
|
|
|
|
togglePlayPause();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
InteractionManager.runAfterInteractions(async () => {
|
|
|
|
audioUri.current = await audioPlayer.loadAudio({ msgId, rid, uri: fileUri });
|
|
|
|
audioPlayer.setOnPlaybackStatusUpdate(audioUri.current, onPlaybackStatusUpdate);
|
|
|
|
audioPlayer.setRateAsync(audioUri.current, playbackSpeed);
|
|
|
|
});
|
|
|
|
}, [fileUri]);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (paused) {
|
|
|
|
deactivateKeepAwake();
|
|
|
|
} else {
|
|
|
|
activateKeepAwake();
|
|
|
|
}
|
|
|
|
}, [paused]);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const unsubscribeFocus = navigation.addListener('focus', () => {
|
|
|
|
audioPlayer.setOnPlaybackStatusUpdate(audioUri.current, onPlaybackStatusUpdate);
|
|
|
|
});
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
unsubscribeFocus();
|
|
|
|
};
|
|
|
|
}, [navigation]);
|
|
|
|
|
2024-01-22 21:39:01 +00:00
|
|
|
useEffect(() => {
|
|
|
|
const listener = EventEmitter.addEventListener(AUDIO_FOCUSED, ({ audioFocused }: { audioFocused: string }) => {
|
|
|
|
setFocused(audioFocused === audioUri.current);
|
|
|
|
});
|
|
|
|
return () => {
|
|
|
|
EventEmitter.removeListener(AUDIO_FOCUSED, listener);
|
|
|
|
};
|
|
|
|
}, []);
|
|
|
|
|
feat: new audio player (#5160)
* feat: media auto-download view
* media auto download view completed and saving the settings in mmkv
* audio download preference
* audio auto download when the user who sent the audio is the same logged on mobile
* creation of isAutoDownloadEnabled, evaluate hist hook, Image Full Size preload done
* minor tweak audio show play button after download
* refactor audioFile to handleMediaDownload and fixed the audio download
* desestructured params to download too
* image download and autoDownload, algo fix the formatAttachmentUrl to show the image from local
* add the possibility to cancel image download and clear local images
* refactor blur component
* video download and auto download, also keeped the behavior to download unsuportted videos to the gallery
* add the possibility to start downloading a video, then exit the room, back again to room and cancel the video previously downloading
* remove the custom hook for autoDownload
* remove blurcomponent, fix the blur style in image.tsx, minor tweak video function name
* send messageId to video
* introducing the reducer to keep the downloads in progress
* create a media download selector
* remove all the redux stuff and do the same as file upload
* video download behavior
* done for image and audio
* fix the try catch download media
* clean up
* image container uiKit
* fix lint
* change rn-fetch-blob to expo-filesystem
* add pt-br
* pass the correct message id when there is an attachment on reply
* refactor some changes requested
* fix audio and move the netInfo from autoDownloadPreference to redux
* variable isAutoDownloadEnable name and handleMediaDownload getExtension
* message/Image refactored, change the component to show the image from FastImage to Image
* refactor handleMediaDownload and deleteMedia
* minor tweak
* refactor audio
* refactor video
* fix the type on the messagesView(the view of files)
* minor tweak
* fix the name of searchMediaFIleAsync's result
* minor tweak, add the default behavior, add the OFF as label
* minor tweaks
* verify if the media auto download exists on settings view
* fix media auto download view layout and minor tweak wifi
* avoid auto download from reply
* minor tweak at comment
* tweak list.section
* change the name to netInfoState and Local_document_directory
* remove mediaType and refactor audio and image
* separate blurview
* thumbnail video and video behavior
* add Audio to i18n and minor tweak
* set the blur as always dark and add the possibility to overlay
* don't need to controle the filepath in the view
* fix the loading in image and video at begin
* save the file with a similar filename as expected
* removed the necessity of messageId or id
* minor tweak
* switch useLayoutEffect to useEffect
* avoid onpress do some edge case because of cached at video
* minor tweak
* tweak at audio comment extension
* minor tweak type userpreferences
* remove test id from mediaAutoDownloadView
* change action's name to SET_NET_INFO_STATE
* caching and deleting video's thumbnails
* remove generate thumbnail
* minor tweak in image
* update camera-roll and save the file from local url
* remove local_cache_directory and deleteThumbnail
* update blur to fix error on android
* first commit
* fix togglePlayPause
* separate audio to a folder inside components and minor tweak attachment
* created the slider with text
* play/pause button, currentTime equal the sound, can change the slider and reflect to the sound
* play/pause, track is working and onEnd
* update the icons with play-shaped-filled, pause-shape-filled, loading
* start the tweaks on layout
* can play multiple audios, pausing the previous to execute the new one
* loading animated
* added the audio rate
* layout fixed
* removed the sound manipulation from Slider to manipulate only in the index
* fix time margin horizontal
* fix play 2 audios and play/pause properly
* change the way we treat the audio
* remove audio copy
* minor tweak
* fix rate state
* remove the PAUSE_AUDIO
* fix unloadAll, add hit slop to slider, show the duration on the first render
* refactor colors to be the same as figmas name
* change the class' name and add the method pauseCurrentAudio
* pause audio when unmount a RoomView and unloadAll when focusing at RoomsListView
* pause audio when entering a thread
* fix where call the pauseCurrentAudio
* moved the player from messageAudio to audioPlayer
* refactor audio component
* remove loading
* update snapshot
* fix colors name
* pauseAudio when roomview is blur
* moved audio from message/component/audio to message/Audio
* add navigation focus to AudioPlayer component and fix the jest
* add the { androidImplementation: 'MediaPlayer' }
* fix action sheet swipe 02-room
* fix action sheet swipe 05-threads
* tweak touchable
* remove react.memo from playbutton
* hitSlop
* speed playback from array
* textinputprops
* tweak at names
* minor tweak at onEnd
* minor tweak at names
* update styles
* thumb seek size
* change marginBottom
* add the clamp, adjust the thumb position, remove the necessity of OnEndGestureHandler
* change the utils to constants
* change to audioState
* fix the seek for android
* TDownloadState
* speed array
* pause audio from messagesView when open the files
* update test
* minor tweak
* change the time after ony one click, fixes the thumb to move sync with the click
* Fix seek
* minor tweak Sound to Audio.Sound
* name of Icon
* enable PlaybackSpeed only when playing the audio
* playbackSpeed to mmkv
* mock implementation
* create native button
* minor tweak
* minor tweaks
* playbackSpeed after loadAudio
* avoid show the error when try to setRate without audio
* add messageID to differ audios inside a quote/forward from original one
* unloadRoomAudios instead of unloadAllAudios inside the roomsListView
* minor tweak
---------
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2023-11-20 14:13:15 +00:00
|
|
|
let audioState: TAudioState = 'to-download';
|
|
|
|
if (isLoading) {
|
|
|
|
audioState = 'loading';
|
|
|
|
}
|
|
|
|
if (isDownloaded && paused) {
|
|
|
|
audioState = 'paused';
|
|
|
|
}
|
|
|
|
if (isDownloaded && !paused) {
|
|
|
|
audioState = 'playing';
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
2024-01-25 14:11:07 +00:00
|
|
|
<View style={[styles.audioContainer, { backgroundColor: colors.surfaceLight, borderColor: colors.strokeExtraLight }]}>
|
feat: new audio player (#5160)
* feat: media auto-download view
* media auto download view completed and saving the settings in mmkv
* audio download preference
* audio auto download when the user who sent the audio is the same logged on mobile
* creation of isAutoDownloadEnabled, evaluate hist hook, Image Full Size preload done
* minor tweak audio show play button after download
* refactor audioFile to handleMediaDownload and fixed the audio download
* desestructured params to download too
* image download and autoDownload, algo fix the formatAttachmentUrl to show the image from local
* add the possibility to cancel image download and clear local images
* refactor blur component
* video download and auto download, also keeped the behavior to download unsuportted videos to the gallery
* add the possibility to start downloading a video, then exit the room, back again to room and cancel the video previously downloading
* remove the custom hook for autoDownload
* remove blurcomponent, fix the blur style in image.tsx, minor tweak video function name
* send messageId to video
* introducing the reducer to keep the downloads in progress
* create a media download selector
* remove all the redux stuff and do the same as file upload
* video download behavior
* done for image and audio
* fix the try catch download media
* clean up
* image container uiKit
* fix lint
* change rn-fetch-blob to expo-filesystem
* add pt-br
* pass the correct message id when there is an attachment on reply
* refactor some changes requested
* fix audio and move the netInfo from autoDownloadPreference to redux
* variable isAutoDownloadEnable name and handleMediaDownload getExtension
* message/Image refactored, change the component to show the image from FastImage to Image
* refactor handleMediaDownload and deleteMedia
* minor tweak
* refactor audio
* refactor video
* fix the type on the messagesView(the view of files)
* minor tweak
* fix the name of searchMediaFIleAsync's result
* minor tweak, add the default behavior, add the OFF as label
* minor tweaks
* verify if the media auto download exists on settings view
* fix media auto download view layout and minor tweak wifi
* avoid auto download from reply
* minor tweak at comment
* tweak list.section
* change the name to netInfoState and Local_document_directory
* remove mediaType and refactor audio and image
* separate blurview
* thumbnail video and video behavior
* add Audio to i18n and minor tweak
* set the blur as always dark and add the possibility to overlay
* don't need to controle the filepath in the view
* fix the loading in image and video at begin
* save the file with a similar filename as expected
* removed the necessity of messageId or id
* minor tweak
* switch useLayoutEffect to useEffect
* avoid onpress do some edge case because of cached at video
* minor tweak
* tweak at audio comment extension
* minor tweak type userpreferences
* remove test id from mediaAutoDownloadView
* change action's name to SET_NET_INFO_STATE
* caching and deleting video's thumbnails
* remove generate thumbnail
* minor tweak in image
* update camera-roll and save the file from local url
* remove local_cache_directory and deleteThumbnail
* update blur to fix error on android
* first commit
* fix togglePlayPause
* separate audio to a folder inside components and minor tweak attachment
* created the slider with text
* play/pause button, currentTime equal the sound, can change the slider and reflect to the sound
* play/pause, track is working and onEnd
* update the icons with play-shaped-filled, pause-shape-filled, loading
* start the tweaks on layout
* can play multiple audios, pausing the previous to execute the new one
* loading animated
* added the audio rate
* layout fixed
* removed the sound manipulation from Slider to manipulate only in the index
* fix time margin horizontal
* fix play 2 audios and play/pause properly
* change the way we treat the audio
* remove audio copy
* minor tweak
* fix rate state
* remove the PAUSE_AUDIO
* fix unloadAll, add hit slop to slider, show the duration on the first render
* refactor colors to be the same as figmas name
* change the class' name and add the method pauseCurrentAudio
* pause audio when unmount a RoomView and unloadAll when focusing at RoomsListView
* pause audio when entering a thread
* fix where call the pauseCurrentAudio
* moved the player from messageAudio to audioPlayer
* refactor audio component
* remove loading
* update snapshot
* fix colors name
* pauseAudio when roomview is blur
* moved audio from message/component/audio to message/Audio
* add navigation focus to AudioPlayer component and fix the jest
* add the { androidImplementation: 'MediaPlayer' }
* fix action sheet swipe 02-room
* fix action sheet swipe 05-threads
* tweak touchable
* remove react.memo from playbutton
* hitSlop
* speed playback from array
* textinputprops
* tweak at names
* minor tweak at onEnd
* minor tweak at names
* update styles
* thumb seek size
* change marginBottom
* add the clamp, adjust the thumb position, remove the necessity of OnEndGestureHandler
* change the utils to constants
* change to audioState
* fix the seek for android
* TDownloadState
* speed array
* pause audio from messagesView when open the files
* update test
* minor tweak
* change the time after ony one click, fixes the thumb to move sync with the click
* Fix seek
* minor tweak Sound to Audio.Sound
* name of Icon
* enable PlaybackSpeed only when playing the audio
* playbackSpeed to mmkv
* mock implementation
* create native button
* minor tweak
* minor tweaks
* playbackSpeed after loadAudio
* avoid show the error when try to setRate without audio
* add messageID to differ audios inside a quote/forward from original one
* unloadRoomAudios instead of unloadAllAudios inside the roomsListView
* minor tweak
---------
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2023-11-20 14:13:15 +00:00
|
|
|
<PlayButton disabled={disabled} audioState={audioState} onPress={onPress} />
|
|
|
|
<Seek currentTime={currentTime} duration={duration} loaded={!disabled && isDownloaded} onChangeTime={setPosition} />
|
2024-01-22 21:39:01 +00:00
|
|
|
{audioState === 'playing' || focused ? <PlaybackSpeed /> : null}
|
feat: new audio player (#5160)
* feat: media auto-download view
* media auto download view completed and saving the settings in mmkv
* audio download preference
* audio auto download when the user who sent the audio is the same logged on mobile
* creation of isAutoDownloadEnabled, evaluate hist hook, Image Full Size preload done
* minor tweak audio show play button after download
* refactor audioFile to handleMediaDownload and fixed the audio download
* desestructured params to download too
* image download and autoDownload, algo fix the formatAttachmentUrl to show the image from local
* add the possibility to cancel image download and clear local images
* refactor blur component
* video download and auto download, also keeped the behavior to download unsuportted videos to the gallery
* add the possibility to start downloading a video, then exit the room, back again to room and cancel the video previously downloading
* remove the custom hook for autoDownload
* remove blurcomponent, fix the blur style in image.tsx, minor tweak video function name
* send messageId to video
* introducing the reducer to keep the downloads in progress
* create a media download selector
* remove all the redux stuff and do the same as file upload
* video download behavior
* done for image and audio
* fix the try catch download media
* clean up
* image container uiKit
* fix lint
* change rn-fetch-blob to expo-filesystem
* add pt-br
* pass the correct message id when there is an attachment on reply
* refactor some changes requested
* fix audio and move the netInfo from autoDownloadPreference to redux
* variable isAutoDownloadEnable name and handleMediaDownload getExtension
* message/Image refactored, change the component to show the image from FastImage to Image
* refactor handleMediaDownload and deleteMedia
* minor tweak
* refactor audio
* refactor video
* fix the type on the messagesView(the view of files)
* minor tweak
* fix the name of searchMediaFIleAsync's result
* minor tweak, add the default behavior, add the OFF as label
* minor tweaks
* verify if the media auto download exists on settings view
* fix media auto download view layout and minor tweak wifi
* avoid auto download from reply
* minor tweak at comment
* tweak list.section
* change the name to netInfoState and Local_document_directory
* remove mediaType and refactor audio and image
* separate blurview
* thumbnail video and video behavior
* add Audio to i18n and minor tweak
* set the blur as always dark and add the possibility to overlay
* don't need to controle the filepath in the view
* fix the loading in image and video at begin
* save the file with a similar filename as expected
* removed the necessity of messageId or id
* minor tweak
* switch useLayoutEffect to useEffect
* avoid onpress do some edge case because of cached at video
* minor tweak
* tweak at audio comment extension
* minor tweak type userpreferences
* remove test id from mediaAutoDownloadView
* change action's name to SET_NET_INFO_STATE
* caching and deleting video's thumbnails
* remove generate thumbnail
* minor tweak in image
* update camera-roll and save the file from local url
* remove local_cache_directory and deleteThumbnail
* update blur to fix error on android
* first commit
* fix togglePlayPause
* separate audio to a folder inside components and minor tweak attachment
* created the slider with text
* play/pause button, currentTime equal the sound, can change the slider and reflect to the sound
* play/pause, track is working and onEnd
* update the icons with play-shaped-filled, pause-shape-filled, loading
* start the tweaks on layout
* can play multiple audios, pausing the previous to execute the new one
* loading animated
* added the audio rate
* layout fixed
* removed the sound manipulation from Slider to manipulate only in the index
* fix time margin horizontal
* fix play 2 audios and play/pause properly
* change the way we treat the audio
* remove audio copy
* minor tweak
* fix rate state
* remove the PAUSE_AUDIO
* fix unloadAll, add hit slop to slider, show the duration on the first render
* refactor colors to be the same as figmas name
* change the class' name and add the method pauseCurrentAudio
* pause audio when unmount a RoomView and unloadAll when focusing at RoomsListView
* pause audio when entering a thread
* fix where call the pauseCurrentAudio
* moved the player from messageAudio to audioPlayer
* refactor audio component
* remove loading
* update snapshot
* fix colors name
* pauseAudio when roomview is blur
* moved audio from message/component/audio to message/Audio
* add navigation focus to AudioPlayer component and fix the jest
* add the { androidImplementation: 'MediaPlayer' }
* fix action sheet swipe 02-room
* fix action sheet swipe 05-threads
* tweak touchable
* remove react.memo from playbutton
* hitSlop
* speed playback from array
* textinputprops
* tweak at names
* minor tweak at onEnd
* minor tweak at names
* update styles
* thumb seek size
* change marginBottom
* add the clamp, adjust the thumb position, remove the necessity of OnEndGestureHandler
* change the utils to constants
* change to audioState
* fix the seek for android
* TDownloadState
* speed array
* pause audio from messagesView when open the files
* update test
* minor tweak
* change the time after ony one click, fixes the thumb to move sync with the click
* Fix seek
* minor tweak Sound to Audio.Sound
* name of Icon
* enable PlaybackSpeed only when playing the audio
* playbackSpeed to mmkv
* mock implementation
* create native button
* minor tweak
* minor tweaks
* playbackSpeed after loadAudio
* avoid show the error when try to setRate without audio
* add messageID to differ audios inside a quote/forward from original one
* unloadRoomAudios instead of unloadAllAudios inside the roomsListView
* minor tweak
---------
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2023-11-20 14:13:15 +00:00
|
|
|
</View>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default AudioPlayer;
|