xref: /MusicFree/src/service/index.ts (revision e22d5e4f85cc635e62cd81a872a6b85f645cb2fb)
1*e22d5e4fS猫头猫import Config from '@/core/config';
2846ca2ccS猫头猫import musicIsPaused from '@/utils/musicIsPaused';
3846ca2ccS猫头猫import TrackPlayer, {Event, State} from 'react-native-track-player';
4242960d3S猫头猫import MusicQueue from '../core/musicQueue';
5bf6e62f2S猫头猫
6846ca2ccS猫头猫let resumeState: State;
7bf6e62f2S猫头猫module.exports = async function () {
8bf6e62f2S猫头猫  TrackPlayer.addEventListener(Event.RemotePlay, () => MusicQueue.play());
9bf6e62f2S猫头猫  TrackPlayer.addEventListener(Event.RemotePause, () => MusicQueue.pause());
10846ca2ccS猫头猫  TrackPlayer.addEventListener(Event.RemotePrevious, () =>
11846ca2ccS猫头猫    MusicQueue.skipToPrevious(),
12846ca2ccS猫头猫  );
13bf6e62f2S猫头猫  TrackPlayer.addEventListener(Event.RemoteNext, () => MusicQueue.skipToNext());
14846ca2ccS猫头猫  TrackPlayer.addEventListener(
15846ca2ccS猫头猫    Event.RemoteDuck,
16846ca2ccS猫头猫    async ({paused, parmanent}) => {
17*e22d5e4fS猫头猫      if (Config.get('setting.basic.notInterrupt')) {
18caaa811bS猫头猫        return;
19caaa811bS猫头猫      }
20eb04a812S猫头猫      if (parmanent) {
21eb04a812S猫头猫        return MusicQueue.pause();
22eb04a812S猫头猫      }
23eb04a812S猫头猫      if (paused) {
24846ca2ccS猫头猫        resumeState = await TrackPlayer.getState();
25eb04a812S猫头猫        return MusicQueue.pause();
26846ca2ccS猫头猫      } else if (!musicIsPaused(resumeState)) {
27eb04a812S猫头猫        return MusicQueue.play();
28eb04a812S猫头猫      }
29846ca2ccS猫头猫    },
30846ca2ccS猫头猫  );
31846ca2ccS猫头猫  TrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => {
32*e22d5e4fS猫头猫    Config.set('status.music.progress', evt.position);
33846ca2ccS猫头猫  });
34bf6e62f2S猫头猫};
35