import Config from "@/core/appConfig";
import Toast from "@/utils/toast";
import { NativeModule, NativeModules } from "react-native";
import { errorLog } from "@/utils/log.ts";
export enum NativeTextAlignment {
LEFT = 3,
RIGHT = 5,
CENTER = 17,
}
interface ILyricUtil extends NativeModule {
showStatusBarLyric: (
initLyric?: string,
config?: Record<string, any>,
) => Promise<void>;
hideStatusBarLyric: () => Promise<void>;
setStatusBarLyricText: (lyric: string) => Promise<void>;
setStatusBarLyricTop: (percent: number) => Promise<void>;
setStatusBarLyricLeft: (percent: number) => Promise<void>;
setStatusBarLyricWidth: (percent: number) => Promise<void>;
setStatusBarLyricFontSize: (fontSize: number) => Promise<void>;
setStatusBarLyricAlign: (alignment: NativeTextAlignment) => Promise<void>;
setStatusBarColors: (
textColor: string | null,
backgroundColor: string | null,
) => Promise<void>;
checkSystemAlertPermission: () => Promise<boolean>;
requestSystemAlertPermission: () => Promise<boolean>;
}
const LyricUtil: ILyricUtil = NativeModules.LyricUtil;
const originalShowStatusBarLyric = LyricUtil.showStatusBarLyric;
const showStatusBarLyric: ILyricUtil["showStatusBarLyric"] = async (
initLyric,
config,
) => {
try {
await originalShowStatusBarLyric(initLyric, config);
} catch (e) {
errorLog("状态栏歌词开启失败", e);
Toast.warn("状态栏歌词开启失败,请到手机系统设置打开悬浮窗权限");
Config.setConfig("lyric.showStatusBarLyric", false);
}
};
LyricUtil.showStatusBarLyric = showStatusBarLyric;
export default LyricUtil;