Upgrade all dependencies
(1) react-native-track-player to v2 (2) react-navigation to v6 (3) react-native to v0.66.4
This commit is contained in:
43
src/utility/AddedTrackEvents.ts
Normal file
43
src/utility/AddedTrackEvents.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import TrackPlayer from 'react-native-track-player';
|
||||
import { useEffect } from 'react';
|
||||
import EventEmitter from 'events';
|
||||
|
||||
const eventName = 'track-added';
|
||||
const addedTrackEmitter = new EventEmitter();
|
||||
|
||||
/**
|
||||
* Emit the event that a track has been added
|
||||
*/
|
||||
export function emitTrackAdded() {
|
||||
addedTrackEmitter.emit(eventName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call the callback whenever a track has been added to the queue
|
||||
*/
|
||||
export function onTrackAdded(callback: () => void) {
|
||||
addedTrackEmitter.addListener(eventName, callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* A hook to manage the listeners for the added track function
|
||||
*/
|
||||
export function useOnTrackAdded(callback: () => void) {
|
||||
useEffect(() => {
|
||||
addedTrackEmitter.addListener(eventName, callback);
|
||||
return () => {
|
||||
addedTrackEmitter.removeListener(eventName, callback);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Monkey-patch the track-player to also emit track added events
|
||||
*/
|
||||
export function patchTrackPlayer() {
|
||||
const oldAddFunction = TrackPlayer.add;
|
||||
TrackPlayer.add = (...args: Parameters<typeof oldAddFunction>) => {
|
||||
emitTrackAdded();
|
||||
return oldAddFunction(...args);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user