2024-11-28 12:17:44 +08:00
|
|
|
import { router, WebHeader } from '@kit.ArkUI';
|
2024-05-07 17:41:21 +08:00
|
|
|
import { BusinessError } from '@kit.BasicServicesKit';
|
2025-02-18 15:11:40 +08:00
|
|
|
import { LogHelper, SZYXLocalStorageHelper } from '../../../../Index';
|
2024-11-21 18:22:23 +08:00
|
|
|
import { baseEncode } from '../util/base64Util';
|
2024-05-07 17:41:21 +08:00
|
|
|
import { ToolsHelper } from './ToolsHelper';
|
2024-11-22 17:35:12 +08:00
|
|
|
import { XWebManager } from './XWebManager';
|
2024-05-07 17:41:21 +08:00
|
|
|
|
|
|
|
|
const XWebview = import('../pages/XWebview');
|
|
|
|
|
|
|
|
|
|
|
2024-11-22 17:35:12 +08:00
|
|
|
export interface XWebController {
|
|
|
|
|
sendMessage: (message: string) => void
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-17 11:55:55 +08:00
|
|
|
export interface XWebJsController {
|
|
|
|
|
sendMessage: (message: string) => void
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface JsParams {
|
|
|
|
|
obj: object;
|
|
|
|
|
name: string;
|
|
|
|
|
methodList: Array<string>;
|
|
|
|
|
controller?: XWebJsController
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-07 17:41:21 +08:00
|
|
|
export interface XWebParams {
|
2024-10-28 17:37:42 +08:00
|
|
|
url?: string
|
|
|
|
|
content?: string
|
2024-05-07 17:41:21 +08:00
|
|
|
title?: string
|
2025-02-17 11:55:55 +08:00
|
|
|
watermarkTxt?: string
|
2024-10-11 10:31:18 +08:00
|
|
|
showMenu?: boolean
|
2025-02-17 11:55:55 +08:00
|
|
|
jsParams?: JsParams
|
2024-10-31 12:30:41 +08:00
|
|
|
closeTag?: string
|
2025-02-17 11:55:55 +08:00
|
|
|
headers?: Array<WebHeader>
|
2024-11-22 17:35:12 +08:00
|
|
|
onMessage?: (message: string) => void
|
|
|
|
|
controller?: XWebController
|
2025-02-17 11:55:55 +08:00
|
|
|
zoomAccess?: boolean
|
|
|
|
|
_uuid?: string
|
|
|
|
|
_uuidToHtml?: string
|
2024-05-07 17:41:21 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export class XWebHelper {
|
2024-10-31 12:28:44 +08:00
|
|
|
private constructor() {
|
|
|
|
|
}
|
2024-10-31 12:30:41 +08:00
|
|
|
|
2024-05-07 17:41:21 +08:00
|
|
|
/**
|
|
|
|
|
* 打开web页面,加载h5
|
|
|
|
|
* @param params
|
|
|
|
|
*/
|
2024-10-22 12:00:04 +08:00
|
|
|
public static openWeb(params: XWebParams): Promise<boolean> {
|
2024-11-22 17:35:12 +08:00
|
|
|
if (params.onMessage) {
|
|
|
|
|
params._uuid = XWebManager.addOnMessage(params.onMessage)
|
|
|
|
|
}
|
|
|
|
|
if (params.controller) {
|
|
|
|
|
params._uuidToHtml = ToolsHelper.getUuid()
|
|
|
|
|
params.controller.sendMessage = (msg) => {
|
|
|
|
|
XWebManager.sendMessageToHtml(msg)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-17 11:55:55 +08:00
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-22 12:00:04 +08:00
|
|
|
return new Promise((resolve) => {
|
|
|
|
|
router.pushNamedRoute({
|
|
|
|
|
name: 'XWebview',
|
|
|
|
|
params: params
|
|
|
|
|
}, router.RouterMode.Single).then(() => {
|
2024-10-31 12:30:41 +08:00
|
|
|
LogHelper.info('Succeeded in jumping to the XWebview page.')
|
2024-10-22 12:00:04 +08:00
|
|
|
resolve(true)
|
|
|
|
|
}).catch((err: BusinessError) => {
|
|
|
|
|
resolve(false)
|
2024-10-31 12:30:41 +08:00
|
|
|
LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
|
2024-10-22 12:00:04 +08:00
|
|
|
ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
|
|
|
|
|
})
|
2024-05-07 17:41:21 +08:00
|
|
|
})
|
|
|
|
|
}
|
2024-11-22 17:35:12 +08:00
|
|
|
|
2025-02-18 15:11:40 +08:00
|
|
|
public static refreshWeb() {
|
|
|
|
|
SZYXLocalStorageHelper.storage.setOrCreate('refresh_web_base', new Date().getTime())
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-21 18:22:23 +08:00
|
|
|
public static openPreview(params: XWebParams): Promise<boolean> {
|
2024-11-22 17:35:12 +08:00
|
|
|
params.url =
|
|
|
|
|
`https://mdtdemo.51trust.com/preview/onlinePreview?url=${baseEncode(params.url)}&watermarkTxt=${encodeURI(params.watermarkTxt ??
|
|
|
|
|
'')}`
|
2024-11-21 18:22:23 +08:00
|
|
|
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}`)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
2024-05-07 17:41:21 +08:00
|
|
|
}
|