import { NativeModules } from 'react-native' import type { XuqmUserInfo } from '@xuqm/rn-common' interface XuqmPushNative { /** 由共享登录态适配器转发到原生会话入口;原生自动完成厂商检测、token 与绑定。传 null 登出。 */ setUserInfo(info: Pick | null): Promise setOfflinePushEnabled(enabled: boolean): Promise setQuietHours(start: string, end: string): Promise clearQuietHours(): Promise } const _native = NativeModules.XuqmPushModule as XuqmPushNative | undefined export function isNativePushAvailable(): boolean { return !!_native } export async function nativeSetUserInfo(info: XuqmUserInfo | null): Promise { if (!_native?.setUserInfo) return await _native.setUserInfo( info ? { userId: info.userId, userSig: info.userSig, name: info.name, phone: info.phone } : null, ) } export async function nativeSetOfflinePushEnabled(enabled: boolean): Promise { if (!_native?.setOfflinePushEnabled) return await _native.setOfflinePushEnabled(enabled) } export async function nativeSetQuietHours(start: string, end: string): Promise { if (!_native?.setQuietHours) return await _native.setQuietHours(start, end) } export async function nativeClearQuietHours(): Promise { if (!_native?.clearQuietHours) return await _native.clearQuietHours() }