pocketbase-react 0.1.15 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6110,6 +6110,8 @@
6110
6110
  const AuthContext = react.createContext({});
6111
6111
  const AuthProvider = props => {
6112
6112
  const client = useClientContext();
6113
+ const [isSignedIn, setIsSignedIn] = react.useState(false);
6114
+ const [user, setUser] = react.useState(null);
6113
6115
  const [authProviders, setAuthProviders] = react.useState();
6114
6116
  const actions = {
6115
6117
  registerWithEmail: async (email, password) => {
@@ -6165,9 +6167,17 @@
6165
6167
  const methods = await (client == null ? void 0 : client.users.listAuthMethods());
6166
6168
  setAuthProviders(methods == null ? void 0 : methods.authProviders);
6167
6169
  })();
6170
+ client == null ? void 0 : client.authStore.onChange(() => {
6171
+ setIsSignedIn((client == null ? void 0 : client.authStore.isValid) || false);
6172
+ setUser(client == null ? void 0 : client.authStore.model);
6173
+ });
6168
6174
  }, [props.webRedirectUrl, props.mobileRedirectUrl]);
6169
6175
  return /*#__PURE__*/react.createElement(AuthContext.Provider, {
6170
- value: actions
6176
+ value: {
6177
+ actions: actions,
6178
+ isSignedIn: isSignedIn,
6179
+ user: user
6180
+ }
6171
6181
  }, props.children);
6172
6182
  };
6173
6183
 
@@ -6323,10 +6333,7 @@
6323
6333
  }
6324
6334
 
6325
6335
  function useAuth() {
6326
- const actions = react.useContext(AuthContext);
6327
- return {
6328
- actions
6329
- };
6336
+ return react.useContext(AuthContext);
6330
6337
  }
6331
6338
 
6332
6339
  exports.ADD_RECORD = ADD_RECORD;
@@ -25,4 +25,4 @@
25
25
  * This source code is licensed under the MIT license found in the
26
26
  * LICENSE file in the root directory of this source tree.
27
27
  */
28
- var on,un=Symbol.for("react.element"),cn=Symbol.for("react.portal"),an=Symbol.for("react.fragment"),sn=Symbol.for("react.strict_mode"),fn=Symbol.for("react.profiler"),ln=Symbol.for("react.provider"),pn=Symbol.for("react.context"),yn=Symbol.for("react.server_context"),dn=Symbol.for("react.forward_ref"),bn=Symbol.for("react.suspense"),vn=Symbol.for("react.suspense_list"),hn=Symbol.for("react.memo"),mn=Symbol.for("react.lazy"),gn=Symbol.for("react.offscreen");function On(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case un:switch(e=e.type){case an:case fn:case sn:case bn:case vn:return e;default:switch(e=e&&e.$$typeof){case yn:case pn:case dn:case mn:case hn:case ln:return e;default:return t}}case cn:return t}}}on=Symbol.for("react.module.reference");var Sn={ContextConsumer:pn,ContextProvider:ln,Element:un,ForwardRef:dn,Fragment:an,Lazy:mn,Memo:hn,Portal:cn,Profiler:fn,StrictMode:sn,Suspense:bn,SuspenseList:vn,isAsyncMode:function(){return!1},isConcurrentMode:function(){return!1},isContextConsumer:function(e){return On(e)===pn},isContextProvider:function(e){return On(e)===ln},isElement:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===un},isForwardRef:function(e){return On(e)===dn},isFragment:function(e){return On(e)===an},isLazy:function(e){return On(e)===mn},isMemo:function(e){return On(e)===hn},isPortal:function(e){return On(e)===cn},isProfiler:function(e){return On(e)===fn},isStrictMode:function(e){return On(e)===sn},isSuspense:function(e){return On(e)===bn},isSuspenseList:function(e){return On(e)===vn},isValidElementType:function(e){return"string"==typeof e||"function"==typeof e||e===an||e===fn||e===sn||e===bn||e===vn||e===gn||"object"==typeof e&&null!==e&&(e.$$typeof===mn||e.$$typeof===hn||e.$$typeof===ln||e.$$typeof===pn||e.$$typeof===dn||e.$$typeof===on||void 0!==e.getModuleId)},typeOf:On};u((function(e){e.exports=Sn}));const wn={notify(){},get:()=>[]};function Pn(e,t){let r,n=wn;function o(){u.onStateChange&&u.onStateChange()}function i(){r||(r=t?t.addNestedSub(o):e.subscribe(o),n=function(){const e=Rr();let t=null,r=null;return{clear(){t=null,r=null},notify(){e((()=>{let e=t;for(;e;)e.callback(),e=e.next}))},get(){let e=[],r=t;for(;r;)e.push(r),r=r.next;return e},subscribe(e){let n=!0,o=r={callback:e,next:null,prev:r};return o.prev?o.prev.next=o:t=o,function(){n&&null!==t&&(n=!1,o.next?o.next.prev=o.prev:r=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}())}const u={addNestedSub:function(e){return i(),n.subscribe(e)},notifyNestedSubs:function(){n.notify()},handleChangeWrapper:o,isSubscribed:function(){return!!r},trySubscribe:i,tryUnsubscribe:function(){r&&(r(),r=void 0,n.clear(),n=wn)},getListeners:()=>n};return u}const En=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement)?z.useLayoutEffect:z.useEffect;function jn({store:e,context:t,children:r,serverState:n}){const o=z.useMemo((()=>{const t=Pn(e);return{store:e,subscription:t,getServerState:n?()=>n:void 0}}),[e,n]),i=z.useMemo((()=>e.getState()),[e]);En((()=>{const{subscription:t}=o;return t.onStateChange=t.notifyNestedSubs,t.trySubscribe(),i!==e.getState()&&t.notifyNestedSubs(),()=>{t.tryUnsubscribe(),t.onStateChange=void 0}}),[o,i]);return z.createElement((t||xr).Provider,{value:o},r)}Cr=jr.useSyncExternalStoreWithSelector,_r=t.unstable_batchedUpdates;var _n=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype};const{hasOwnProperty:Rn}=Object.prototype,{propertyIsEnumerable:xn}=Object,kn=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0}),Cn=i,An={concatArrays:!1,ignoreUndefined:!1},Dn=e=>{const t=[];for(const r in e)Rn.call(e,r)&&t.push(r);if(Object.getOwnPropertySymbols){const r=Object.getOwnPropertySymbols(e);for(const n of r)xn.call(e,n)&&t.push(n)}return t};function In(e){return Array.isArray(e)?function(e){const t=e.slice(0,0);return Dn(e).forEach((r=>{kn(t,r,In(e[r]))})),t}(e):_n(e)?function(e){const t=null===Object.getPrototypeOf(e)?Object.create(null):{};return Dn(e).forEach((r=>{kn(t,r,In(e[r]))})),t}(e):e}const $n=(e,t,r,n)=>(r.forEach((r=>{void 0===t[r]&&n.ignoreUndefined||kn(e,r,r in e&&e[r]!==Object.getPrototypeOf(e)?Tn(e[r],t[r],n):In(t[r]))})),e);function Tn(e,t,r){return r.concatArrays&&Array.isArray(e)&&Array.isArray(t)?((e,t,r)=>{let n=e.slice(0,0),o=0;return[e,t].forEach((t=>{const i=[];for(let r=0;t.length>r;r++)Rn.call(t,r)&&(i.push(r+""),kn(n,o++,t===e?t[r]:In(t[r])));n=$n(n,t,Dn(t).filter((e=>!i.includes(e))),r)})),n})(e,t,r):_n(t)&&_n(e)?$n(e,t,Dn(t),r):In(t)}const Un=function(...e){const t=Tn(In(An),this!==Cn&&this||{},An);let r={_:{}};for(const n of e)if(void 0!==n){if(!_n(n))throw new TypeError("`"+n+"` is not an Option Object");r=Tn(r,{_:n},t)}return r._}.bind({concatArrays:!0,ignoreUndefined:!0});function Nn(e,t){return new Promise(((r,n)=>{try{const n=e();null==t||t(null,n),r(n)}catch(e){null==t||t(e),n(e)}}))}function Mn(e,t,r){return Promise.all(e).then((e=>{var n;const o=null!==(n=null==r?void 0:r(e))&&void 0!==n?n:null;return null==t||t(null,o),Promise.resolve(o)}),(e=>(null==t||t(e),Promise.reject(e))))}const Ln={getItem:(e,t)=>Nn((()=>window.localStorage.getItem(e)),t),setItem:(e,t,r)=>Nn((()=>window.localStorage.setItem(e,t)),r),removeItem:(e,t)=>Nn((()=>window.localStorage.removeItem(e)),t),mergeItem:(e,t,r)=>Nn((()=>function(e,t){const r=window.localStorage.getItem(e);if(r){const n=JSON.parse(r),o=JSON.parse(t),i=JSON.stringify(Un(n,o));window.localStorage.setItem(e,i)}else window.localStorage.setItem(e,t)}(e,t)),r),clear:e=>Nn((()=>window.localStorage.clear()),e),getAllKeys:e=>Nn((()=>{const e=window.localStorage.length,t=[];for(let r=0;e>r;r+=1){const e=window.localStorage.key(r)||"";t.push(e)}return t}),e),flushGetRequests:()=>{},multiGet:(e,t)=>Mn(e.map((e=>Ln.getItem(e))),t,(t=>t.map(((t,r)=>[e[r],t])))),multiSet:(e,t)=>Mn(e.map((e=>Ln.setItem(e[0],e[1]))),t),multiRemove:(e,t)=>Mn(e.map((e=>Ln.removeItem(e))),t),multiMerge:(e,t)=>Mn(e.map((e=>Ln.mergeItem(e[0],e[1]))),t)};class Fn{static async get(e){return"undefined"!=typeof document?localStorage.getItem(e):await Ln.getItem(e)}static async set(e,t){return"undefined"!=typeof document?localStorage.setItem(e,t):await Ln.setItem(e,t)}static async remove(e){return"undefined"!=typeof document?localStorage.removeItem(e):await Ln.removeItem(e)}}Fn.Constants={SUBSCRIBED:"subscribed"};const zn={key:"root",storage:{getItem:async(e,...t)=>await Fn.get(e),setItem:async(e,t,...r)=>await Fn.set(e,t),removeItem:async(e,...t)=>await Fn.remove(e)}},Vn=be({reducer:function(e,t){var r=void 0!==e.version?e.version:-1,n=void 0===e.stateReconciler?Jt:e.stateReconciler,o=e.getStoredState||Gt,i=void 0!==e.timeout?e.timeout:5e3,u=null,c=!1,a=!0,s=function(e){return e._persist.rehydrated&&u&&!a&&u.update(e),e};return function(f,l){var p=f||{},y=p._persist,d=rr(p,["_persist"]);if(l.type===zt){var b=!1,v=function(t,r){b||(l.rehydrate(e.key,t,r),b=!0)};if(i&&setTimeout((function(){!b&&v(void 0,Error('redux-persist: persist timed out for persist key "'.concat(e.key,'"')))}),i),a=!1,u||(u=Ht(e)),y)return er({},t(d,l),{_persist:y});if("function"!=typeof l.rehydrate||"function"!=typeof l.register)throw Error("redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.");return l.register(e.key),o(e).then((function(t){var n=e.migrate||function(e,t){return Promise.resolve(e)};n(t,r).then((function(e){v(e)}),(function(e){v(void 0,e)}))}),(function(e){v(void 0,e)})),er({},t(d,l),{_persist:{version:r,rehydrated:!1}})}if(l.type===Vt)return c=!0,l.result(function(e){var t=e.storage,r="".concat(void 0!==e.keyPrefix?e.keyPrefix:Nt).concat(e.key);return t.removeItem(r,Qt)}(e)),er({},t(d,l),{_persist:y});if(l.type===Mt)return l.result(u&&u.flush()),er({},t(d,l),{_persist:y});if(l.type===Ft)a=!0;else if(l.type===Lt){if(c)return er({},d,{_persist:er({},y,{rehydrated:!0})});if(l.key===e.key){var h=t(d,l),m=l.payload,g=er({},!1!==n&&void 0!==m?n(m,f,h,e):h,{_persist:er({},y,{rehydrated:!0})});return s(g)}}if(!y)return t(f,l);var O=t(d,l);return O===d?f:s(er({},O,{_persist:y}))}}(zn,_e)}),Bn=function(e){var t,r=Ut(),n=e||{},o=n.reducer,i=void 0===o?void 0:o,u=n.middleware,c=void 0===u?r():u,a=n.devTools,s=void 0===a||a,f=n.preloadedState,l=void 0===f?void 0:f,p=n.enhancers,y=void 0===p?void 0:p;if("function"==typeof i)t=i;else{if(!function(e){if("object"!=typeof e||null===e)return!1;var t=Object.getPrototypeOf(e);if(null===t)return!0;for(var r=t;null!==Object.getPrototypeOf(r);)r=Object.getPrototypeOf(r);return t===r}(i))throw Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');t=be(i)}var d=c;"function"==typeof d&&(d=d(r));var b=he.apply(void 0,d),v=ve;s&&(v=$t(function(e,t){for(var r in t||(t={}))At.call(t,r)&&It(e,r,t[r]);if(Ct)for(var n=0,o=Ct(t);o.length>n;n++)Dt.call(t,r=o[n])&&It(e,r,t[r]);return e}({trace:!1},"object"==typeof s&&s)));var h=[b];return Array.isArray(y)?h=xt([b],y):"function"==typeof y&&(h=y(h)),de(t,l,v.apply(void 0,h))}({reducer:Vn,middleware:[_t]}),Wn=Bn.dispatch,qn=Ir,Kn=function(e,t,r){var n=r||!1,o=de(ar,cr,t&&t.enhancer?t.enhancer:void 0),i=function(e){o.dispatch({type:Bt,key:e})},u=function(t,r,i){var u={type:Lt,payload:r,err:i,key:t};e.dispatch(u),o.dispatch(u),n&&c.getState().bootstrapped&&(n(),n=!1)},c=ir({},o,{purge:function(){var t=[];return e.dispatch({type:Vt,result:function(e){t.push(e)}}),Promise.all(t)},flush:function(){var t=[];return e.dispatch({type:Mt,result:function(e){t.push(e)}}),Promise.all(t)},pause:function(){e.dispatch({type:Ft})},persist:function(){e.dispatch({type:zt,register:i,rehydrate:u})}});return t&&t.manualPersist||c.persist(),c}(Bn),Jn=()=>z.useContext(Gn),Hn=z.createContext({}),Xn=e=>{const t=Jn(),r=Wn,n={subscribe:async e=>{await(null==t?void 0:t.realtime.subscribe(e,(t=>{switch(t.action){case"create":r(Q(e,t.record));break;case"update":r(ee(e,t.record));break;case"delete":r(Z(e,t.record))}})).then((()=>{r(ne(e))})).catch((t=>{r(oe(e))})))},unsubscribe:async e=>{e?await(null==t?void 0:t.realtime.unsubscribe(e).then((()=>{r(oe(e))})).catch((e=>{}))):await(null==t?void 0:t.realtime.unsubscribe().then((()=>{r(re([]))})).catch((e=>{})))},fetch:async e=>{const n=await(null==t?void 0:t.records.getFullList(e,200).catch((e=>{})));r(Y(e,n))},create:async(e,r)=>{await(null==t?void 0:t.records.create(e,r).catch((e=>{})))},update:async(e,r,n)=>{await(null==t?void 0:t.records.update(e,r,n).catch((e=>{})))},delete:async(e,r)=>{await(null==t?void 0:t.records.delete(e,r).catch((e=>{})))}};return z.useEffect((()=>(e.collections&&e.collections.forEach((async e=>{await n.fetch(e),await n.subscribe(e)})),()=>{(async()=>{await n.unsubscribe()})()})),[e.collections]),z.createElement(Hn.Provider,{value:n},e.children)},Gn=z.createContext(null),Yn=e=>z.createElement(Gn.Provider,{value:e.client},e.children),Qn=z.createContext({}),Zn=e=>{const t=Jn(),[r,n]=z.useState(),o={registerWithEmail:async(e,r)=>{await(null==t?void 0:t.users.create({email:e,password:r,passwordConfirm:r}))},signInWithEmail:async(e,r)=>{await(null==t?void 0:t.users.authViaEmail(e,r))},signInWithProvider:async t=>{const n=null==r?void 0:r.find((e=>e.name===t)),o=(null==n?void 0:n.authUrl)+typeof document!="undefined"?e.webRedirectUrl:e.mobileRedirectUrl;await e.openURL(o),await Fn.set("provider",JSON.stringify(r))},submitProviderResult:async r=>{const n=new URLSearchParams(r.split("?")[1]),o=n.get("code"),i=n.get("state"),u=await Fn.get("provider");if(u){const r=JSON.parse(u),n=null==r?void 0:r.find((e=>e.state===i));n&&o&&await(null==t?void 0:t.users.authViaOAuth2(n.name,o,n.codeVerifier,"undefined"!=typeof document?e.webRedirectUrl:e.mobileRedirectUrl))}},signOut:()=>{null==t||t.authStore.clear()},sendPasswordResetEmail:async e=>{await(null==t?void 0:t.users.requestPasswordReset(e))},sendEmailVerification:async e=>{await(null==t?void 0:t.users.requestVerification(e))},updateProfile:async(e,r)=>{await(null==t?void 0:t.records.update("profiles",e,r))},updateEmail:async e=>{await(null==t?void 0:t.users.requestEmailChange(e))},deleteUser:async e=>{await(null==t?void 0:t.users.delete(e))}};return z.useEffect((()=>{(async()=>{const e=await(null==t?void 0:t.users.listAuthMethods());n(null==e?void 0:e.authProviders)})()}),[e.webRedirectUrl,e.mobileRedirectUrl]),z.createElement(Qn.Provider,{value:o},e.children)};function eo(e){return eo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},eo(e)}function to(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ro(e,t){for(var r=0;t.length>r;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function no(e,t){return!t||"object"!==eo(t)&&"function"!=typeof t?io(e):t}function oo(e){return oo=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},oo(e)}function io(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function uo(e,t){return uo=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},uo(e,t)}function co(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ao=function(e){function t(){var e,r;to(this,t);for(var n=arguments.length,o=Array(n),i=0;n>i;i++)o[i]=arguments[i];return co(io(r=no(this,(e=oo(t)).call.apply(e,[this].concat(o)))),"state",{bootstrapped:!1}),co(io(r),"_unsubscribe",void 0),co(io(r),"handlePersistorState",(function(){r.props.persistor.getState().bootstrapped&&(r.props.onBeforeLift?Promise.resolve(r.props.onBeforeLift()).finally((function(){return r.setState({bootstrapped:!0})})):r.setState({bootstrapped:!0}),r._unsubscribe&&r._unsubscribe())})),r}var r,n,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&uo(e,t)}(t,e),r=t,(n=[{key:"componentDidMount",value:function(){this._unsubscribe=this.props.persistor.subscribe(this.handlePersistorState),this.handlePersistorState()}},{key:"componentWillUnmount",value:function(){this._unsubscribe&&this._unsubscribe()}},{key:"render",value:function(){return"function"==typeof this.props.children?this.props.children(this.state.bootstrapped):this.state.bootstrapped?this.props.children:this.props.loading}}])&&ro(r.prototype,n),o&&ro(r,o),t}(z.PureComponent);co(ao,"defaultProps",{children:null,loading:null});const so=z.createContext(null);e.ADD_RECORD=B,e.ADD_RECORDS=W,e.ADD_SUBSCRIPTION=X,e.AuthContext=Qn,e.AuthProvider=Zn,e.ClientContext=Gn,e.ClientProvider=Yn,e.ContentContext=Hn,e.ContentProvider=Xn,e.DELETE_RECORD=K,e.DELETE_RECORDS=J,e.DELETE_SUBSCRIPTION=G,e.Pocketbase=e=>{const t=new o.default(e.serverURL);return t?z.createElement(Yn,{client:t},z.createElement(jn,{store:Bn},z.createElement(ao,{persistor:Kn},z.createElement(Zn,{webRedirectUrl:e.webRedirectUrl,mobileRedirectUrl:e.mobileRedirectUrl,openURL:e.openURL},z.createElement(Xn,{collections:e.initialCollections},e.children))))):null},e.PocketbaseContext=so,e.SET_RECORDS=V,e.SET_SUBSCRIPTIONS=H,e.UPDATE_RECORD=q,e.appReducer=_e,e.persistConfig=zn,e.persistor=Kn,e.recordsAction=te,e.store=Bn,e.subscriptionsAction=ie,e.useAppContent=function(e,t=!1){var r;const n=null!=(r=qn((t=>t.reducer.records[e])))?r:[],o=qn((e=>e.reducer.subscriptions)).subscriptions,i=z.useContext(Hn);z.useEffect((()=>{t&&i.fetch(e)}),[e,t]);const[u,c]=z.useState(!1);return z.useEffect((()=>{c(o.includes(e))}),[o]),{records:n,actions:{subscribe:async()=>await i.subscribe(e),unsubscribe:async()=>await i.unsubscribe(e),fetch:async()=>await i.fetch(e),create:async t=>await i.create(e,t),update:async(t,r)=>await i.update(e,t,r),delete:async t=>await i.delete(e,t)},isSubscribed:u}},e.useAppDispatch=Wn,e.useAppSelector=qn,e.useAuth=function(){return{actions:z.useContext(Qn)}},e.useClientContext=Jn,Object.defineProperty(e,"__esModule",{value:!0})}));
28
+ var on,un=Symbol.for("react.element"),cn=Symbol.for("react.portal"),an=Symbol.for("react.fragment"),sn=Symbol.for("react.strict_mode"),fn=Symbol.for("react.profiler"),ln=Symbol.for("react.provider"),pn=Symbol.for("react.context"),yn=Symbol.for("react.server_context"),dn=Symbol.for("react.forward_ref"),bn=Symbol.for("react.suspense"),vn=Symbol.for("react.suspense_list"),hn=Symbol.for("react.memo"),mn=Symbol.for("react.lazy"),gn=Symbol.for("react.offscreen");function On(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case un:switch(e=e.type){case an:case fn:case sn:case bn:case vn:return e;default:switch(e=e&&e.$$typeof){case yn:case pn:case dn:case mn:case hn:case ln:return e;default:return t}}case cn:return t}}}on=Symbol.for("react.module.reference");var Sn={ContextConsumer:pn,ContextProvider:ln,Element:un,ForwardRef:dn,Fragment:an,Lazy:mn,Memo:hn,Portal:cn,Profiler:fn,StrictMode:sn,Suspense:bn,SuspenseList:vn,isAsyncMode:function(){return!1},isConcurrentMode:function(){return!1},isContextConsumer:function(e){return On(e)===pn},isContextProvider:function(e){return On(e)===ln},isElement:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===un},isForwardRef:function(e){return On(e)===dn},isFragment:function(e){return On(e)===an},isLazy:function(e){return On(e)===mn},isMemo:function(e){return On(e)===hn},isPortal:function(e){return On(e)===cn},isProfiler:function(e){return On(e)===fn},isStrictMode:function(e){return On(e)===sn},isSuspense:function(e){return On(e)===bn},isSuspenseList:function(e){return On(e)===vn},isValidElementType:function(e){return"string"==typeof e||"function"==typeof e||e===an||e===fn||e===sn||e===bn||e===vn||e===gn||"object"==typeof e&&null!==e&&(e.$$typeof===mn||e.$$typeof===hn||e.$$typeof===ln||e.$$typeof===pn||e.$$typeof===dn||e.$$typeof===on||void 0!==e.getModuleId)},typeOf:On};u((function(e){e.exports=Sn}));const wn={notify(){},get:()=>[]};function Pn(e,t){let r,n=wn;function o(){u.onStateChange&&u.onStateChange()}function i(){r||(r=t?t.addNestedSub(o):e.subscribe(o),n=function(){const e=Rr();let t=null,r=null;return{clear(){t=null,r=null},notify(){e((()=>{let e=t;for(;e;)e.callback(),e=e.next}))},get(){let e=[],r=t;for(;r;)e.push(r),r=r.next;return e},subscribe(e){let n=!0,o=r={callback:e,next:null,prev:r};return o.prev?o.prev.next=o:t=o,function(){n&&null!==t&&(n=!1,o.next?o.next.prev=o.prev:r=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}())}const u={addNestedSub:function(e){return i(),n.subscribe(e)},notifyNestedSubs:function(){n.notify()},handleChangeWrapper:o,isSubscribed:function(){return!!r},trySubscribe:i,tryUnsubscribe:function(){r&&(r(),r=void 0,n.clear(),n=wn)},getListeners:()=>n};return u}const En=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement)?z.useLayoutEffect:z.useEffect;function jn({store:e,context:t,children:r,serverState:n}){const o=z.useMemo((()=>{const t=Pn(e);return{store:e,subscription:t,getServerState:n?()=>n:void 0}}),[e,n]),i=z.useMemo((()=>e.getState()),[e]);En((()=>{const{subscription:t}=o;return t.onStateChange=t.notifyNestedSubs,t.trySubscribe(),i!==e.getState()&&t.notifyNestedSubs(),()=>{t.tryUnsubscribe(),t.onStateChange=void 0}}),[o,i]);return z.createElement((t||xr).Provider,{value:o},r)}Cr=jr.useSyncExternalStoreWithSelector,_r=t.unstable_batchedUpdates;var _n=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype};const{hasOwnProperty:Rn}=Object.prototype,{propertyIsEnumerable:xn}=Object,kn=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0}),Cn=i,An={concatArrays:!1,ignoreUndefined:!1},Dn=e=>{const t=[];for(const r in e)Rn.call(e,r)&&t.push(r);if(Object.getOwnPropertySymbols){const r=Object.getOwnPropertySymbols(e);for(const n of r)xn.call(e,n)&&t.push(n)}return t};function In(e){return Array.isArray(e)?function(e){const t=e.slice(0,0);return Dn(e).forEach((r=>{kn(t,r,In(e[r]))})),t}(e):_n(e)?function(e){const t=null===Object.getPrototypeOf(e)?Object.create(null):{};return Dn(e).forEach((r=>{kn(t,r,In(e[r]))})),t}(e):e}const $n=(e,t,r,n)=>(r.forEach((r=>{void 0===t[r]&&n.ignoreUndefined||kn(e,r,r in e&&e[r]!==Object.getPrototypeOf(e)?Tn(e[r],t[r],n):In(t[r]))})),e);function Tn(e,t,r){return r.concatArrays&&Array.isArray(e)&&Array.isArray(t)?((e,t,r)=>{let n=e.slice(0,0),o=0;return[e,t].forEach((t=>{const i=[];for(let r=0;t.length>r;r++)Rn.call(t,r)&&(i.push(r+""),kn(n,o++,t===e?t[r]:In(t[r])));n=$n(n,t,Dn(t).filter((e=>!i.includes(e))),r)})),n})(e,t,r):_n(t)&&_n(e)?$n(e,t,Dn(t),r):In(t)}const Un=function(...e){const t=Tn(In(An),this!==Cn&&this||{},An);let r={_:{}};for(const n of e)if(void 0!==n){if(!_n(n))throw new TypeError("`"+n+"` is not an Option Object");r=Tn(r,{_:n},t)}return r._}.bind({concatArrays:!0,ignoreUndefined:!0});function Nn(e,t){return new Promise(((r,n)=>{try{const n=e();null==t||t(null,n),r(n)}catch(e){null==t||t(e),n(e)}}))}function Mn(e,t,r){return Promise.all(e).then((e=>{var n;const o=null!==(n=null==r?void 0:r(e))&&void 0!==n?n:null;return null==t||t(null,o),Promise.resolve(o)}),(e=>(null==t||t(e),Promise.reject(e))))}const Ln={getItem:(e,t)=>Nn((()=>window.localStorage.getItem(e)),t),setItem:(e,t,r)=>Nn((()=>window.localStorage.setItem(e,t)),r),removeItem:(e,t)=>Nn((()=>window.localStorage.removeItem(e)),t),mergeItem:(e,t,r)=>Nn((()=>function(e,t){const r=window.localStorage.getItem(e);if(r){const n=JSON.parse(r),o=JSON.parse(t),i=JSON.stringify(Un(n,o));window.localStorage.setItem(e,i)}else window.localStorage.setItem(e,t)}(e,t)),r),clear:e=>Nn((()=>window.localStorage.clear()),e),getAllKeys:e=>Nn((()=>{const e=window.localStorage.length,t=[];for(let r=0;e>r;r+=1){const e=window.localStorage.key(r)||"";t.push(e)}return t}),e),flushGetRequests:()=>{},multiGet:(e,t)=>Mn(e.map((e=>Ln.getItem(e))),t,(t=>t.map(((t,r)=>[e[r],t])))),multiSet:(e,t)=>Mn(e.map((e=>Ln.setItem(e[0],e[1]))),t),multiRemove:(e,t)=>Mn(e.map((e=>Ln.removeItem(e))),t),multiMerge:(e,t)=>Mn(e.map((e=>Ln.mergeItem(e[0],e[1]))),t)};class Fn{static async get(e){return"undefined"!=typeof document?localStorage.getItem(e):await Ln.getItem(e)}static async set(e,t){return"undefined"!=typeof document?localStorage.setItem(e,t):await Ln.setItem(e,t)}static async remove(e){return"undefined"!=typeof document?localStorage.removeItem(e):await Ln.removeItem(e)}}Fn.Constants={SUBSCRIBED:"subscribed"};const zn={key:"root",storage:{getItem:async(e,...t)=>await Fn.get(e),setItem:async(e,t,...r)=>await Fn.set(e,t),removeItem:async(e,...t)=>await Fn.remove(e)}},Vn=be({reducer:function(e,t){var r=void 0!==e.version?e.version:-1,n=void 0===e.stateReconciler?Jt:e.stateReconciler,o=e.getStoredState||Gt,i=void 0!==e.timeout?e.timeout:5e3,u=null,c=!1,a=!0,s=function(e){return e._persist.rehydrated&&u&&!a&&u.update(e),e};return function(f,l){var p=f||{},y=p._persist,d=rr(p,["_persist"]);if(l.type===zt){var b=!1,v=function(t,r){b||(l.rehydrate(e.key,t,r),b=!0)};if(i&&setTimeout((function(){!b&&v(void 0,Error('redux-persist: persist timed out for persist key "'.concat(e.key,'"')))}),i),a=!1,u||(u=Ht(e)),y)return er({},t(d,l),{_persist:y});if("function"!=typeof l.rehydrate||"function"!=typeof l.register)throw Error("redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.");return l.register(e.key),o(e).then((function(t){var n=e.migrate||function(e,t){return Promise.resolve(e)};n(t,r).then((function(e){v(e)}),(function(e){v(void 0,e)}))}),(function(e){v(void 0,e)})),er({},t(d,l),{_persist:{version:r,rehydrated:!1}})}if(l.type===Vt)return c=!0,l.result(function(e){var t=e.storage,r="".concat(void 0!==e.keyPrefix?e.keyPrefix:Nt).concat(e.key);return t.removeItem(r,Qt)}(e)),er({},t(d,l),{_persist:y});if(l.type===Mt)return l.result(u&&u.flush()),er({},t(d,l),{_persist:y});if(l.type===Ft)a=!0;else if(l.type===Lt){if(c)return er({},d,{_persist:er({},y,{rehydrated:!0})});if(l.key===e.key){var h=t(d,l),m=l.payload,g=er({},!1!==n&&void 0!==m?n(m,f,h,e):h,{_persist:er({},y,{rehydrated:!0})});return s(g)}}if(!y)return t(f,l);var O=t(d,l);return O===d?f:s(er({},O,{_persist:y}))}}(zn,_e)}),Bn=function(e){var t,r=Ut(),n=e||{},o=n.reducer,i=void 0===o?void 0:o,u=n.middleware,c=void 0===u?r():u,a=n.devTools,s=void 0===a||a,f=n.preloadedState,l=void 0===f?void 0:f,p=n.enhancers,y=void 0===p?void 0:p;if("function"==typeof i)t=i;else{if(!function(e){if("object"!=typeof e||null===e)return!1;var t=Object.getPrototypeOf(e);if(null===t)return!0;for(var r=t;null!==Object.getPrototypeOf(r);)r=Object.getPrototypeOf(r);return t===r}(i))throw Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');t=be(i)}var d=c;"function"==typeof d&&(d=d(r));var b=he.apply(void 0,d),v=ve;s&&(v=$t(function(e,t){for(var r in t||(t={}))At.call(t,r)&&It(e,r,t[r]);if(Ct)for(var n=0,o=Ct(t);o.length>n;n++)Dt.call(t,r=o[n])&&It(e,r,t[r]);return e}({trace:!1},"object"==typeof s&&s)));var h=[b];return Array.isArray(y)?h=xt([b],y):"function"==typeof y&&(h=y(h)),de(t,l,v.apply(void 0,h))}({reducer:Vn,middleware:[_t]}),Wn=Bn.dispatch,qn=Ir,Kn=function(e,t,r){var n=r||!1,o=de(ar,cr,t&&t.enhancer?t.enhancer:void 0),i=function(e){o.dispatch({type:Bt,key:e})},u=function(t,r,i){var u={type:Lt,payload:r,err:i,key:t};e.dispatch(u),o.dispatch(u),n&&c.getState().bootstrapped&&(n(),n=!1)},c=ir({},o,{purge:function(){var t=[];return e.dispatch({type:Vt,result:function(e){t.push(e)}}),Promise.all(t)},flush:function(){var t=[];return e.dispatch({type:Mt,result:function(e){t.push(e)}}),Promise.all(t)},pause:function(){e.dispatch({type:Ft})},persist:function(){e.dispatch({type:zt,register:i,rehydrate:u})}});return t&&t.manualPersist||c.persist(),c}(Bn),Jn=()=>z.useContext(Gn),Hn=z.createContext({}),Xn=e=>{const t=Jn(),r=Wn,n={subscribe:async e=>{await(null==t?void 0:t.realtime.subscribe(e,(t=>{switch(t.action){case"create":r(Q(e,t.record));break;case"update":r(ee(e,t.record));break;case"delete":r(Z(e,t.record))}})).then((()=>{r(ne(e))})).catch((t=>{r(oe(e))})))},unsubscribe:async e=>{e?await(null==t?void 0:t.realtime.unsubscribe(e).then((()=>{r(oe(e))})).catch((e=>{}))):await(null==t?void 0:t.realtime.unsubscribe().then((()=>{r(re([]))})).catch((e=>{})))},fetch:async e=>{const n=await(null==t?void 0:t.records.getFullList(e,200).catch((e=>{})));r(Y(e,n))},create:async(e,r)=>{await(null==t?void 0:t.records.create(e,r).catch((e=>{})))},update:async(e,r,n)=>{await(null==t?void 0:t.records.update(e,r,n).catch((e=>{})))},delete:async(e,r)=>{await(null==t?void 0:t.records.delete(e,r).catch((e=>{})))}};return z.useEffect((()=>(e.collections&&e.collections.forEach((async e=>{await n.fetch(e),await n.subscribe(e)})),()=>{(async()=>{await n.unsubscribe()})()})),[e.collections]),z.createElement(Hn.Provider,{value:n},e.children)},Gn=z.createContext(null),Yn=e=>z.createElement(Gn.Provider,{value:e.client},e.children),Qn=z.createContext({}),Zn=e=>{const t=Jn(),[r,n]=z.useState(!1),[o,i]=z.useState(null),[u,c]=z.useState(),a={registerWithEmail:async(e,r)=>{await(null==t?void 0:t.users.create({email:e,password:r,passwordConfirm:r}))},signInWithEmail:async(e,r)=>{await(null==t?void 0:t.users.authViaEmail(e,r))},signInWithProvider:async t=>{const r=null==u?void 0:u.find((e=>e.name===t)),n=(null==r?void 0:r.authUrl)+typeof document!="undefined"?e.webRedirectUrl:e.mobileRedirectUrl;await e.openURL(n),await Fn.set("provider",JSON.stringify(u))},submitProviderResult:async r=>{const n=new URLSearchParams(r.split("?")[1]),o=n.get("code"),i=n.get("state"),u=await Fn.get("provider");if(u){const r=JSON.parse(u),n=null==r?void 0:r.find((e=>e.state===i));n&&o&&await(null==t?void 0:t.users.authViaOAuth2(n.name,o,n.codeVerifier,"undefined"!=typeof document?e.webRedirectUrl:e.mobileRedirectUrl))}},signOut:()=>{null==t||t.authStore.clear()},sendPasswordResetEmail:async e=>{await(null==t?void 0:t.users.requestPasswordReset(e))},sendEmailVerification:async e=>{await(null==t?void 0:t.users.requestVerification(e))},updateProfile:async(e,r)=>{await(null==t?void 0:t.records.update("profiles",e,r))},updateEmail:async e=>{await(null==t?void 0:t.users.requestEmailChange(e))},deleteUser:async e=>{await(null==t?void 0:t.users.delete(e))}};return z.useEffect((()=>{(async()=>{const e=await(null==t?void 0:t.users.listAuthMethods());c(null==e?void 0:e.authProviders)})(),null==t||t.authStore.onChange((()=>{n((null==t?void 0:t.authStore.isValid)||!1),i(null==t?void 0:t.authStore.model)}))}),[e.webRedirectUrl,e.mobileRedirectUrl]),z.createElement(Qn.Provider,{value:{actions:a,isSignedIn:r,user:o}},e.children)};function eo(e){return eo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},eo(e)}function to(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ro(e,t){for(var r=0;t.length>r;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function no(e,t){return!t||"object"!==eo(t)&&"function"!=typeof t?io(e):t}function oo(e){return oo=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},oo(e)}function io(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function uo(e,t){return uo=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},uo(e,t)}function co(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ao=function(e){function t(){var e,r;to(this,t);for(var n=arguments.length,o=Array(n),i=0;n>i;i++)o[i]=arguments[i];return co(io(r=no(this,(e=oo(t)).call.apply(e,[this].concat(o)))),"state",{bootstrapped:!1}),co(io(r),"_unsubscribe",void 0),co(io(r),"handlePersistorState",(function(){r.props.persistor.getState().bootstrapped&&(r.props.onBeforeLift?Promise.resolve(r.props.onBeforeLift()).finally((function(){return r.setState({bootstrapped:!0})})):r.setState({bootstrapped:!0}),r._unsubscribe&&r._unsubscribe())})),r}var r,n,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&uo(e,t)}(t,e),r=t,(n=[{key:"componentDidMount",value:function(){this._unsubscribe=this.props.persistor.subscribe(this.handlePersistorState),this.handlePersistorState()}},{key:"componentWillUnmount",value:function(){this._unsubscribe&&this._unsubscribe()}},{key:"render",value:function(){return"function"==typeof this.props.children?this.props.children(this.state.bootstrapped):this.state.bootstrapped?this.props.children:this.props.loading}}])&&ro(r.prototype,n),o&&ro(r,o),t}(z.PureComponent);co(ao,"defaultProps",{children:null,loading:null});const so=z.createContext(null);e.ADD_RECORD=B,e.ADD_RECORDS=W,e.ADD_SUBSCRIPTION=X,e.AuthContext=Qn,e.AuthProvider=Zn,e.ClientContext=Gn,e.ClientProvider=Yn,e.ContentContext=Hn,e.ContentProvider=Xn,e.DELETE_RECORD=K,e.DELETE_RECORDS=J,e.DELETE_SUBSCRIPTION=G,e.Pocketbase=e=>{const t=new o.default(e.serverURL);return t?z.createElement(Yn,{client:t},z.createElement(jn,{store:Bn},z.createElement(ao,{persistor:Kn},z.createElement(Zn,{webRedirectUrl:e.webRedirectUrl,mobileRedirectUrl:e.mobileRedirectUrl,openURL:e.openURL},z.createElement(Xn,{collections:e.initialCollections},e.children))))):null},e.PocketbaseContext=so,e.SET_RECORDS=V,e.SET_SUBSCRIPTIONS=H,e.UPDATE_RECORD=q,e.appReducer=_e,e.persistConfig=zn,e.persistor=Kn,e.recordsAction=te,e.store=Bn,e.subscriptionsAction=ie,e.useAppContent=function(e,t=!1){var r;const n=null!=(r=qn((t=>t.reducer.records[e])))?r:[],o=qn((e=>e.reducer.subscriptions)).subscriptions,i=z.useContext(Hn);z.useEffect((()=>{t&&i.fetch(e)}),[e,t]);const[u,c]=z.useState(!1);return z.useEffect((()=>{c(o.includes(e))}),[o]),{records:n,actions:{subscribe:async()=>await i.subscribe(e),unsubscribe:async()=>await i.unsubscribe(e),fetch:async()=>await i.fetch(e),create:async t=>await i.create(e,t),update:async(t,r)=>await i.update(e,t,r),delete:async t=>await i.delete(e,t)},isSubscribed:u}},e.useAppDispatch=Wn,e.useAppSelector=qn,e.useAuth=function(){return z.useContext(Qn)},e.useClientContext=Jn,Object.defineProperty(e,"__esModule",{value:!0})}));
@@ -1,3 +1,4 @@
1
+ import { Admin, User } from '@tobicrain/pocketbase';
1
2
  import * as React from 'react';
2
3
  export declare type AuthProviderInfo = {
3
4
  name: string;
@@ -29,7 +30,12 @@ export interface AuthActions {
29
30
  updateEmail: UpdateEmailType;
30
31
  deleteUser: DeleteUserType;
31
32
  }
32
- export declare const AuthContext: React.Context<AuthActions>;
33
+ export interface AuthContextInterface {
34
+ actions: AuthActions;
35
+ isSignedIn: boolean;
36
+ user: User | Admin | null;
37
+ }
38
+ export declare const AuthContext: React.Context<AuthContextInterface>;
33
39
  export declare type AuthProviderProps = {
34
40
  children: React.ReactNode;
35
41
  webRedirectUrl: string;
@@ -5,6 +5,8 @@ import { StorageService } from '../service/Storage';
5
5
  export const AuthContext = createContext({});
6
6
  export const AuthProvider = props => {
7
7
  const client = useClientContext();
8
+ const [isSignedIn, setIsSignedIn] = React.useState(false);
9
+ const [user, setUser] = React.useState(null);
8
10
  const [authProviders, setAuthProviders] = React.useState();
9
11
  const actions = {
10
12
  registerWithEmail: async (email, password) => {
@@ -60,8 +62,16 @@ export const AuthProvider = props => {
60
62
  const methods = await (client == null ? void 0 : client.users.listAuthMethods());
61
63
  setAuthProviders(methods == null ? void 0 : methods.authProviders);
62
64
  })();
65
+ client == null ? void 0 : client.authStore.onChange(() => {
66
+ setIsSignedIn((client == null ? void 0 : client.authStore.isValid) || false);
67
+ setUser(client == null ? void 0 : client.authStore.model);
68
+ });
63
69
  }, [props.webRedirectUrl, props.mobileRedirectUrl]);
64
70
  return /*#__PURE__*/React.createElement(AuthContext.Provider, {
65
- value: actions
71
+ value: {
72
+ actions: actions,
73
+ isSignedIn: isSignedIn,
74
+ user: user
75
+ }
66
76
  }, props.children);
67
77
  };
@@ -1,4 +1,2 @@
1
- import { AuthActions } from '../context/auth';
2
- export declare function useAuth(): {
3
- actions: AuthActions;
4
- };
1
+ import { AuthContextInterface } from '../context/auth';
2
+ export declare function useAuth(): AuthContextInterface;
@@ -1,8 +1,5 @@
1
1
  import { useContext } from 'react';
2
2
  import { AuthContext } from '../context/auth';
3
3
  export function useAuth() {
4
- const actions = useContext(AuthContext);
5
- return {
6
- actions
7
- };
4
+ return useContext(AuthContext);
8
5
  }
@@ -11,6 +11,8 @@ const AuthContext = (0, React.createContext)({});
11
11
  exports.AuthContext = AuthContext;
12
12
  const AuthProvider = props => {
13
13
  const client = (0, _useClientContext.useClientContext)();
14
+ const [isSignedIn, setIsSignedIn] = React.useState(false);
15
+ const [user, setUser] = React.useState(null);
14
16
  const [authProviders, setAuthProviders] = React.useState();
15
17
  const actions = {
16
18
  registerWithEmail: async (email, password) => {
@@ -66,9 +68,17 @@ const AuthProvider = props => {
66
68
  const methods = await (client == null ? void 0 : client.users.listAuthMethods());
67
69
  setAuthProviders(methods == null ? void 0 : methods.authProviders);
68
70
  })();
71
+ client == null ? void 0 : client.authStore.onChange(() => {
72
+ setIsSignedIn((client == null ? void 0 : client.authStore.isValid) || false);
73
+ setUser(client == null ? void 0 : client.authStore.model);
74
+ });
69
75
  }, [props.webRedirectUrl, props.mobileRedirectUrl]);
70
76
  return /*#__PURE__*/React.createElement(AuthContext.Provider, {
71
- value: actions
77
+ value: {
78
+ actions: actions,
79
+ isSignedIn: isSignedIn,
80
+ user: user
81
+ }
72
82
  }, props.children);
73
83
  };
74
84
  exports.AuthProvider = AuthProvider;
@@ -5,8 +5,5 @@ exports.useAuth = useAuth;
5
5
  var _react = require("react");
6
6
  var _auth = require("../context/auth");
7
7
  function useAuth() {
8
- const actions = (0, _react.useContext)(_auth.AuthContext);
9
- return {
10
- actions
11
- };
8
+ return (0, _react.useContext)(_auth.AuthContext);
12
9
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pocketbase-react",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "Unofficial React SDK (React, React Native, Expo) for interacting with the PocketBase JS SDK",
5
5
  "keywords": [
6
6
  "pocketbase",
@@ -1,4 +1,5 @@
1
1
  import AsyncStorage from '@react-native-async-storage/async-storage';
2
+ import { Admin, User } from '@tobicrain/pocketbase';
2
3
  import * as React from 'react';
3
4
  import { createContext, useEffect } from 'react';
4
5
  import { useClientContext } from '../hooks/useClientContext';
@@ -36,8 +37,13 @@ export interface AuthActions {
36
37
  updateEmail: UpdateEmailType;
37
38
  deleteUser: DeleteUserType;
38
39
  }
40
+ export interface AuthContextInterface {
41
+ actions: AuthActions;
42
+ isSignedIn: boolean;
43
+ user: User | Admin | null;
44
+ }
39
45
 
40
- export const AuthContext = createContext<AuthActions>({} as AuthActions);
46
+ export const AuthContext = createContext<AuthContextInterface>({} as AuthContextInterface);
41
47
 
42
48
  export type AuthProviderProps = {
43
49
  children: React.ReactNode;
@@ -48,6 +54,8 @@ export type AuthProviderProps = {
48
54
 
49
55
  export const AuthProvider = (props: AuthProviderProps) => {
50
56
  const client = useClientContext();
57
+ const [isSignedIn, setIsSignedIn] = React.useState(false);
58
+ const [user, setUser] = React.useState<User | Admin | null>(null);
51
59
  const [authProviders, setAuthProviders] = React.useState<AuthProviderInfo[]>();
52
60
 
53
61
  const actions: AuthActions = {
@@ -113,7 +121,20 @@ export const AuthProvider = (props: AuthProviderProps) => {
113
121
  const methods = await client?.users.listAuthMethods();
114
122
  setAuthProviders(methods?.authProviders);
115
123
  })();
124
+ client?.authStore.onChange(() => {
125
+ setIsSignedIn(client?.authStore.isValid || false);
126
+ setUser(client?.authStore.model);
127
+ });
116
128
  }, [props.webRedirectUrl, props.mobileRedirectUrl]);
117
129
 
118
- return <AuthContext.Provider value={actions}>{props.children}</AuthContext.Provider>;
130
+ return (
131
+ <AuthContext.Provider
132
+ value={{
133
+ actions: actions,
134
+ isSignedIn: isSignedIn,
135
+ user: user,
136
+ }}>
137
+ {props.children}
138
+ </AuthContext.Provider>
139
+ );
119
140
  };
@@ -1,7 +1,6 @@
1
1
  import { useContext } from 'react';
2
- import { AuthActions, AuthContext } from '../context/auth';
2
+ import { AuthContext, AuthContextInterface } from '../context/auth';
3
3
 
4
- export function useAuth(): { actions: AuthActions } {
5
- const actions = useContext(AuthContext);
6
- return { actions };
4
+ export function useAuth(): AuthContextInterface {
5
+ return useContext(AuthContext);
7
6
  }