
import GoEasy from 'goeasy'
//IM登录
export function goEasylogin(goeasy, id, avatar, nickname) {
  console.log("`````````````````goEasylogin`````````````````", id, avatar, nickname);
  goeasy.connect({
    id: id, //im必填，最大长度60字符
    data: { "avatar": avatar, "nickname": nickname }, //必须是一个对象，im必填，最大长度300字符，显示在会话列表中
    onSuccess: function () {  //连接成功
      console.log("IM连接成功") //连接成功
    },
    onFailed: function (error) { //连接失败
      console.log("IM连接失败, code:" + error.code + ",error:" + error.content);
    },
    onProgress: function (attempts) { //连接或自动重连中
      console.log("IM连接或自动重连中", attempts);
    }
  });
}

//退出登录
export function goEasylogout(goeasy) {
  goeasy.disconnect({
    onSuccess: function () {
      console.log("IM断开成功")
    },
    onFailed: function (error) {
      console.log("IM断开失败, code:" + error.code + ",error:" + error.content);
    }
  });
}

//获取会话列表
export function getConversationList(goeasy) {
  return new Promise((resolve, reject) => {
    var im = goeasy.im;
    im.latestConversations({
      onSuccess: function (result) {
        console.log("获取会话列表成功", result);
        resolve(result.content);
      },
      onFailed: function (error) { //获取失败
        console.log("获取会话列表失败, code:" + error.code + " content:" + error.content);
      },
    });
  });
}

//获取指定会话的消息列表
export function getConversationMessages(goeasy, userid, imestamp) {
  return new Promise((resolve, reject) => {
    var im = goeasy.im;
    im.history({
      id: userid, //用户id或者群id
      type: GoEasy.IM_SCENE.PRIVATE, //群聊：GoEasy.IM_SCENE.GROUP, 客服：GoEasy.IM_SCENE.CS,
      lastTimestamp: imestamp, //上次查询结果里最后一条消息的时间戳，首次查询传入null即可
      limit: 30, //可选项，返回的消息条数，默认为10条，最多30条
      onSuccess: function (result) {
        console.log("获取消息列表成功", result);
        resolve(result.content);
      }, //查询成功
      onFailed: function (error) {
        console.log("获取消息列表失败, code:" + error.code + " content:" + error.content);
      }, //查询失败
    });
  });
}

//发送消息
export function sendMessage(goeasy, userid, message, avatar, nickname) {
  return new Promise((resolve, reject) => {
    var im = goeasy.im;
    //创建消息, 内容最长不超过3K，可以发送字符串，对象和json格式字符串
    let textMessage = im.createTextMessage({
      text: message, //消息内容
      to: {
        type: GoEasy.IM_SCENE.PRIVATE,   //私聊还是群聊，群聊为GoEasy.IM_SCENE.GROUP
        id: userid, //接收方用户id
        data: { "avatar": avatar, "nickname": nickname } //接收方用户扩展数据, 任意格式的字符串或者对象，用于更新会话列表conversation.data
      }
    });

    //发送消息
    im.sendMessage({
      message: textMessage,
      onSuccess: function () { //发送成功
        resolve(textMessage);
      },
      onFailed: function (error) { //发送失败
        console.log('发送消息失败，code:' + error.code + ' ,error ' + error.content);
        reject(error);
      }
    });

  });
}

//消息已读
export function messageRead(goeasy, userid) {
  return new Promise((resolve, reject) => {
    var im = goeasy.im;
    im.markMessageAsRead({
      id: userid,
      type: GoEasy.IM_SCENE.PRIVATE, //群聊：GoEasy.IM_SCENE.GROUP, 客服消息：GoEasy.IM_SCENE.CS,
      onSuccess: function () {
        resolve()
      },
      onFailed: function (error) {
        console.log('标记私聊已读失败', error);
      },
    });
  });
}
//发送自定义消息
export function sendCustomMessage(goeasy, type, userid, order, avatar, nickname) {
  return new Promise((resolve, reject) => {
    var im = goeasy.im;

    // 创建自定义消息
    var customMessage = im.createCustomMessage({
      type: type,  //字符串，可以任意自定义类型
      payload: order,
      to: {
        type: GoEasy.IM_SCENE.PRIVATE,   //私聊还是群聊，群聊为GoEasy.IM_SCENE.GROUP
        id: userid, //接收方用户id
        data: { "avatar": avatar, "nickname": nickname } //好友扩展数据, 任意格式的字符串或者对象，用于更新会话列表conversation.data
      }
    })

    // 发自定义消息
    im.sendMessage({
      message: customMessage,
      onSuccess: function () {  //发送成功
        resolve(customMessage);
      },
      onFailed: function (error) { //发送失败
        console.log('Failed to send message，code:' + error.code + ',error' + error.content);
      }
    });
  });
}

//置顶会话
export function conversationTop(goeasy, conversation, top) {
  return new Promise((resolve, reject) => {
    var im = goeasy.im;
    im.topConversation({
      conversation: conversation,
      top:top ,//或者 false
      onSuccess: function () {
        resolve('成功');
      },
      onFailed: function (error) {
          console.log( '失败：', error);
      },
  });
  });
}
//删除会话
export function conversationDelete(goeasy, conversation) {
  return new Promise((resolve, reject) => {
    var im = goeasy.im;
    im.removeConversation({
      conversation: conversation,
      onSuccess: function () {
        resolve('删除会话成功');
      },
      onFailed: function (error) {
          console.log(error);
      },
  });
  });
}