XWebHelper.ets 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import { router, WebHeader } from '@kit.ArkUI';
  2. import { BusinessError } from '@kit.BasicServicesKit';
  3. import { LogHelper, SZYXLocalStorageHelper } 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 XWebJsController {
  12. sendMessage: (message: string) => void
  13. }
  14. export interface JsParams {
  15. obj: object;
  16. name: string;
  17. methodList: Array<string>;
  18. controller?: XWebJsController
  19. }
  20. export interface XWebParams {
  21. url?: string
  22. content?: string
  23. title?: string
  24. watermarkTxt?: string
  25. showMenu?: boolean
  26. jsParams?: JsParams
  27. closeTag?: string
  28. headers?: Array<WebHeader>
  29. onMessage?: (message: string) => void
  30. controller?: XWebController
  31. zoomAccess?: boolean
  32. _uuid?: string
  33. _uuidToHtml?: string
  34. }
  35. export class XWebHelper {
  36. private constructor() {
  37. }
  38. /**
  39. * 打开web页面,加载h5
  40. * @param params
  41. */
  42. public static openWeb(params: XWebParams): Promise<boolean> {
  43. if (params.onMessage) {
  44. params._uuid = XWebManager.addOnMessage(params.onMessage)
  45. }
  46. if (params.controller) {
  47. params._uuidToHtml = ToolsHelper.getUuid()
  48. params.controller.sendMessage = (msg) => {
  49. XWebManager.sendMessageToHtml(msg)
  50. }
  51. }
  52. if (params.jsParams && params.jsParams.obj) {
  53. if (!params._uuidToHtml) {
  54. params._uuidToHtml = ToolsHelper.getUuid()
  55. }
  56. XWebManager.objs.set(params._uuidToHtml, params.jsParams.obj)
  57. if (params.jsParams?.controller) {
  58. params.jsParams.controller.sendMessage = (msg) => {
  59. XWebManager.sendMessageToWeb(msg)
  60. }
  61. }
  62. }
  63. return new Promise((resolve) => {
  64. router.pushNamedRoute({
  65. name: 'XWebview',
  66. params: params
  67. }, router.RouterMode.Single).then(() => {
  68. LogHelper.info('Succeeded in jumping to the XWebview page.')
  69. resolve(true)
  70. }).catch((err: BusinessError) => {
  71. resolve(false)
  72. LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  73. ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  74. })
  75. })
  76. }
  77. public static refreshWeb() {
  78. SZYXLocalStorageHelper.storage.setOrCreate('refresh_web_base', new Date().getTime())
  79. }
  80. public static openPreview(params: XWebParams): Promise<boolean> {
  81. params.url =
  82. `https://mdtdemo.51trust.com/preview/onlinePreview?url=${baseEncode(params.url)}&watermarkTxt=${encodeURI(params.watermarkTxt ??
  83. '')}`
  84. return new Promise((resolve) => {
  85. router.pushNamedRoute({
  86. name: 'XWebview',
  87. params: params
  88. }, router.RouterMode.Single).then(() => {
  89. LogHelper.info('Succeeded in jumping to the XWebview page.')
  90. resolve(true)
  91. }).catch((err: BusinessError) => {
  92. resolve(false)
  93. LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  94. ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  95. })
  96. })
  97. }
  98. }