xref: /MusicFree/src/entry/bootstrap.ts (revision bf6e62f27bf21a011995d7561e0093fae1a2d72e)
1*bf6e62f2S猫头猫import MusicQueue from '@/common/musicQueue';
2*bf6e62f2S猫头猫import MusicSheet from '@/common/musicSheet';
3*bf6e62f2S猫头猫import {check, PERMISSIONS, request} from 'react-native-permissions';
4*bf6e62f2S猫头猫import TrackPlayer, { Capability } from 'react-native-track-player';
5*bf6e62f2S猫头猫import {pluginManager} from '../common/pluginManager';
6*bf6e62f2S猫头猫import 'react-native-get-random-values';
7*bf6e62f2S猫头猫import {ToastAndroid} from 'react-native';
8*bf6e62f2S猫头猫import { loadConfig } from '@/common/localConfigManager';
9*bf6e62f2S猫头猫
10*bf6e62f2S猫头猫/** app加载前执行 */
11*bf6e62f2S猫头猫export default async function () {
12*bf6e62f2S猫头猫  // 检查权限
13*bf6e62f2S猫头猫  const [readStoragePermission, writeStoragePermission] = await Promise.all([
14*bf6e62f2S猫头猫    check(PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE),
15*bf6e62f2S猫头猫    check(PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE),
16*bf6e62f2S猫头猫  ]);
17*bf6e62f2S猫头猫  if (
18*bf6e62f2S猫头猫    !(
19*bf6e62f2S猫头猫      readStoragePermission === 'granted' &&
20*bf6e62f2S猫头猫      writeStoragePermission === 'granted'
21*bf6e62f2S猫头猫    )
22*bf6e62f2S猫头猫  ) {
23*bf6e62f2S猫头猫    await request(PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE);
24*bf6e62f2S猫头猫    await request(PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE);
25*bf6e62f2S猫头猫  }
26*bf6e62f2S猫头猫
27*bf6e62f2S猫头猫  // 加载配置
28*bf6e62f2S猫头猫  await loadConfig();
29*bf6e62f2S猫头猫  // 加载插件
30*bf6e62f2S猫头猫
31*bf6e62f2S猫头猫  Promise.all([
32*bf6e62f2S猫头猫    await pluginManager.initPlugins(),
33*bf6e62f2S猫头猫    await TrackPlayer.setupPlayer(),
34*bf6e62f2S猫头猫    await TrackPlayer.updateOptions({
35*bf6e62f2S猫头猫      stopWithApp: false,
36*bf6e62f2S猫头猫      alwaysPauseOnInterruption: true,
37*bf6e62f2S猫头猫      capabilities: [
38*bf6e62f2S猫头猫        Capability.Play,
39*bf6e62f2S猫头猫        Capability.Pause,
40*bf6e62f2S猫头猫        Capability.SkipToNext,
41*bf6e62f2S猫头猫        Capability.SkipToPrevious,
42*bf6e62f2S猫头猫      ],
43*bf6e62f2S猫头猫      compactCapabilities: [
44*bf6e62f2S猫头猫        Capability.Play,
45*bf6e62f2S猫头猫        Capability.Pause,
46*bf6e62f2S猫头猫        Capability.SkipToNext,
47*bf6e62f2S猫头猫        Capability.SkipToPrevious,
48*bf6e62f2S猫头猫      ],
49*bf6e62f2S猫头猫      notificationCapabilities: [
50*bf6e62f2S猫头猫        Capability.Play,
51*bf6e62f2S猫头猫        Capability.Pause,
52*bf6e62f2S猫头猫        Capability.SkipToNext,
53*bf6e62f2S猫头猫        Capability.SkipToPrevious,
54*bf6e62f2S猫头猫      ]
55*bf6e62f2S猫头猫    })
56*bf6e62f2S猫头猫  ]);
57*bf6e62f2S猫头猫  // musicController.initMusicControl();
58*bf6e62f2S猫头猫  await MusicQueue.setupMusicQueue();
59*bf6e62f2S猫头猫  await MusicSheet.initMusicSheet();
60*bf6e62f2S猫头猫
61*bf6e62f2S猫头猫  ErrorUtils.setGlobalHandler(error => ToastAndroid.show(`error: ${error?.message}`, ToastAndroid.LONG));
62*bf6e62f2S猫头猫  // 隐藏开屏动画
63*bf6e62f2S猫头猫}
64