import { createCommands } from '@jolibox/common'; import { createSyncAPI, registerCanIUse } from './base'; import { invokeNative } from '@jolibox/native-bridge'; import { context } from '@/common/context'; const commands = createCommands(); const API_ENV = 'env'; const API_GET_SYSTEM_SYNC = 'getSystemInfoSync'; const getSystemInfoSync = createSyncAPI(API_GET_SYSTEM_SYNC, { implement: () => { const res = invokeNative('envSync'); const { data } = res; return { system: data.deviceInfo.system, platform: data.deviceInfo.platform.toLowerCase() as 'h5' | 'android' | 'ios', version: data.sdkInfo.jssdkVersion, pixelRatio: data.deviceInfo.pixelRatio, language: data.deviceInfo.lang, brand: data.deviceInfo.brand, appName: data.hostInfo?.appName, SDKVersion: data.sdkInfo.jssdkVersion, viewport: { statusBarHeight: context.viewport.statusBarHeight, navigationBarHeight: context.viewport.navigationBarHeight } }; } }); const getEnv = createSyncAPI(API_ENV, { implement: () => { const res = invokeNative('envSync'); return res?.data ?? undefined; } }); commands.registerCommand('API.getSystemInfoSync', getSystemInfoSync); commands.registerCommand('API.env', getEnv); registerCanIUse('env', { version: '1.0.0' }); registerCanIUse('getSystemInfoSync', { version: '1.0.0', properties: { viewport: '1.0.33' } });