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