HarmonyOSBaseLibs/src/main/ets/utils/XWebHelper.ets
徐勤民 98068eaa41 feat(home): 添加文章详情页封面图并优化分享功能
- 在 HomeArticleDetailModel 中添加 coverImgUrl 字段,用于存储文章封面图
- 在 MiniAppManager 中更新分享功能,增加封面图作为缩略图
- 优化 RecordData 中授权签名功能的 ID- 移除不必要的日志输出,提高代码可读性
2025-05-26 14:57:25 +08:00

131 行
3.8 KiB
Plaintext

import { router, WebHeader } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';
import { LogHelper, SZYXLocalStorageHelper } from '../../../../Index';
import { baseEncode } from '../util/base64Util';
import { TitleBarBtn } from '../view/SafeView';
import { ToolsHelper } from './ToolsHelper';
import { XWebManager } from './XWebManager';
const XWebview = import('../pages/XWebview');
export interface XWebController {
sendMessage: (message: string) => void
getUrl: () => string
refresh: () => void
getTitle: () => string
}
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
clickMenu?: TitleBarBtn
controller?: XWebController
zoomAccess?: boolean
_uuid?: string
_uuidToHtml?: string
}
export class XWebHelper {
static close() {
XWebManager.close()
}
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)
}
params.controller.getUrl = (): string => {
return XWebManager.getUrl();
}
params.controller.getTitle = (): string => {
return XWebManager.getTitle();
}
params.controller.refresh = () => {
XWebManager.refresh()
}
}
if (params.clickMenu){
XWebManager.menuClick = params.clickMenu.onClick
}
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}`)
})
})
}
}