WDShareBase.ets 1016 Bytes
import { ShareContent, ShareContentType, ShareScene, ShareType } from './Constant'
import { HashMap } from '@kit.ArkTS'
import { WDShareInterface } from './WDShareInterface'
import { WDSystemShare } from './System/WDSystemShare'

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

export class WDShareBase {

  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) {
      return shareHandler.shareContent(obj.scene, obj.obj, obj.type)
    }
    return null
  }




}