import { router, WebHeader } from '@kit.ArkUI'; import { BusinessError } from '@kit.BasicServicesKit'; import { LogHelper, SZYXLocalStorageHelper } from '../../../../Index'; import { baseEncode } from '../util/base64Util'; import { ToolsHelper } from './ToolsHelper'; import { XWebManager } from './XWebManager'; const XWebview = import('../pages/XWebview'); export interface XWebController { sendMessage: (message: string) => void } export interface XWebJsController { sendMessage: (message: string) => void } export interface JsParams { obj: object; name: string; methodList: Array; controller?: XWebJsController } export interface XWebParams { url?: string content?: string title?: string watermarkTxt?: string showMenu?: boolean jsParams?: JsParams closeTag?: string headers?: Array onMessage?: (message: string) => void controller?: XWebController zoomAccess?: boolean _uuid?: string _uuidToHtml?: string } export class XWebHelper { private constructor() { } /** * 打开web页面,加载h5 * @param params */ public static openWeb(params: XWebParams): Promise { if (params.onMessage) { params._uuid = XWebManager.addOnMessage(params.onMessage) } if (params.controller) { params._uuidToHtml = ToolsHelper.getUuid() params.controller.sendMessage = (msg) => { XWebManager.sendMessageToHtml(msg) } } if (params.jsParams && params.jsParams.obj) { if (!params._uuidToHtml) { params._uuidToHtml = ToolsHelper.getUuid() } XWebManager.objs.set(params._uuidToHtml, params.jsParams.obj) if (params.jsParams?.controller) { params.jsParams.controller.sendMessage = (msg) => { XWebManager.sendMessageToWeb(msg) } } } return new Promise((resolve) => { router.pushNamedRoute({ name: 'XWebview', params: params }, router.RouterMode.Single).then(() => { LogHelper.info('Succeeded in jumping to the XWebview page.') resolve(true) }).catch((err: BusinessError) => { resolve(false) LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`) ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`) }) }) } public static refreshWeb() { SZYXLocalStorageHelper.storage.setOrCreate('refresh_web_base', new Date().getTime()) } public static openPreview(params: XWebParams): Promise { params.url = `https://mdtdemo.51trust.com/preview/onlinePreview?url=${baseEncode(params.url)}&watermarkTxt=${encodeURI(params.watermarkTxt ?? '')}` return new Promise((resolve) => { router.pushNamedRoute({ name: 'XWebview', params: params }, router.RouterMode.Single).then(() => { LogHelper.info('Succeeded in jumping to the XWebview page.') resolve(true) }).catch((err: BusinessError) => { resolve(false) LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`) ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`) }) }) } }