Action2Page.ets 2.6 KB
import ArrayList from '@ohos.util.ArrayList';
import { Action } from 'wdBean';
import { WDRouterPage } from './WDRouterPage';

interface HandleObject {
  handle: (action: Action) => (WDRouterPage | undefined)
  priority: number
}

export class Action2Page {
  private static handles: Record<string, ArrayList<HandleObject>> = {};

  static register(actionType: string, handle: (action: Action) => (WDRouterPage | undefined), priority: number = 0) {
    let handles = Action2Page.handles[actionType] ?? new ArrayList();
    let obj: HandleObject = {
      handle: handle,
      priority: priority
    };
    handles.add(obj);
    handles.sort((f, s) => {
      return f.priority - s.priority;
    })
    Action2Page.handles[actionType] = handles;
  }

  static get(action?: Action): WDRouterPage | undefined {
    if (!action || !action.type) {
      return undefined;
    }
    let handles = Action2Page.handles[action.type];
    if (!handles) {
      return undefined;
    }
    let page: WDRouterPage | undefined
    for (let i = 0; i < handles.length; i++) {
      let tmp = (handles[i] as HandleObject).handle(action);
      if (tmp) {
        page = tmp;
        break
      }
    }
    return page
  }
}

export function registerRouter() {
  // Action2Page.register("USER_LOGIN", (action: Action) => {
  //   return WDRouterPage.webLoginPage
  // })

  Action2Page.register("JUMP_DETAIL_PAGE", (action: Action) => {
    // if (action.params?.detailPageType == 2 || action.params?.detailPageType == 6) {
    //   return WDRouterPage.detailPlayLivePage
    // }
    if (action.params?.detailPageType == 7 || action.params?.detailPageType == 8) {
      return WDRouterPage.detailVideoListPage
    } else if (action.params?.detailPageType == 17) {
      return WDRouterPage.multiPictureDetailPage
    } else if (action.params?.detailPageType == 13) {
      return WDRouterPage.audioDetail
    }
    return WDRouterPage.detailPlayVodPage
  })

  Action2Page.register("JUMP_H5_BY_WEB_VIEW", (action) => {
    return WDRouterPage.defaultWebPage
  })

  Action2Page.register("JUMP_INNER_NEW_PAGE", (action) => {
    if (action.params?.pageID == "E_NEWSPAPER") {
      return WDRouterPage.eNewspaper
    } else if (action.params?.pageID == "MorningEveningPaper") {
      return WDRouterPage.morningEveningPaperPage
    } else if (action.params?.pageID == "IMAGE_TEXT_DETAIL") {
      return WDRouterPage.imageTextDetailPage
    } else if (action.params?.pageID == "BroadcastPage") {
      return WDRouterPage.broadcastPage
    } else if (action.params?.pageID == "LIVE_DETAILS_PAGER") {
      return WDRouterPage.detailPlayLivePage
    }
    return undefined
  })
}