35 lines
792 B
TypeScript
35 lines
792 B
TypeScript
import { Audio } from 'expo-av';
|
|
import React, { useEffect, useRef } from 'react';
|
|
|
|
export enum ERingerSounds {
|
|
DIALTONE = 'dialtone',
|
|
RINGTONE = 'ringtone'
|
|
}
|
|
|
|
const Ringer = React.memo(({ ringer }: { ringer: ERingerSounds }) => {
|
|
const sound = useRef(new Audio.Sound());
|
|
|
|
useEffect(() => {
|
|
const loadAndPlay = async () => {
|
|
try {
|
|
const soundFile = ringer === ERingerSounds.DIALTONE ? require(`./dialtone.mp3`) : require(`./ringtone.mp3`);
|
|
await sound.current.loadAsync(soundFile);
|
|
await sound.current.playAsync();
|
|
await sound.current.setIsLoopingAsync(true);
|
|
} catch (error) {
|
|
console.error('Error loading sound:', error);
|
|
}
|
|
};
|
|
|
|
loadAndPlay();
|
|
|
|
return () => {
|
|
sound.current?.unloadAsync();
|
|
};
|
|
}, []);
|
|
|
|
return null;
|
|
});
|
|
|
|
export default Ringer;
|