XWebHelper.ets 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { router, WebHeader } from '@kit.ArkUI';
  2. import { BusinessError } from '@kit.BasicServicesKit';
  3. import { LogHelper } from '../../../../Index';
  4. import { baseEncode } from '../util/base64Util';
  5. import { ToolsHelper } from './ToolsHelper';
  6. import { XWebManager } from './XWebManager';
  7. const XWebview = import('../pages/XWebview');
  8. export interface XWebController {
  9. sendMessage: (message: string) => void
  10. }
  11. export interface XWebParams {
  12. url?: string
  13. zoomAccess?: boolean
  14. content?: string
  15. title?: string
  16. showMenu?: boolean
  17. closeTag?: string
  18. watermarkTxt?: string
  19. _uuid?: string
  20. _uuidToHtml?: string
  21. onMessage?: (message: string) => void
  22. controller?: XWebController
  23. headers?: Array<WebHeader>
  24. }
  25. export class XWebHelper {
  26. private constructor() {
  27. }
  28. /**
  29. * 打开web页面,加载h5
  30. * @param params
  31. */
  32. public static openWeb(params: XWebParams): Promise<boolean> {
  33. if (params.onMessage) {
  34. params._uuid = XWebManager.addOnMessage(params.onMessage)
  35. }
  36. if (params.controller) {
  37. params._uuidToHtml = ToolsHelper.getUuid()
  38. params.controller.sendMessage = (msg) => {
  39. XWebManager.sendMessageToHtml(msg)
  40. }
  41. }
  42. return new Promise((resolve) => {
  43. router.pushNamedRoute({
  44. name: 'XWebview',
  45. params: params
  46. }, router.RouterMode.Single).then(() => {
  47. LogHelper.info('Succeeded in jumping to the XWebview page.')
  48. resolve(true)
  49. }).catch((err: BusinessError) => {
  50. resolve(false)
  51. LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  52. ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  53. })
  54. })
  55. }
  56. public static openPreview(params: XWebParams): Promise<boolean> {
  57. params.url =
  58. `https://mdtdemo.51trust.com/preview/onlinePreview?url=${baseEncode(params.url)}&watermarkTxt=${encodeURI(params.watermarkTxt ??
  59. '')}`
  60. return new Promise((resolve) => {
  61. router.pushNamedRoute({
  62. name: 'XWebview',
  63. params: params
  64. }, router.RouterMode.Single).then(() => {
  65. LogHelper.info('Succeeded in jumping to the XWebview page.')
  66. resolve(true)
  67. }).catch((err: BusinessError) => {
  68. resolve(false)
  69. LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  70. ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  71. })
  72. })
  73. }
  74. }