import { defineComponent, ref, computed, unref, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, toDisplayString, createCommentVNode } from "vue";
import TUICore, { TUIConstants } from "@tencentcloud/tui-core";
import TUIChatEngine from "@tencentcloud/chat-uikit-engine";
import "../../../adapter-vue.mjs";
import { JSONToObject } from "../../../utils/type-check.mjs";
import Icon from "../../../components/common/Icon.vue.mjs";
import callVideoSVG from "../../../assets/icon/call-video.svg.mjs";
import callVoiceSVG from "../../../assets/icon/call-voice.svg.mjs";
import OfflinePushInfoManager from "../../../components/TUIChat/offlinePushInfoManager/index.mjs";
import { PUSH_SCENE } from "../../../components/TUIChat/offlinePushInfoManager/const.mjs";
const _hoisted_1 = { class: "call-content" };
const _sfc_main = /* @__PURE__ */ defineComponent({
  __name: "message-call-c2c",
  props: {
    message: {
      type: Object,
      default: () => ({})
    },
    signalingInfo: {
      type: Object,
      default: () => ({})
    },
    customContent: {
      type: Object,
      default: () => ({})
    }
  },
  setup(__props) {
    const props = __props;
    const TYPES = ref(TUIChatEngine.TYPES);
    const isCallMessage = computed(() => props.signalingInfo != null);
    const callInfo = computed(() => {
      var _a, _b;
      const callType = (_b = JSONToObject((_a = props.signalingInfo) == null ? void 0 : _a.data)) == null ? void 0 : _b.call_type;
      switch (callType) {
        case 1:
          return {
            type: 1,
            icon: callVoiceSVG
          };
        case 2:
          return {
            type: 2,
            icon: callVideoSVG
          };
      }
      return {
        type: 0,
        icon: ""
      };
    });
    const conversationType = computed(() => {
      var _a;
      return (_a = props.message) == null ? void 0 : _a.conversationType;
    });
    const custom = computed(() => {
      var _a;
      return (_a = props.customContent) == null ? void 0 : _a.custom;
    });
    const callAgain = () => {
      var _a, _b, _c, _d;
      if (conversationType.value === TUIChatEngine.TYPES.CONV_C2C) {
        const userID = ((_a = props.message) == null ? void 0 : _a.flow) === "out" ? (_b = props.message) == null ? void 0 : _b.to : (_c = props.message) == null ? void 0 : _c.from;
        TUICore.callService({
          serviceName: TUIConstants.TUICalling.SERVICE.NAME,
          method: TUIConstants.TUICalling.SERVICE.METHOD.START_CALL,
          params: {
            userIDList: [userID],
            type: (_d = callInfo == null ? void 0 : callInfo.value) == null ? void 0 : _d.type,
            callParams: {
              offlinePushInfo: OfflinePushInfoManager.getOfflinePushInfo(PUSH_SCENE.CALL)
            }
          }
        });
      }
    };
    return (_ctx, _cache) => {
      return unref(isCallMessage) && unref(conversationType) === unref(TYPES).CONV_C2C ? (openBlock(), createElementBlock("div", {
        key: 0,
        class: normalizeClass(["call", ["call-" + unref(conversationType), __props.message.flow === "out" && "call-reverse"]]),
        onClick: callAgain
      }, [
        createElementVNode("div", {
          class: normalizeClass(["icon", __props.message.flow === "out" && unref(callInfo).type === 2 && "icon-reverse"])
        }, [
          createVNode(Icon, {
            file: unref(callInfo).icon
          }, null, 8, ["file"])
        ], 2),
        createElementVNode("span", _hoisted_1, toDisplayString(unref(custom)), 1)
      ], 2)) : createCommentVNode("", true);
    };
  }
});
export {
  _sfc_main as default
};
