AppInnerLinkGenerator.ets 3.38 KB
import { ContentDetailDTO, ContentDTO, FrontLinkObject } from 'wdBean/Index';
import { ContentType } from '../common/ContentType';

export class AppInnerLinkGenerator {

  private static DEEP_LINK_PREFIX = "rmrbapp://rmrb.app/openwith"

  static generateDeepLinkWithConent(content: ContentDetailDTO): string {

    return AppInnerLinkGenerator.generate(content.newsType, content.newsId +'', content.reLInfo?.relId, content.newsLinkUrl)
  }

  static generateDeepLinkWithProgram(content: ContentDTO) {

    return AppInnerLinkGenerator.generate(Number(content.objectType), content.objectId +'', content.relId
      , content.linkUrl, content.pageId, Number(content.objectLevel))
  }

  static generateDeepLinkWithFrontObjectLink(content: FrontLinkObject) {
    return AppInnerLinkGenerator.generate(Number(content.newsType), content.newsId +''
      , content.newsRelId + '', content.linkUrl, content.newsPageId, Number(content.newsLevel))
  }

  static generate(contentType: number, contentId?: string, relId?: string, link?: string, pageId?: string, objectLevel?: number): string {
    let deeplink = AppInnerLinkGenerator.DEEP_LINK_PREFIX

    let pubParam = `&contentId=${contentId ?? ""}&relId=${relId ?? ""}&skipType=1`

    let type: ContentType = Number(contentType)
    switch (type) {
      case ContentType.Video:
        deeplink += "?type=video&subType=vod_video"
        break
      case ContentType.Live:
        deeplink += "?type=live"
        break
      case ContentType.ImageText:
        if (link && link.length) {
          deeplink += "?type=article&subType=h5"
          deeplink += "&url=" + encodeURIComponent(link)
        } else {
          deeplink += "?type=article&subType=h5_template_article"
        }
        break
      case ContentType.DynamicImageText:
        deeplink += "?type=dynamic"
        break
      case ContentType.DynamicVideo:
        deeplink += "?type=dynamic"
        break
      case ContentType.Pictures:
        deeplink += "?type=picture"
        break
      case ContentType.Audio:
        deeplink += "?type=audio"
        break
      case ContentType.Ask:
        deeplink += "?type=ask"
        break
      case ContentType.Subject:
        if (objectLevel && objectLevel == 25) { // 早晚报专题
          deeplink += `?type=topic&subType=moring_evening_news&pageId=${pageId}&relId=${relId}&skipType=1`
          return deeplink
        }
        if (objectLevel && objectLevel == 22) { // 音频专题
          deeplink += `?type=topic&subType=audio_news&pageId=${pageId}&relId=${relId}&skipType=1`
          return deeplink
        }
        if (link) {
          deeplink += `?type=topic&subType=h5&pageId=${pageId}&relId=&url=${encodeURIComponent(link)}&skipType=1`
          return deeplink
        }
        break
      default:
        pubParam = ""
        break;
    }

    deeplink += pubParam
    return deeplink
  }

  static generateCreatorPage(creatorId: string): string {
    let deeplink = AppInnerLinkGenerator.DEEP_LINK_PREFIX
    deeplink += `?type=owner_page&creatorId=${creatorId}&skipType=1`
    return deeplink
  }

  static generateH5Topic(pageId:string, url:string) {
    // rmrbapp://rmrb.app/openwith?type=topic&subType=h5&pageId=124&relId=23&url=https%3A%2F%2Fbaidu.com&skipType=1
    let deeplink = AppInnerLinkGenerator.DEEP_LINK_PREFIX
    deeplink += `?type=topic&subType=h5&pageId=${pageId}&relId=&url=${encodeURIComponent(url)}&skipType=1`
    return deeplink
  }

}