123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- 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<string>;
- controller?: XWebJsController
- }
- export interface XWebParams {
- url?: string
- content?: string
- title?: string
- watermarkTxt?: string
- showMenu?: boolean
- jsParams?: JsParams
- closeTag?: string
- headers?: Array<WebHeader>
- 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<boolean> {
- 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<boolean> {
- 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}`)
- })
- })
- }
- }
|