WDShareBase.ets 1.16 KB
import { ShareContent, ShareContentType, ShareScene, ShareType } from './Constant'
import { HashMap } from '@kit.ArkTS'
import { WDShareInterface } from './WDShareInterface'
import { WDSystemShare } from './System/WDSystemShare'
import { common } from '@kit.AbilityKit'

export interface WDShareObject {
  to: ShareType,
  scene: ShareScene,
  type: ShareContentType,
  obj: ShareContent
}

export class WDShareBase {

  public gotContextFunc?: () => common.UIAbilityContext

  private static instance?: WDShareBase
  static getInstance() : WDShareBase {
    if (!WDShareBase.instance) {
      WDShareBase.instance = new WDShareBase()
      WDShareBase.instance.register()
    }
    return WDShareBase.instance
  }

  private handles: HashMap<ShareType, WDShareInterface> = new HashMap()

  register() {
    this.handles.set(ShareType.System, new WDSystemShare())
  }

  share(obj: WDShareObject) : null | Promise<string> {
    let shareHandler: WDShareInterface = this.handles.get(obj.to)
    if (shareHandler) {
      let context = this.gotContextFunc && this.gotContextFunc()
      return shareHandler.shareContent(obj.scene, obj.obj, obj.type, context)
    }
    return null
  }




}