xref: /MusicFree/src/service/index.ts (revision ef714860d2ba5fac469a96d1c94e8bd97275738c)
1e22d5e4fS猫头猫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猫头猫    );
134060c00aS猫头猫    TrackPlayer.addEventListener(Event.RemoteNext, () =>
144060c00aS猫头猫        MusicQueue.skipToNext(),
154060c00aS猫头猫    );
16846ca2ccS猫头猫    TrackPlayer.addEventListener(
17846ca2ccS猫头猫        Event.RemoteDuck,
18846ca2ccS猫头猫        async ({paused, parmanent}) => {
19e22d5e4fS猫头猫            if (Config.get('setting.basic.notInterrupt')) {
20caaa811bS猫头猫                return;
21caaa811bS猫头猫            }
22eb04a812S猫头猫            if (parmanent) {
23eb04a812S猫头猫                return MusicQueue.pause();
24eb04a812S猫头猫            }
25eb04a812S猫头猫            if (paused) {
26846ca2ccS猫头猫                resumeState = await TrackPlayer.getState();
27eb04a812S猫头猫                return MusicQueue.pause();
28846ca2ccS猫头猫            } else if (!musicIsPaused(resumeState)) {
29eb04a812S猫头猫                return MusicQueue.play();
30eb04a812S猫头猫            }
31846ca2ccS猫头猫        },
32846ca2ccS猫头猫    );
33846ca2ccS猫头猫    TrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => {
34e22d5e4fS猫头猫        Config.set('status.music.progress', evt.position);
35846ca2ccS猫头猫    });
36*ef714860S猫头猫    /** 播放下一个 */
37*ef714860S猫头猫    TrackPlayer.addEventListener(Event.PlaybackTrackChanged, async evt => {
38*ef714860S猫头猫        // 是track里的,不是playlist里的
39*ef714860S猫头猫        if (
40*ef714860S猫头猫            evt.nextTrack === 1 &&
41*ef714860S猫头猫            !(await TrackPlayer.getTrack(evt.nextTrack))?.url
42*ef714860S猫头猫        ) {
43*ef714860S猫头猫            if (MusicQueue.getRepeatMode() === 'SINGLE') {
44*ef714860S猫头猫                await MusicQueue.play(undefined, true);
45*ef714860S猫头猫            } else {
46*ef714860S猫头猫                console.log('SKIP');
47*ef714860S猫头猫                await MusicQueue.skipToNext();
48*ef714860S猫头猫            }
49*ef714860S猫头猫        }
50*ef714860S猫头猫    });
51bf6e62f2S猫头猫};
52