import { ServeFindUserEmoticon, ServeUploadEmoticon } from "@/api/emoticon";

import { ServeCollectEmoticon } from "@/api/chat";

import { Notification } from "element-ui";

export default {
  state: {
    items: [
    ],
  },
  mutations: {
    // 加载用户表情包
    LOAD_USER_EMOTICON(state) {
      // TODO 隐藏
      return;
      ServeFindUserEmoticon().then((res) => {
        if (res.code == 200) {
          const { collect_emoticon, sys_emoticon } = res.data;

          state.items = state.items.slice(0, 2);

          // 用户收藏的系统表情包
          state.items[1].list = collect_emoticon;

          // 用户添加的系统表情包
          state.items.push(...sys_emoticon);
        }
      });
    },

    // 收藏用户表情包
    SAVE_USER_EMOTICON(state, resoure) {
      ServeCollectEmoticon({
        record_id: resoure.record_id,
      })
        .then((res) => {
          if (res.code == 200) {
            Notification({
              title: "收藏提示",
              message: "表情包收藏成功...",
              type: "success",
            });

            this.commit("LOAD_USER_EMOTICON");
          }
        })
        .catch(() => {
          Notification({
            title: "收藏提示",
            message: "表情包收藏失败...",
            type: "warning",
          });
        });
    },

    // 自定义上传用户表情包
    UPLOAD_USER_EMOTICON(state, resoure) {
      let fileData = new FormData();
      fileData.append("emoticon", resoure.file);
      ServeUploadEmoticon(fileData)
        .then((res) => {
          if (res.code == 200) {
            state.items[1].list.push(res.data);
          }
        })
        .catch(() => {
          Notification({
            message: "网络异常请稍后再试...",
            type: "error",
            duration: 3000,
          });
        });
    },

    // 添加系统表情包
    APPEND_SYS_EMOTICON(state, resoure) {
      state.items.push(resoure);
    },

    // 移除系统表情包
    REMOVE_SYS_EMOTICON(state, resoure) {
      for (let i in state.items) {
        if (state.items[i].emoticon_id === resoure.emoticon_id) {
          state.items.splice(i, 1);
          break;
        }
      }
    },
  },
};
