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

  private 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
  }


}