parent
9e60fee6ee
commit
34207314f5
@ -0,0 +1,10 @@
|
|||||||
|
// store.js
|
||||||
|
import { create } from "zustand";
|
||||||
|
|
||||||
|
const useStore = create((set: any) => ({
|
||||||
|
count: 0,
|
||||||
|
increase: () => set((state: any) => ({ count: state.count + 1 })),
|
||||||
|
decrease: () => set((state: any) => ({ count: state.count - 1 })),
|
||||||
|
}));
|
||||||
|
|
||||||
|
export default useStore;
|
@ -0,0 +1,38 @@
|
|||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import { Audio, InterruptionModeAndroid, InterruptionModeIOS } from "expo-av";
|
||||||
|
|
||||||
|
const useSoundEffect = (soundFile) => {
|
||||||
|
const [sound, setSound] = useState(null); // Explicitly set initial state to null
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const loadSound = async () => {
|
||||||
|
// await Audio.setAudioModeAsync({
|
||||||
|
// staysActiveInBackground: true,
|
||||||
|
// shouldDuckAndroid: true,
|
||||||
|
// playThroughEarpieceAndroid: false,
|
||||||
|
// interruptionModeIOS: InterruptionModeIOS.DoNotMix,
|
||||||
|
// interruptionModeAndroid: InterruptionModeAndroid.DoNotMix,
|
||||||
|
// allowsRecordingIOS: false,
|
||||||
|
// playsInSilentModeIOS: true,
|
||||||
|
// });
|
||||||
|
const { sound: newSound } = await Audio.Sound.createAsync(soundFile);
|
||||||
|
setSound(newSound);
|
||||||
|
};
|
||||||
|
|
||||||
|
loadSound();
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
sound?.unloadAsync();
|
||||||
|
};
|
||||||
|
}, [soundFile, sound]); // Include sound in the dependency array
|
||||||
|
|
||||||
|
const playSound = async () => {
|
||||||
|
if (sound) {
|
||||||
|
await sound.playAsync();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return playSound;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default useSoundEffect;
|
Loading…
Reference in new issue