xref: /MusicFree/src/native/lyricUtil/index.ts (revision ed3e0db2872abd7c7ea0be9f456c31ad35aedb0c)
1*ed3e0db2S猫头猫import Config from '@/core/config';
2*ed3e0db2S猫头猫import Toast from '@/utils/toast';
3689db039S猫头猫import {NativeModule, NativeModules} from 'react-native';
4689db039S猫头猫
557277364S猫头猫export enum NativeTextAlignment {
657277364S猫头猫    // 左对齐
757277364S猫头猫    LEFT = 3,
857277364S猫头猫    // 右对齐
957277364S猫头猫    RIGHT = 5,
1057277364S猫头猫    // 居中
1157277364S猫头猫    CENTER = 17,
1257277364S猫头猫}
1357277364S猫头猫
14689db039S猫头猫// 状态栏歌词的工具
15689db039S猫头猫interface ILyricUtil extends NativeModule {
16689db039S猫头猫    /** 显示状态栏歌词 */
170be848bcS猫头猫    showStatusBarLyric: (
180be848bcS猫头猫        initLyric?: string,
190be848bcS猫头猫        config?: Record<string, any>,
200be848bcS猫头猫    ) => Promise<void>;
21689db039S猫头猫    /** 隐藏状态栏歌词 */
22689db039S猫头猫    hideStatusBarLyric: () => Promise<void>;
2357277364S猫头猫    /** 设置歌词文本 */
2457277364S猫头猫    setStatusBarLyricText: (lyric: string) => Promise<void>;
2557277364S猫头猫    /** 设置距离顶部的距离 */
2657277364S猫头猫    setStatusBarLyricTop: (percent: number) => Promise<void>;
2757277364S猫头猫    /** 设置距离左部的距离 */
2857277364S猫头猫    setStatusBarLyricLeft: (percent: number) => Promise<void>;
2957277364S猫头猫    /** 设置宽度 */
3057277364S猫头猫    setStatusBarLyricWidth: (percent: number) => Promise<void>;
3157277364S猫头猫    /** 设置字体 */
3257277364S猫头猫    setStatusBarLyricFontSize: (fontSize: number) => Promise<void>;
3357277364S猫头猫    /** 设置对齐 */
3457277364S猫头猫    setStatusBarLyricAlign: (alignment: NativeTextAlignment) => Promise<void>;
3557277364S猫头猫    /** 设置颜色 */
3657277364S猫头猫    setStatusBarColors: (
3757277364S猫头猫        textColor: string | null,
3857277364S猫头猫        backgroundColor: string | null,
3957277364S猫头猫    ) => Promise<void>;
40689db039S猫头猫}
41689db039S猫头猫
42689db039S猫头猫const LyricUtil: ILyricUtil = NativeModules.LyricUtil;
43689db039S猫头猫
44*ed3e0db2S猫头猫const originalShowStatusBarLyric = LyricUtil.showStatusBarLyric;
45*ed3e0db2S猫头猫
46*ed3e0db2S猫头猫const showStatusBarLyric: ILyricUtil['showStatusBarLyric'] = async (
47*ed3e0db2S猫头猫    initLyric,
48*ed3e0db2S猫头猫    config,
49*ed3e0db2S猫头猫) => {
50*ed3e0db2S猫头猫    try {
51*ed3e0db2S猫头猫        const val = await originalShowStatusBarLyric(initLyric, config);
52*ed3e0db2S猫头猫        console.log(val);
53*ed3e0db2S猫头猫    } catch (e) {
54*ed3e0db2S猫头猫        Toast.warn('状态栏歌词开启失败,请到手机系统设置打开悬浮窗权限');
55*ed3e0db2S猫头猫        Config.set('setting.lyric.showStatusBarLyric', false);
56*ed3e0db2S猫头猫    }
57*ed3e0db2S猫头猫};
58*ed3e0db2S猫头猫
59*ed3e0db2S猫头猫LyricUtil.showStatusBarLyric = showStatusBarLyric;
60*ed3e0db2S猫头猫
61689db039S猫头猫export default LyricUtil;
62