import { injectNotifier } from '@dvn/alaca/global/notifier';
import CalendarUtils from '@dvn/core/util/calendar';
import { Component, h, Host, Listen, Prop, State } from '@stencil/core';
import { createMentornityApiInstance } from '../../../../mentornity-js-client';
import { MentornityBridgeApi } from '../../api/mentorinty-bridge-api';
import { mentornityApiEndpoint } from '../../constants/env';
import { getSessionDetails } from '../../util/session';
import { getPairSelectionParameters, getPairSelectionViewConfig, getUserDetailDialogParams, getUserDetailDialogViewConfig } from './wrapper-util';
export class MentornityPairsOverviewWrapper {
  onAction(event) {
    const action = event.detail;
    if (action.name === 'send-message') {
      // called when mentor clicks the "Send Message" button from the mentor selection card
      window.dispatchEvent(new CustomEvent('dvn.atama-pairs.send-message', {
        detail: {
          user: action.params.item,
        }
      }));
    }
    if (action.name === 'view-details') {
      // called when mentor clicks the "Send Message" button from the mentor selection card
      this.viewUserDetailDialogActionData = action;
    }
  }
  componentWillLoad() {
    const { language, timeZone } = this;
    CalendarUtils.setLocale(language);
    CalendarUtils.setTimeZone(timeZone);
    const { context, headers } = getSessionDetails();
    this.mentornityBridgeApi = new MentornityBridgeApi(mentornityApiEndpoint, context, headers);
    createMentornityApiInstance(mentornityApiEndpoint, headers)
      .getOrganisationConfig(context.organisationId).then((response) => this.organisationConfig = response);
  }
  render() {
    const { context } = getSessionDetails();
    const { language, mentornityBridgeApi, organisationConfig, viewUserDetailDialogActionData } = this;
    const pairSelectionViewConfig = getPairSelectionViewConfig(language, organisationConfig);
    if (!pairSelectionViewConfig) {
      return (h("div", { class: "d-flex justify-content-center pt-3" },
        h("dvn-progress", { indefinite: true })));
    }
    return (h(Host, { style: { display: 'block' } },
      h("mentornity-root-wrapper", null,
        h("dvn-app-view-atama-member-pair-selection-view", { apiAtama: mentornityBridgeApi, apiUye: mentornityBridgeApi, notifier: this.notifier, params: getPairSelectionParameters(), view: pairSelectionViewConfig }),
        viewUserDetailDialogActionData &&
          h("dvn-dialog", { raw: true, shown: true, onDismiss: () => this.viewUserDetailDialogActionData = undefined },
            h("dvn-app-view-detail-view-card", { apiData: mentornityBridgeApi, id: "user-page", params: getUserDetailDialogParams(viewUserDetailDialogActionData), view: getUserDetailDialogViewConfig(context, organisationConfig) })))));
  }
  static get is() { return "mentornity-pair-selection-wrapper"; }
  static get properties() { return {
    "notifier": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "Notifier",
        "resolved": "Notifier",
        "references": {
          "Notifier": {
            "location": "import",
            "path": "@dvn/alaca/global/notifier/models"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": "Used to show notification and passed by the\ncontext injector when injectNotifier() called in this file."
      }
    },
    "language": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": "Used to show proper translations, passed by the parent component."
      },
      "attribute": "language",
      "reflect": false
    },
    "timeZone": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      },
      "attribute": "time-zone",
      "reflect": false
    }
  }; }
  static get states() { return {
    "organisationConfig": {},
    "viewUserDetailDialogActionData": {}
  }; }
  static get listeners() { return [{
      "name": "action",
      "method": "onAction",
      "target": undefined,
      "capture": false,
      "passive": false
    }]; }
}
injectNotifier(MentornityPairsOverviewWrapper);
