/**
 * @flow
 * SocialParameters representation wrapper
 */
import type DynamicLink from './DynamicLink';
import type { NativeSocialParameters } from './types';

export default class SocialParameters {
  _descriptionText: string | void;
  _imageUrl: string | void;
  _link: DynamicLink;
  _title: string | void;

  constructor(link: DynamicLink) {
    this._link = link;
  }

  /**
   *
   * @param descriptionText
   * @returns {DynamicLink}
   */
  setDescriptionText(descriptionText: string): DynamicLink {
    this._descriptionText = descriptionText;
    return this._link;
  }

  /**
   *
   * @param imageUrl
   * @returns {DynamicLink}
   */
  setImageUrl(imageUrl: string): DynamicLink {
    this._imageUrl = imageUrl;
    return this._link;
  }

  /**
   *
   * @param title
   * @returns {DynamicLink}
   */
  setTitle(title: string): DynamicLink {
    this._title = title;
    return this._link;
  }

  build(): NativeSocialParameters {
    return {
      descriptionText: this._descriptionText,
      imageUrl: this._imageUrl,
      title: this._title,
    };
  }
}
