/*!
 * 
		SAP UI development toolkit for HTML5 (SAPUI5)
		(c) Copyright 2009-2015 SAP SE. All rights reserved
	
 */
sap.ui.define([
    "sap/ui/base/Object"
], function (BaseObject) {
    "use strict";

    /**
     * Base class for the CollaborationHelpers
     * @namespace
     * @since 1.108
     * @alias module:sap/suite/ui/commons/collaboration/BaseHelperService
     * @public
     */
    var BaseHelperService = BaseObject.extend("sap.suite.ui.commons.collaboration.BaseHelperService", {
        constructor: function (oProviderConfig) {
            this._providerConfig = oProviderConfig;
        }
    });

    /**
     * Method that returns the Provider configuration settings
     * @returns {Object} Configuration settings
     * @private
     * @ui5-restricted
     * @experimental Since 1.108
     */
    BaseHelperService.prototype.getProviderConfig = function() {
        return this._providerConfig;
    };

    /**
     * Provides a list of all collaboration options
     * @param {object} oParams Optional argument in case the consumer wants to influence the options, otherwise pass as undefined
     * @param {boolean} oParams.isShareAsLinkEnabled Allow the 'Share as Chat' option to be available in case Microsoft Teams is the collaboration provider
     * @param {boolean} oParams.isShareAsTabEnabled Allow the 'Share as Tab' option to be available in case Microsoft Teams is the collaboration provider
     * @param {boolean} oParams.isShareAsCardEnabled Allow the 'Share as Card' option to be available in case Microsoft Teams is the collaboration provider
     * @returns {array} Array of available options
     * @public
     */
    BaseHelperService.prototype.getOptions = function(oParams) {
        return [];
    };

    /**
     * Triggers the 'Share' operation
     *
     * @param {Object} oOption JSON object of collaboration option that is clicked
     * @param {Object} oParams Parameter object which contains the information to be shared
     * @param {string} oParams.url URL of the application which needs to be shared
     * @param {string} oParams.appTitle Title of the application which needs to be used during the integration
     * @param {string} oParams.subTitle Title of the object page which needs to be used during the integration
     * @param {boolean} oParams.minifyUrlForChat Set the flag to 'true' to minimize the URL
     * @param {Object} oParams.cardManifest Adaptive card json for a given instance of the object page used for the ‘Share as Card’ option
     * @param {string} oParams.cardId ID of the card that needs to be stored and is constructed from SemanticObject_Action
     * @returns {void}
     * @public
     */
    BaseHelperService.prototype.share = function(oOption, oParams) {
    };

    /**
     * Checks if collaboration with contacts is supported in Microsoft Teams
     *
     * @returns {boolean} A Boolean that determines whether or not the collaboration with contacts is supported in Microsoft Teams
     * @public
     */
    BaseHelperService.prototype.isContactsCollaborationSupported = function () {
        return false;
    };

	/**
     * Enables the Microsoft Teams collaboration functionality by providing a contact quick view with the options to start a message, audio call or video call
     * @param {string} sEmail Provides the email of the contact to be used for the communication using Microsoft Teams
     * @returns {object} Instance of the contact quick view providing the data for the collaboration functionality
     * @public
     */
    BaseHelperService.prototype.enableMinimalContactsCollaboration = function (sEmail) {
        return {};
    };

	/**
     * Provides the Microsoft Teams collaboration options for the contact quick view
     * @returns {object} The Microsoft Teams collaboration options
     * @public
     */
    BaseHelperService.prototype.getTeamsContactCollabOptions = function () {
        return {};
    };

    /**
     * Checks whether the feature flag is enabled and executes the code for the Adaptive Card Generation accordingly
     * @returns {boolean} If set to true, Adaptive Card Generation is enabled
     * @public
     */
    BaseHelperService.prototype.isFeatureFlagEnabled = function () {
        return false;
    };

    return BaseHelperService;
});
