"use strict";
const common_vendor = require("../../../common/vendor.js");
const components_ChatId = require("../../../components/ChatId.js");
const components_TimeFormatting = require("../../../components/TimeFormatting.js");
require("../../../components/picturesVideosMessages.js");
require("../../../components/audioMessages.js");
const components_request = require("../../../components/request.js");
const components_goEasyTool_tool = require("../../../components/goEasyTool/tool.js");
const textmessage = () => "./messageComponent/textmessage.js";
const customPKMessage = () => "./messageComponent/customPKMessage.js";
const InvitationComponents = () => "./moreMessageComponents/InvitationComponents.js";
const _sfc_main = {
  data() {
    return {
      userId: "",
      // 对方用户id
      nickname: "",
      // 对方用户昵称
      avatar: "",
      // 对方用户头像
      chatList: [],
      // 聊天记录
      userinfo: {},
      // 自己用户信息
      ButtonStatus: false,
      // 发送按钮状态
      MoreStatus: false,
      // 更多消息类型弹窗状态
      KeyboardHeight: 0,
      // 键盘高度
      content: "",
      // 输入框内容
      MoreItemStatus: null,
      // 更多消息类型弹窗点击属性
      ioshide: 0,
      // 隐藏ios键盘
      ElementPositioning: null,
      // 元素定位
      scrollviewheight: 0,
      // 滚动视图高度
      Elementheight: 0,
      // 元素高度
      Scrolling: false,
      // 滚动状态
      scrollTop: 0,
      // 滚动高度
      judgescrollTop: false,
      // 判断滚动高度
      onPage: false,
      // 是否在页面
      timer: null,
      // 定时器
      lastTimestamp: null,
      // 上一次刷新时间戳
      LastTime: null,
      // 最后聊天记录的时间戳
      MoreMessageList: [],
      Record: null,
      // 定位记录
      myitem: null,
      //直接发送自定义消息的我的选中主播
      youritem: null,
      //直接发送自定义消息的对方选中主播
      type: null,
      //直接发送自定义消息的消息类型
      popUpList: [
        {
          name: "相册",
          icon: "https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Album.png",
          type: "Album"
        },
        {
          name: "邀请",
          icon: "https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/chat_invite.png",
          type: "Invitation"
        }
      ]
      /// 更多消息类型弹窗列表
    };
  },
  onShow() {
    this.onPage = true;
    common_vendor.index.onKeyboardHeightChange((res) => {
      this.KeyboardHeight = res.height * 2 - this.ioshide;
    });
  },
  onHide() {
    this.onPage = false;
  },
  onLoad(options) {
    common_vendor.index.getStorage({
      key: "userinfo",
      success: (res) => {
        this.userinfo = res.data;
      }
    });
    this.userId = options.userId;
    this.nickname = options.nickname;
    this.avatar = options.avatar;
    this.type = options.type;
    try {
      this.myitem = JSON.parse(options.myitem);
      this.youritem = JSON.parse(options.youritem);
    } catch (e) {
    }
    if (this.type == "pk") {
      setTimeout(() => {
        this.sendCustomMessage();
      }, 500);
    }
    components_goEasyTool_tool.getConversationMessages(this.$goeasy, this.userId, null).then((res) => {
      this.chatList = res.map((item) => {
        item.id = components_ChatId.generateId();
        item.timestampStatus = this.checkInterval(item.timestamp);
        return item;
      });
      setTimeout(() => {
        if (this.chatList.length > 0) {
          this.ElementPositioning = this.chatList[this.chatList.length - 1].id;
          this.LastTime = this.chatList[0].timestamp;
        } else {
          common_vendor.index.showToast({
            title: "您和对方暂无聊天记录，快去聊天吧",
            icon: "none",
            duration: 2e3
          });
        }
      }, 300);
      const query = common_vendor.index.createSelectorQuery().in(this);
      query.select(".inputComponent").boundingClientRect((res2) => {
        this.Elementheight = res2.height * 2;
      }).exec();
    });
    components_goEasyTool_tool.messageRead(this.$goeasy, this.userId).then((res) => {
      common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:300", "已读对方的消息");
    });
    this.getIOSDeviceType();
    var im = this.$goeasy.im;
    im.on(common_vendor.jo.IM_EVENT.PRIVATE_MESSAGE_RECEIVED, this.onPrivateMessageReceived);
    im.on(common_vendor.jo.IM_EVENT.MESSAGE_READ, this.onMessageRead);
    this.getscrollviewheight();
  },
  methods: {
    //直接发送自定义消息
    sendCustomMessage() {
      components_request.request({
        url: "pk/createPkRecord",
        method: "POST",
        data: {
          pkIdA: this.youritem.id,
          pkIdB: this.myitem.id,
          userIdA: this.userId,
          userIdB: this.userinfo.id,
          pkTime: this.youritem.pkTime,
          pkNumber: this.youritem.pkNumber,
          anchorIdA: this.youritem.anchorId,
          anchorIdB: this.myitem.anchorId,
          anchorIconA: this.youritem.anchorIcon,
          anchorIconB: this.myitem.anchorIcon,
          piIdA: this.youritem.id,
          piIdB: this.myitem.id
        },
        userInfo: true
      }).then((res) => {
        if (res.code == 200) {
          const customData = {
            id: res.data.id,
            pkIdA: this.youritem.id,
            pkIdB: this.myitem.id
          };
          let order = {
            customData,
            link: "https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/pk.png",
            text: "PK邀请消息"
          };
          components_goEasyTool_tool.sendCustomMessage(
            this.$goeasy,
            this.type,
            this.userId,
            order,
            this.avatar,
            this.nickname
          ).then((res2) => {
            this.ElementPositioning = res2.id = components_ChatId.generateId();
            res2.timestampStatus = this.checkInterval(res2.timestamp);
            this.chatList.push(res2);
            common_vendor.index.showToast({
              title: "发送成功",
              icon: "none"
            });
          });
        } else {
          common_vendor.index.showToast({
            title: res.msg,
            icon: "none"
          });
        }
      });
    },
    //时间显示
    checkInterval(timestamp) {
      if (!this.lastTimestamp) {
        this.lastTimestamp = timestamp;
        return true;
      }
      const timeDiff = timestamp - this.lastTimestamp;
      if (timeDiff >= 3e5) {
        this.lastTimestamp = timestamp;
        return true;
      }
      return false;
    },
    //时间格式化
    TimeFormatting: components_TimeFormatting.TimeFormatting,
    //获取容器高度
    getscrollviewheight() {
      const queryheight = common_vendor.index.createSelectorQuery().in(this);
      queryheight.select(".scroll").boundingClientRect((res) => {
        this.scrollviewheight = res.height;
      }).exec();
    },
    //滚动事件
    onScroll(event) {
      if (!this.judgescrollTop) {
        this.scrollTop = event.detail.scrollTop;
        this.judgescrollTop = true;
      } else if (this.scrollTop - event.detail.scrollTop > this.scrollviewheight) {
        this.Scrolling = true;
      } else if (this.scrollTop - event.detail.scrollTop < this.scrollviewheight) {
        this.Scrolling = false;
      }
    },
    //获取更多聊天记录
    onScrollToUpper() {
      this.lastTimestamp = null;
      components_goEasyTool_tool.getConversationMessages(this.$goeasy, this.userId, this.LastTime).then((res) => {
        this.Record = this.chatList[0].id;
        this.MoreMessageList = res.map((item) => {
          item.id = components_ChatId.generateId();
          item.timestampStatus = this.checkInterval(item.timestamp);
          return item;
        });
      });
      setTimeout(() => {
        this.chatList = [...this.MoreMessageList, ...this.chatList];
        common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:418", "获取更多聊天记录", this.chatList);
        this.LastTime = this.chatList[0].timestamp;
        this.ElementPositioning = this.Record;
      }, 300);
    },
    //监听已读消息
    onMessageRead(message) {
      common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:425", "1已读消息", message);
    },
    //监听接受消息
    onPrivateMessageReceived(message) {
      if (!this.Scrolling) {
        this.ElementPositioning = message.id = components_ChatId.generateId();
        message.timestampStatus = this.checkInterval(message.timestamp);
        this.judgescrollTop = false;
      } else {
        message.id = components_ChatId.generateId();
        message.timestampStatus = this.checkInterval(message.timestamp);
      }
      this.chatList.push(message);
      if (this.onPage) {
        components_goEasyTool_tool.messageRead(this.$goeasy, this.userId).then((res) => {
          common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:440", "已读对方的消息");
        });
      }
    },
    //发送消息
    onSend() {
      if (this.content != "") {
        components_goEasyTool_tool.sendMessage(
          this.$goeasy,
          this.userId,
          this.content,
          this.avatar,
          this.nickname
        ).then((res) => {
          common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:454", "发送成功", res);
          this.ElementPositioning = res.id = components_ChatId.generateId();
          res.timestampStatus = this.checkInterval(res.timestamp);
          this.chatList.push(res);
          this.judgescrollTop = false;
        });
        this.content = "";
        this.ButtonStatus = false;
      }
    },
    //自定义消息发送返回处理
    refreshMessage(message) {
      this.MoreItemStatus = null;
      this.ElementPositioning = message.message.id = components_ChatId.generateId();
      message.timestampStatus = this.checkInterval(message.message.timestamp);
      this.chatList.push(message.message);
      this.judgescrollTop = false;
      this.MoreStatus = false;
    },
    //ios兼容
    getIOSDeviceType() {
      const systemInfo = common_vendor.index.getSystemInfoSync();
      const model = systemInfo.model;
      if (/iPhone X|iPhone11|iPhone12|iPhone13|iPhone14/i.test(model)) {
        if (/iPhone X|iPhone XS|iPhone 11 Pro/i.test(model)) {
          this.ioshide = 88;
        } else if (/iPhone 12|iPhone 13|iPhone 14/i.test(model)) {
          this.ioshide = 94;
        }
      }
    },
    //更多消息类型弹窗事件
    onMore(Status) {
      if (!this.Scrolling) {
        this.ElementPositioning = null;
        setTimeout(() => {
          this.ElementPositioning = this.chatList[this.chatList.length - 1].id;
        }, 100);
        this.judgescrollTop = false;
      }
      this.getscrollviewheight();
      this.MoreStatus = Status;
      const query = common_vendor.index.createSelectorQuery().in(this);
      query.select(".inputComponent").boundingClientRect((res) => {
        this.Elementheight = res.height * 2;
      }).exec();
    },
    //更多消息类型弹窗点击事件
    onMoreItem(type) {
      if (type == "Album") {
        this.onSendMedia();
      } else {
        this.MoreItemStatus = type;
      }
    },
    //发送图片，视频消息
    onSendMedia() {
      common_vendor.index.chooseMedia({
        count: 9,
        mediaType: ["image", "video"],
        sourceType: ["album", "camera"],
        maxDuration: 60,
        camera: "front",
        success(res) {
          common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:523", res.tempFiles);
          if (res.tempFiles.fileType == "image")
            ;
          else if (res.tempFiles.fileType == "video")
            ;
        }
      });
    },
    //发送音频消息
    onSendAudio() {
    },
    // 获取键盘高度
    onFocus(event) {
      if (!this.Scrolling) {
        this.ElementPositioning = null;
        setTimeout(() => {
          this.ElementPositioning = this.chatList[this.chatList.length - 1].id;
        }, 100);
        this.judgescrollTop = false;
      }
      this.getscrollviewheight();
      const query = common_vendor.index.createSelectorQuery().in(this);
      query.select(".inputComponent").boundingClientRect((res) => {
        this.Elementheight = res.height * 2;
      }).exec();
    },
    //键盘消失
    onBlur(event) {
      const query = common_vendor.index.createSelectorQuery().in(this);
      query.select(".inputComponent").boundingClientRect((res) => {
        this.Elementheight = res.height * 2;
      }).exec();
      this.getscrollviewheight();
    },
    //按钮切换
    SendInput(event) {
      const query = common_vendor.index.createSelectorQuery().in(this);
      query.select(".inputComponent").boundingClientRect((res) => {
        this.Elementheight = res.height * 2;
      }).exec();
      if (event.target.value != "") {
        this.ButtonStatus = true;
      } else {
        this.ButtonStatus = false;
      }
    },
    // 返回上一页
    onBack() {
      this.onPage = false;
      common_vendor.wx$1.navigateBack({
        delta: 1
      });
    }
  },
  components: {
    textmessage,
    InvitationComponents,
    customPKMessage
  }
};
if (!Array) {
  const _component_textmessage = common_vendor.resolveComponent("textmessage");
  const _component_customPKMessage = common_vendor.resolveComponent("customPKMessage");
  const _component_InvitationComponents = common_vendor.resolveComponent("InvitationComponents");
  (_component_textmessage + _component_customPKMessage + _component_InvitationComponents)();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
  return common_vendor.e({
    a: common_vendor.o(($event) => $options.onMore(false)),
    b: common_vendor.o((...args) => $options.onBack && $options.onBack(...args)),
    c: common_vendor.t($data.nickname),
    d: common_vendor.o(($event) => $options.onMore(false)),
    e: common_vendor.f($data.chatList, (item, index, i0) => {
      return common_vendor.e({
        a: item.timestampStatus
      }, item.timestampStatus ? {
        b: common_vendor.t($options.TimeFormatting(item.timestamp))
      } : {}, {
        c: item.senderId == $data.userId
      }, item.senderId == $data.userId ? common_vendor.e({
        d: $data.avatar,
        e: item.type == "text"
      }, item.type == "text" ? {
        f: "f4b42ac4-0-" + i0,
        g: common_vendor.p({
          messagetext: item.payload.text
        })
      } : {}, {
        h: item.type == "pk"
      }, item.type == "pk" ? {
        i: "f4b42ac4-1-" + i0,
        j: common_vendor.p({
          message: item.payload
        })
      } : {}) : {}, {
        k: item.senderId == $data.userinfo.id
      }, item.senderId == $data.userinfo.id ? common_vendor.e({
        l: $data.userinfo.headerIcon,
        m: item.type == "text"
      }, item.type == "text" ? {
        n: "f4b42ac4-2-" + i0,
        o: common_vendor.p({
          messagetext: item.payload.text
        })
      } : {}, {
        p: item.type == "pk"
      }, item.type == "pk" ? {
        q: "f4b42ac4-3-" + i0,
        r: common_vendor.p({
          message: item.payload
        })
      } : {}) : {}, {
        s: item.id,
        t: item.id
      });
    }),
    f: common_vendor.o((...args) => $options.onScrollToUpper && $options.onScrollToUpper(...args)),
    g: $data.ElementPositioning,
    h: common_vendor.o((...args) => $options.onScroll && $options.onScroll(...args)),
    i: common_vendor.o(($event) => $options.onMore(false)),
    j: $data.MoreStatus || $data.KeyboardHeight != 0 || $data.Elementheight != 0 ? $data.MoreStatus ? 650 + $data.Elementheight + "rpx" : $data.KeyboardHeight != 0 ? $data.KeyboardHeight + $data.Elementheight + "rpx" : $data.Elementheight + "rpx" : $data.Elementheight + "rpx",
    k: common_vendor.o([($event) => $data.content = $event.detail.value, (...args) => $options.SendInput && $options.SendInput(...args)]),
    l: common_vendor.o((...args) => $options.onFocus && $options.onFocus(...args)),
    m: common_vendor.o((...args) => $options.onBlur && $options.onBlur(...args)),
    n: $data.content,
    o: !$data.ButtonStatus
  }, !$data.ButtonStatus ? {
    p: common_vendor.o(($event) => $options.onMore(!$data.MoreStatus))
  } : {}, {
    q: $data.ButtonStatus
  }, $data.ButtonStatus ? {
    r: common_vendor.o((...args) => $options.onSend && $options.onSend(...args))
  } : {}, {
    s: $data.MoreStatus || $data.KeyboardHeight > 300 ? $data.MoreStatus ? "650rpx" : $data.KeyboardHeight > 300 ? $data.KeyboardHeight + "rpx" : "0" : "0",
    t: common_vendor.f($data.popUpList, (item, index, i0) => {
      return {
        a: item.icon,
        b: common_vendor.t(item.name),
        c: common_vendor.o(($event) => $options.onMoreItem(item.type), index),
        d: index
      };
    }),
    v: $data.MoreStatus || $data.KeyboardHeight > 300 ? $data.MoreStatus ? "0" : $data.KeyboardHeight > 300 ? "0" : $data.KeyboardHeight + "rpx" : "-650rpx",
    w: $data.MoreItemStatus == "Invitation"
  }, $data.MoreItemStatus == "Invitation" ? {
    x: common_vendor.o($options.refreshMessage),
    y: common_vendor.p({
      oppositeId: $data.userId,
      myId: $data.userinfo.id,
      avatar: $data.avatar,
      nickname: $data.nickname
    })
  } : {}, {
    z: common_vendor.o(() => {
    }),
    A: $data.MoreItemStatus == null ? "-1000rpx" : "0",
    B: common_vendor.o(($event) => $options.onMoreItem(null)),
    C: $data.MoreItemStatus == null ? "100vh" : "0"
  });
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-f4b42ac4"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages/index/chat/chat.js.map
