import BaseStore from '@src/stores/base';
import * as querystring from 'querystring';

const SENTENCE_TRAIL = 'SENTENCE_TRAIL';

export default class UserStore extends BaseStore {
  initState() {
    const { token } = querystring.parse(window.location.search.replace('?', ''));
    if (token) {
      this.setToken(token);
    }
    const sentenceTrail = this.getLocal(SENTENCE_TRAIL);
    return { login: !!token, sentenceTrail };
  }

  /**
   * 设置长难句试用
   */
  sentenceTrail() {
    this.saveLocal(SENTENCE_TRAIL, true);
    this.setState({ sentenceTrail: true });
  }

  /**
   * 清除长难句试用
   */
  clearSentenceTrail() {
    this.removeLocal(SENTENCE_TRAIL);
    this.setState({ sentenceTrail: null });
  }

  /**
   * 验证token
   */
  token() {
    return this.apiPost('/auth/token');
  }

  /**
   * 登陆
   * @param {*} mobile 手机号
   * @param {*} mobileVerifyCode 手机验证码
   * @param {*} inviteCode 邀请人手机/邀请码
   */
  login(mobile, mobileVerifyCode, inviteCode) {
    return this.apiPost('/auth/login', { mobile, mobileVerifyCode, inviteCode });
  }

  loginWechat(code) {
    return this.apiGet('/auth/wechat_pc', { code }).then(() => {
      this.setState({ login: true });
    });
  }

  /**
   * 登出
   */
  logout() {
    return this.apiPost('/auth/logout');
  }

  /**
   * 绑定手机
   * @param {*} mobile 手机号
   * @param {*} mobileVerifyCode 手机验证码
   * @param {*} inviteCode 邀请人手机/邀请码
   */
  bind(mobile, mobileVerifyCode, inviteCode) {
    return this.apiPost('/auth/bind', { mobile, mobileVerifyCode, inviteCode });
  }

  /**
   * 查询邀请码对应账号
   * @param {*} code 邀请码
   */
  validInviteCode(code) {
    return this.apiGet('/auth/valid/invite_code', { code });
  }

  /**
   * 查询手机对应账号
   */
  validMobile(mobile) {
    return this.apiGet('/auth/valid/mobile', { mobile });
  }
}

export const User = new UserStore({ key: 'user', local: true });