UNPKG

press-next

Version:

Vue3 组件库,支持 Composition API

49 lines (42 loc) 1.49 kB
import { loginMp } from '../../mp-login/mp-login'; import { LoginMpType } from '../../mp-login/types'; import { ErrorCode } from '../types'; import type { IInterceptor } from '../types'; /** * 处理小程序登录 */ export class MpLoginInterceptor implements IInterceptor { // 要登录的小程序appid public appId = ''; // 登录的平台类型 public loginMpType: LoginMpType = LoginMpType.LoginMpWeixin; public options: { getGlobalEBus: (() => any), showLoadingWhenLoginInMp?: boolean; isRedirectAfterLogin?: boolean; notRefreshInMp?: boolean; qqAppIdInWxMini?: string; } = { getGlobalEBus: () => {}, showLoadingWhenLoginInMp: false, isRedirectAfterLogin: false, notRefreshInMp: false, qqAppIdInWxMini: '', }; async interceptor(param: any, extra: any): Promise<[boolean, any]> { if (param.data?.r === ErrorCode.NeedLogin) { // 后台换code的cgi也是返回100000,要排除这种情况 if (extra.url.indexOf('&code=') === -1 && extra.url.indexOf('&extplat_extra=') === -1) { await loginMp({ url: extra.url, getGlobalEBus: this.options.getGlobalEBus, showLoadingWhenLoginInMp: this.options.showLoadingWhenLoginInMp, isRedirectAfterLogin: this.options.isRedirectAfterLogin, notRefreshInMp: this.options.notRefreshInMp, qqAppIdInWxMini: this.options.qqAppIdInWxMini, }); } } return [false, param]; } }