import { NativeAdDispatch } from './NativeAdDispatch';

class NativeAdViewHolder {
  private readonly _adViews = new Map<string, NativeAdDispatch>();

  private static _instance: NativeAdViewHolder;

  public static getInstance(): NativeAdViewHolder {
    if (!NativeAdViewHolder._instance) {
      NativeAdViewHolder._instance = new NativeAdViewHolder();
    }
    return NativeAdViewHolder._instance;
  }

  public registerAdView(adId: string, adDispatch: NativeAdDispatch) {
    this._adViews.set(adId, adDispatch);
  }

  public unregisterAdView(adId: string) {
    this._adViews.delete(adId);
  }

  public getAdView(adId: string) {
    return this._adViews.get(adId);
  }
}

export const nativeAdViewHolderInstance = NativeAdViewHolder.getInstance();
