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