xref: /MusicFree/src/service/index.ts (revision 6704747af84cebd842b258efac7143542722fac5)
1import Config from '@/core/config';
2import musicIsPaused from '@/utils/musicIsPaused';
3import TrackPlayer, {Event, State} from 'react-native-track-player';
4import MusicQueue from '../core/musicQueue';
5
6let resumeState: State;
7module.exports = async function () {
8  TrackPlayer.addEventListener(Event.RemotePlay, () => MusicQueue.play());
9  TrackPlayer.addEventListener(Event.RemotePause, () => MusicQueue.pause());
10  TrackPlayer.addEventListener(Event.RemotePrevious, () =>
11    MusicQueue.skipToPrevious(),
12  );
13  TrackPlayer.addEventListener(Event.RemoteNext, () => MusicQueue.skipToNext());
14  TrackPlayer.addEventListener(
15    Event.RemoteDuck,
16    async ({paused, parmanent}) => {
17      if (Config.get('setting.basic.notInterrupt')) {
18        return;
19      }
20      if (parmanent) {
21        return MusicQueue.pause();
22      }
23      if (paused) {
24        resumeState = await TrackPlayer.getState();
25        return MusicQueue.pause();
26      } else if (!musicIsPaused(resumeState)) {
27        return MusicQueue.play();
28      }
29    },
30  );
31  TrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => {
32    Config.set('status.music.progress', evt.position);
33  });
34};
35