import { ChatConfigurator, ExtensionsDataSource } from "../../shared/framework";
import { ExtensionConstants } from "../ExtensionConstants";
import { StickerConfiguration, StickerConfigurationInterface } from "./StickerConfiguration";
import { StickersExtensionDecorator } from "./StickersExtensionDecorator";

export class StickersExtension extends ExtensionsDataSource {
  //Configuration prop taken as optional field in constructor
  configuration?: StickerConfigurationInterface;

  constructor(stickerConfiguration?: StickerConfigurationInterface) {
    super();
    this.configuration = new StickerConfiguration({
      ...stickerConfiguration,
    });
  }

  //override addExtension method from ExtensionsDataSource interface
  override addExtension(): void {
    ChatConfigurator.enable((dataSource) => {
      return new StickersExtensionDecorator({
        dataSource,
        configration: this.configuration,
      });
    });
  }

  //override getExtensionId method from ExtensionsDataSource interface
  override getExtensionId(): string {
    return ExtensionConstants.stickers;
  }
}
