1- import { createAudioPlayer , AudioPlayer , AudioStatus } from 'expo-audio' ;
1+ import { createAudioPlayer , type AudioPlayer , type AudioStatus } from 'expo-audio' ;
22import { Q } from '@nozbe/watermelondb' ;
33
44import dayjs from '../dayjs' ;
@@ -9,9 +9,9 @@ import { type TMessageModel } from '../../definitions';
99import { emitter } from './helpers' ;
1010
1111function createAudioManager ( ) {
12- let audioQueue : { [ audioKey : string ] : AudioPlayer } = { } ;
12+ const audioQueue : { [ audioKey : string ] : AudioPlayer } = { } ;
1313 let audioPlaying = '' ;
14- let audiosRendered = new Set < string > ( ) ;
14+ const audiosRendered = new Set < string > ( ) ;
1515
1616 function getAudioKey ( { msgId, rid, uri } : { msgId ?: string ; rid : string ; uri : string } ) {
1717 return `${ msgId } -${ rid } -${ uri } ` ;
@@ -25,7 +25,7 @@ function createAudioManager() {
2525 audiosRendered . delete ( audioKey ) ;
2626 }
2727
28- async function loadAudio ( { msgId, rid, uri } : { rid : string ; msgId ?: string ; uri : string } ) : Promise < string > {
28+ function loadAudio ( { msgId, rid, uri } : { rid : string ; msgId ?: string ; uri : string } ) : string {
2929 const audioKey = getAudioKey ( { msgId, rid, uri } ) ;
3030 addAudioRendered ( audioKey ) ;
3131 if ( audioQueue [ audioKey ] ) return audioKey ;
@@ -35,28 +35,30 @@ function createAudioManager() {
3535 return audioKey ;
3636 }
3737
38- async function playAudio ( audioKey : string ) {
39- if ( audioPlaying ) await pauseAudio ( ) ;
38+ function playAudio ( audioKey : string ) {
39+ if ( audioPlaying ) pauseAudio ( ) ;
4040 audioQueue [ audioKey ] ?. play ( ) ;
4141 audioPlaying = audioKey ;
4242 emitter . emit ( 'audioFocused' , audioKey ) ;
4343 }
4444
45- async function pauseAudio ( ) {
45+ function pauseAudio ( ) {
4646 if ( audioPlaying ) {
4747 audioQueue [ audioPlaying ] ?. pause ( ) ;
4848 audioPlaying = '' ;
4949 }
5050 }
5151
52- async function setPositionAsync ( audioKey : string , time : number ) {
52+ function setPositionAsync ( audioKey : string , time : number ) {
5353 audioQueue [ audioKey ] ?. seekTo ( time ) ;
5454 }
5555
56- async function setRateAsync ( audioKey : string , value = 1.0 ) {
56+ function setRateAsync ( audioKey : string , value = 1.0 ) {
5757 try {
5858 audioQueue [ audioKey ] ?. setPlaybackRate ( value ) ;
59- } catch { }
59+ } catch {
60+ // Ignore errors when setting playback rate
61+ }
6062 }
6163
6264 function onPlaybackStatusUpdate ( audioKey : string , status : AudioStatus , callback : ( status : AudioStatus ) => void ) {
@@ -79,7 +81,9 @@ function createAudioManager() {
7981 audioPlaying = '' ;
8082 emitter . emit ( 'audioFocused' , '' ) ;
8183 await playNextAudioInSequence ( audioKey ) ;
82- } catch { }
84+ } catch {
85+ // Ignore errors during cleanup
86+ }
8387 }
8488 }
8589
@@ -117,7 +121,7 @@ function createAudioManager() {
117121 if ( nextMessage && nextMessage . attachments ) {
118122 const nextAudioInSeqKey = getNextAudioKey ( { message : nextMessage , rid } ) ;
119123 if ( nextAudioInSeqKey && audioQueue [ nextAudioInSeqKey ] && audiosRendered . has ( nextAudioInSeqKey ) ) {
120- await playAudio ( nextAudioInSeqKey ) ;
124+ playAudio ( nextAudioInSeqKey ) ;
121125 }
122126 }
123127 }
@@ -128,8 +132,10 @@ function createAudioManager() {
128132 const roomAudioKeysLoaded = Object . keys ( audioQueue ) . filter ( audioKey => regExp . test ( audioKey ) ) ;
129133 const roomAudiosLoaded = roomAudioKeysLoaded . map ( key => audioQueue [ key ] ) ;
130134 try {
131- await Promise . all ( roomAudiosLoaded . map ( async audio => audio ?. release ( ) ) ) ;
132- } catch { }
135+ await Promise . all ( roomAudiosLoaded . map ( audio => audio ?. release ( ) ) ) ;
136+ } catch ( error ) {
137+ console . log ( error ) ;
138+ }
133139 roomAudioKeysLoaded . forEach ( key => delete audioQueue [ key ] ) ;
134140 audioPlaying = '' ;
135141 }
0 commit comments