logic.ts 1013 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { login as _login } from './wx/open-api'
  2. import { Get } from './request/method';
  3. const TOKEN: Pick<WechatMiniprogram.SetStorageOption, 'key' | 'data' | 'encrypt'> = {
  4. key: 'token',
  5. encrypt: true,
  6. data: '',
  7. };
  8. export function token() {
  9. return TOKEN.data || wx.getStorageSync(TOKEN.key)
  10. }
  11. export async function login(force?: boolean) {
  12. const _token = force ? '' : await wx.checkSession().then(() => token(), () => '');
  13. if (_token) return _token;
  14. const show = setTimeout(() => wx.showLoading({ title: '登录中' }), 300);
  15. try {
  16. const { code } = await _login();
  17. TOKEN.data = await Get<string, { access_token: string }>(`/authManage/login`, {
  18. params: { code },
  19. transform({ data }) {
  20. return data.access_token
  21. },
  22. shareRequest: !force,
  23. meta: { ignoreToken: true }
  24. });
  25. wx.setStorageSync(TOKEN.key, TOKEN.data);
  26. return TOKEN.data;
  27. } catch (error) {
  28. throw error
  29. } finally {
  30. clearTimeout(show);
  31. wx.hideLoading();
  32. }
  33. }