"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[6348],{56348:function(A,d,t){t.r(d),t.d(d,{default:function(){return P}});var m=t(97857),n=t.n(m),f=t(15009),g=t.n(f),v=t(54683),p=t(2453),o=v.Z.create({baseURL:{NODE_ENV:"production",PUBLIC_PATH:"/"}.REACT_APP_BASE_API,timeout:5e3});o.interceptors.request.use(function(r){return getToken()&&(r.headers.Authorization="Bearer "+getToken()),r},function(r){console.log(r),Promise.reject(r)}),o.interceptors.response.use(function(r){var a=r.data;return a.code!==200?(p.ZP.error(a.msg||"Error"),Promise.reject(a)):a},function(r){return console.log("err"+r),p.ZP.error(r.message),Promise.reject(r)});var y=o;function h(r){return y({url:"/register",method:"post",data:r})}var P={namespace:"register",state:{submitting:!1,error:null},effects:{submit:function(a,s){var i=a.payload,S=s.call,l=s.put;return g()().mark(function b(){var c,u;return g()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l({type:"changeSubmitting",payload:!0});case 2:return e.prev=2,e.next=5,S(h,i);case 5:if(c=e.sent,c.code!==200){e.next=11;break}return e.next=9,l({type:"registerSuccess"});case 9:e.next=13;break;case 11:return e.next=13,l({type:"registerFailure",payload:c.msg});case 13:e.next=19;break;case 15:return e.prev=15,e.t0=e.catch(2),e.next=19,l({type:"registerFailure",payload:((u=e.t0.response)===null||u===void 0||(u=u.data)===null||u===void 0?void 0:u.msg)||"\u6CE8\u518C\u5931\u8D25"});case 19:return e.next=21,l({type:"changeSubmitting",payload:!1});case 21:case"end":return e.stop()}},b,null,[[2,15]])})()}},reducers:{changeSubmitting:function(a,s){var i=s.payload;return n()(n()({},a),{},{submitting:i})},registerSuccess:function(a){return n()(n()({},a),{},{error:null})},registerFailure:function(a,s){var i=s.payload;return n()(n()({},a),{},{error:i})}}}}}]);
