AppInnerLinkGenerator.ets 2.63 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)
  }

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

  static generate(contentType: number, contentId?: string, relId?: string, link?: string): 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
      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
  }

}