package core

import "github.com/goWxHook/goWxHook/utils/json"

type GetLoginUserInfoResponseData struct {
	Account        string `json:"account"`
	Avatar         string `json:"avatar"`
	Nickname       string `json:"nickname"`
	Wxid           string `json:"wxid"`
	Phone          string `json:"phone"`
	Pid            int    `json:"pid"`
	UnreadMsgCount int    `json:"unread_msg_count"`
	WxUserDir      string `json:"wx_user_dir"`
}
type GetLoginUserInfoResponse struct {
	Data GetLoginUserInfoResponseData `json:"data"`
	Type int                          `json:"type"`
}

// GetLoginUserInfo 获取登录用户信息
func (w *WxApi) GetLoginUserInfo() (*GetLoginUserInfoResponseData, error) {
	resp, err := w.internalCall(MtDataOwnerMsg, 10, MtDataOwnerMsg, nil, map[string]interface{}{})
	if err != nil {
		return nil, err
	}
	var rdata GetLoginUserInfoResponse
	debugOutput(resp)
	err = json.Unmarshal([]byte(resp), &rdata)
	if err != nil {
		return nil, WxError{-1, err.Error()}
	}
	return &rdata.Data, nil
}

type RefreshLoginQrcodeResponse struct {
	Data RefreshLoginQrCodeResponseData `json:"data"`
	Type int                            `json:"type"`
}

type RefreshLoginQrCodeResponseData struct {
	File   string `json:"file"`
	Qrcode string `json:"qrcode"`
	Pid    int    `json:"pid"`
}

// RefreshLoginQrCode 刷新登录二维码
func (w *WxApi) RefreshLoginQrCode() (*RefreshLoginQrCodeResponseData, error) {
	resp, err := w.internalCall(MtRefreshLoginQrcode, 10, MtRefreshLoginQrcode, map[string]interface{}{}, nil)
	if err != nil {
		return nil, err
	}
	var rdata RefreshLoginQrcodeResponse
	debugOutput(resp)
	err = json.Unmarshal([]byte(resp), &rdata)
	if err != nil {
		return nil, WxError{-1, err.Error()}
	}
	return &rdata.Data, nil
}

// WxUserLogout 注销登录
func (w *WxApi) WxUserLogout() error {
	_, err := w.internalCall(0, 10, MtLogoutMsg, nil, map[string]interface{}{})
	return err
}

// WxExit 退出微信
func (w *WxApi) WxExit() error {
	_, err := w.internalCall(0, 10, MtExitMsg, nil, map[string]interface{}{})
	return err
}
