@kaspernj/api-maker 1.0.2030 → 1.0.2031

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.
@@ -1,26 +1,44 @@
1
- import React, { createContext, useCallback, useContext, useMemo } from "react";
1
+ import React, { useCallback, useContext, useMemo } from "react";
2
2
  import Devise from "./devise";
3
3
  import { digg } from "diggerize";
4
+ import EventEmitter from "events";
4
5
  import * as inflection from "inflection";
5
6
  import Logger from "./logger";
6
7
  import Services from "./services";
7
8
  import useEventEmitter from "./use-event-emitter";
8
9
  import useShape from "set-state-compare/src/use-shape";
10
+ const events = new EventEmitter();
9
11
  const logger = new Logger({
10
12
  name: "ApiMaker / useCurrentUser"
11
13
  });
12
-
13
- // logger.setDebug(true)
14
-
15
- const useCurrentUser = props => {
16
- const scope = props?.scope || "user";
14
+ logger.setDebug(false);
15
+ const useCurrentUser = (props = {}) => {
16
+ const {
17
+ scope = "user",
18
+ withData,
19
+ ...restProps
20
+ } = props;
21
+ if (Object.keys(restProps).length > 0) {
22
+ throw new Error(`Unknown props given to useCurrentUser: ${Object.keys(restProps).join(", ")}`);
23
+ }
17
24
  const scopeInstance = Devise.getScope(scope);
18
25
  const currentUserContext = useContext(scopeInstance.getContext());
19
- return currentUserContext;
26
+ if (withData) {
27
+ return currentUserContext;
28
+ } else {
29
+ return currentUserContext.model;
30
+ }
20
31
  };
21
- const WithCurrentUser = props => {
22
- const s = useShape(props || {});
23
- const scope = props?.scope || "user";
32
+ const WithCurrentUser = (props = {}) => {
33
+ const {
34
+ children,
35
+ scope = "user",
36
+ ...restProps
37
+ } = props;
38
+ if (Object.keys(restProps).length > 0) {
39
+ throw new Error(`Unknown props given to WithCurrentUser: ${Object.keys(restProps).join(", ")}`);
40
+ }
41
+ const s = useShape(props);
24
42
  const scopeName = `current${inflection.camelize(scope)}`;
25
43
  const scopeInstance = Devise.getScope(scope);
26
44
  const ScopeContext = scopeInstance.getContext();
@@ -40,9 +58,14 @@ const WithCurrentUser = props => {
40
58
  const current = digg(result, "current")[0];
41
59
  if (current) Devise.updateSession(current);
42
60
  s.set({
61
+ result: {
62
+ loaded: true,
63
+ model: current
64
+ }
65
+ });
66
+ events.emit("currentUserLoaded", {
43
67
  current
44
68
  });
45
- if (s.props.onCurrentUserLoaded) setTimeout(() => s.props.onCurrentUserLoaded(current), 0);
46
69
  }, []);
47
70
  const defaultCurrentUser = useCallback(() => {
48
71
  const {
@@ -57,17 +80,25 @@ const WithCurrentUser = props => {
57
80
  current = Devise[scopeName]();
58
81
  logger.debug(() => `Setting ${scope} from global current scope: ${current?.id()}`);
59
82
  }
60
- if (current && s.props.onCurrentUserLoaded) {
61
- setTimeout(() => s.props.onCurrentUserLoaded(current), 0);
83
+ if (current) {
84
+ events.emit("currentUserLoaded", {
85
+ current
86
+ });
62
87
  }
63
88
  return current;
64
89
  }, []);
65
90
  s.useStates({
66
- current: () => defaultCurrentUser()
91
+ result: () => ({
92
+ loaded: false,
93
+ model: defaultCurrentUser()
94
+ })
67
95
  });
68
96
  const updateCurrentUser = useCallback(() => {
69
97
  s.set({
70
- current: Devise[s.m.scopeName]()
98
+ result: {
99
+ loaded: true,
100
+ model: Devise[s.m.scopeName]()
101
+ }
71
102
  });
72
103
  }, []);
73
104
  useMemo(() => {
@@ -85,9 +116,9 @@ const WithCurrentUser = props => {
85
116
  useEventEmitter(Devise.events(), "onDeviseSignIn", onDeviseSignIn);
86
117
  useEventEmitter(Devise.events(), "onDeviseSignOut", onDeviseSignOut);
87
118
  return /*#__PURE__*/React.createElement(ScopeContext.Provider, {
88
- value: s.s.current
89
- }, props.children);
119
+ value: s.s.result
120
+ }, children);
90
121
  };
91
- export { WithCurrentUser };
122
+ export { events, WithCurrentUser };
92
123
  export default useCurrentUser;
93
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwiRGV2aXNlIiwiZGlnZyIsImluZmxlY3Rpb24iLCJMb2dnZXIiLCJTZXJ2aWNlcyIsInVzZUV2ZW50RW1pdHRlciIsInVzZVNoYXBlIiwibG9nZ2VyIiwibmFtZSIsInVzZUN1cnJlbnRVc2VyIiwicHJvcHMiLCJzY29wZSIsInNjb3BlSW5zdGFuY2UiLCJnZXRTY29wZSIsImN1cnJlbnRVc2VyQ29udGV4dCIsImdldENvbnRleHQiLCJXaXRoQ3VycmVudFVzZXIiLCJzIiwic2NvcGVOYW1lIiwiY2FtZWxpemUiLCJTY29wZUNvbnRleHQiLCJtZXRhIiwibG9hZEN1cnJlbnRVc2VyRnJvbVJlcXVlc3QiLCJtIiwiZ2V0QXJnc01ldGhvZE5hbWUiLCJhcmdzIiwiZGVidWciLCJyZXN1bHQiLCJjdXJyZW50Iiwic2VuZFJlcXVlc3QiLCJxdWVyeSIsInVwZGF0ZVNlc3Npb24iLCJzZXQiLCJvbkN1cnJlbnRVc2VyTG9hZGVkIiwic2V0VGltZW91dCIsImRlZmF1bHRDdXJyZW50VXNlciIsImhhc0N1cnJlbnRTY29wZSIsImdldEN1cnJlbnRTY29wZSIsImlkIiwiaGFzR2xvYmFsQ3VycmVudFNjb3BlIiwidXNlU3RhdGVzIiwidXBkYXRlQ3VycmVudFVzZXIiLCJvbkRldmlzZVNpZ25JbiIsIm9uRGV2aXNlU2lnbk91dCIsImV2ZW50cyIsImNyZWF0ZUVsZW1lbnQiLCJQcm92aWRlciIsInZhbHVlIiwiY2hpbGRyZW4iXSwic291cmNlcyI6WyIuLi9zcmMvdXNlLWN1cnJlbnQtdXNlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBEZXZpc2UgZnJvbSBcIi4vZGV2aXNlXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCJcbmltcG9ydCBTZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlc1wiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCIuL3VzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3VzZS1zaGFwZVwiXG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoe25hbWU6IFwiQXBpTWFrZXIgLyB1c2VDdXJyZW50VXNlclwifSlcblxuLy8gbG9nZ2VyLnNldERlYnVnKHRydWUpXG5cbmNvbnN0IHVzZUN1cnJlbnRVc2VyID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHNjb3BlID0gcHJvcHM/LnNjb3BlIHx8IFwidXNlclwiXG4gIGNvbnN0IHNjb3BlSW5zdGFuY2UgPSBEZXZpc2UuZ2V0U2NvcGUoc2NvcGUpXG4gIGNvbnN0IGN1cnJlbnRVc2VyQ29udGV4dCA9IHVzZUNvbnRleHQoc2NvcGVJbnN0YW5jZS5nZXRDb250ZXh0KCkpXG5cbiAgcmV0dXJuIGN1cnJlbnRVc2VyQ29udGV4dFxufVxuXG5jb25zdCBXaXRoQ3VycmVudFVzZXIgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgcyA9IHVzZVNoYXBlKHByb3BzIHx8IHt9KVxuICBjb25zdCBzY29wZSA9IHByb3BzPy5zY29wZSB8fCBcInVzZXJcIlxuICBjb25zdCBzY29wZU5hbWUgPSBgY3VycmVudCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSl9YFxuICBjb25zdCBzY29wZUluc3RhbmNlID0gRGV2aXNlLmdldFNjb3BlKHNjb3BlKVxuICBjb25zdCBTY29wZUNvbnRleHQgPSBzY29wZUluc3RhbmNlLmdldENvbnRleHQoKVxuXG4gIHMubWV0YS5zY29wZSA9IHNjb3BlXG4gIHMubWV0YS5zY29wZU5hbWUgPSBzY29wZU5hbWVcblxuICBjb25zdCBsb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7c2NvcGV9ID0gcy5tXG4gICAgY29uc3QgZ2V0QXJnc01ldGhvZE5hbWUgPSBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlKX1BcmdzYFxuICAgIGNvbnN0IGFyZ3MgPSBEZXZpc2VbZ2V0QXJnc01ldGhvZE5hbWVdKClcblxuICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgTG9hZGluZyAke3Njb3BlfSB3aXRoIHJlcXVlc3RgKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiRGV2aXNlOjpDdXJyZW50XCIsIHtxdWVyeTogYXJncy5xdWVyeSwgc2NvcGV9KVxuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWdnKHJlc3VsdCwgXCJjdXJyZW50XCIpWzBdXG5cbiAgICBpZiAoY3VycmVudCkgRGV2aXNlLnVwZGF0ZVNlc3Npb24oY3VycmVudClcblxuICAgIHMuc2V0KHtjdXJyZW50fSlcblxuICAgIGlmIChzLnByb3BzLm9uQ3VycmVudFVzZXJMb2FkZWQpIHNldFRpbWVvdXQoKCkgPT4gcy5wcm9wcy5vbkN1cnJlbnRVc2VyTG9hZGVkKGN1cnJlbnQpLCAwKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0Q3VycmVudFVzZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qge3Njb3BlLCBzY29wZU5hbWV9ID0gcy5tXG4gICAgbGV0IGN1cnJlbnRcblxuICAgIGlmIChEZXZpc2UuY3VycmVudCgpLmhhc0N1cnJlbnRTY29wZShzLm0uc2NvcGUpKSB7XG4gICAgICBjdXJyZW50ID0gRGV2aXNlLmN1cnJlbnQoKS5nZXRDdXJyZW50U2NvcGUoc2NvcGUpXG5cbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgU2V0dGluZyAke3Njb3BlfSBmcm9tIGN1cnJlbnQgc2NvcGU6ICR7Y3VycmVudD8uaWQoKX1gKVxuICAgIH0gZWxzZSBpZiAoRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUoc2NvcGUpKSB7XG4gICAgICBjdXJyZW50ID0gRGV2aXNlW3Njb3BlTmFtZV0oKVxuXG4gICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYFNldHRpbmcgJHtzY29wZX0gZnJvbSBnbG9iYWwgY3VycmVudCBzY29wZTogJHtjdXJyZW50Py5pZCgpfWApXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnQgJiYgcy5wcm9wcy5vbkN1cnJlbnRVc2VyTG9hZGVkKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHMucHJvcHMub25DdXJyZW50VXNlckxvYWRlZChjdXJyZW50KSwgMClcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFxuICB9LCBbXSlcblxuICBzLnVzZVN0YXRlcyh7Y3VycmVudDogKCkgPT4gZGVmYXVsdEN1cnJlbnRVc2VyKCl9KVxuXG4gIGNvbnN0IHVwZGF0ZUN1cnJlbnRVc2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHMuc2V0KHtjdXJyZW50OiBEZXZpc2Vbcy5tLnNjb3BlTmFtZV0oKX0pXG4gIH0sIFtdKVxuXG4gIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUocy5tLnNjb3BlKSAmJiAhRGV2aXNlLmN1cnJlbnQoKS5oYXNDdXJyZW50U2NvcGUocy5tLnNjb3BlKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKCgpID0+IGBEZXZpc2UgaGFzbid0IGdvdCBjdXJyZW50IHNjb3BlICR7cy5tLnNjb3BlfSBzbyBsb2FkaW5nIGZyb20gcmVxdWVzdGApXG4gICAgICBsb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCgpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBvbkRldmlzZVNpZ25JbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB1cGRhdGVDdXJyZW50VXNlcigpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uRGV2aXNlU2lnbk91dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB1cGRhdGVDdXJyZW50VXNlcigpXG4gIH0sIFtdKVxuXG4gIHVzZUV2ZW50RW1pdHRlcihEZXZpc2UuZXZlbnRzKCksIFwib25EZXZpc2VTaWduSW5cIiwgb25EZXZpc2VTaWduSW4pXG4gIHVzZUV2ZW50RW1pdHRlcihEZXZpc2UuZXZlbnRzKCksIFwib25EZXZpc2VTaWduT3V0XCIsIG9uRGV2aXNlU2lnbk91dClcblxuICByZXR1cm4gKFxuICAgIDxTY29wZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3Mucy5jdXJyZW50fT5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L1Njb3BlQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQge1dpdGhDdXJyZW50VXNlcn1cbmV4cG9ydCBkZWZhdWx0IHVzZUN1cnJlbnRVc2VyXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQUssSUFBR0MsYUFBYSxFQUFFQyxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxRQUFPLE9BQU87QUFDNUUsT0FBT0MsTUFBTSxNQUFNLFVBQVU7QUFDN0IsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxNQUFNLE1BQU0sVUFBVTtBQUM3QixPQUFPQyxRQUFRLE1BQU0sWUFBWTtBQUNqQyxPQUFPQyxlQUFlLE1BQU0scUJBQXFCO0FBQ2pELE9BQU9DLFFBQVEsTUFBTSxpQ0FBaUM7QUFFdEQsTUFBTUMsTUFBTSxHQUFHLElBQUlKLE1BQU0sQ0FBQztFQUFDSyxJQUFJLEVBQUU7QUFBMkIsQ0FBQyxDQUFDOztBQUU5RDs7QUFFQSxNQUFNQyxjQUFjLEdBQUlDLEtBQUssSUFBSztFQUNoQyxNQUFNQyxLQUFLLEdBQUdELEtBQUssRUFBRUMsS0FBSyxJQUFJLE1BQU07RUFDcEMsTUFBTUMsYUFBYSxHQUFHWixNQUFNLENBQUNhLFFB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
124
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZU1lbW8iLCJEZXZpc2UiLCJkaWdnIiwiRXZlbnRFbWl0dGVyIiwiaW5mbGVjdGlvbiIsIkxvZ2dlciIsIlNlcnZpY2VzIiwidXNlRXZlbnRFbWl0dGVyIiwidXNlU2hhcGUiLCJldmVudHMiLCJsb2dnZXIiLCJuYW1lIiwic2V0RGVidWciLCJ1c2VDdXJyZW50VXNlciIsInByb3BzIiwic2NvcGUiLCJ3aXRoRGF0YSIsInJlc3RQcm9wcyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJFcnJvciIsImpvaW4iLCJzY29wZUluc3RhbmNlIiwiZ2V0U2NvcGUiLCJjdXJyZW50VXNlckNvbnRleHQiLCJnZXRDb250ZXh0IiwibW9kZWwiLCJXaXRoQ3VycmVudFVzZXIiLCJjaGlsZHJlbiIsInMiLCJzY29wZU5hbWUiLCJjYW1lbGl6ZSIsIlNjb3BlQ29udGV4dCIsIm1ldGEiLCJsb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCIsIm0iLCJnZXRBcmdzTWV0aG9kTmFtZSIsImFyZ3MiLCJkZWJ1ZyIsInJlc3VsdCIsImN1cnJlbnQiLCJzZW5kUmVxdWVzdCIsInF1ZXJ5IiwidXBkYXRlU2Vzc2lvbiIsInNldCIsImxvYWRlZCIsImVtaXQiLCJkZWZhdWx0Q3VycmVudFVzZXIiLCJoYXNDdXJyZW50U2NvcGUiLCJnZXRDdXJyZW50U2NvcGUiLCJpZCIsImhhc0dsb2JhbEN1cnJlbnRTY29wZSIsInVzZVN0YXRlcyIsInVwZGF0ZUN1cnJlbnRVc2VyIiwib25EZXZpc2VTaWduSW4iLCJvbkRldmlzZVNpZ25PdXQiLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy91c2UtY3VycmVudC11c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IERldmlzZSBmcm9tIFwiLi9kZXZpc2VcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCJcbmltcG9ydCBTZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlc1wiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCIuL3VzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3VzZS1zaGFwZVwiXG5cbmNvbnN0IGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcih7bmFtZTogXCJBcGlNYWtlciAvIHVzZUN1cnJlbnRVc2VyXCJ9KVxuXG5sb2dnZXIuc2V0RGVidWcoZmFsc2UpXG5cbmNvbnN0IHVzZUN1cnJlbnRVc2VyID0gKHByb3BzID0ge30pID0+IHtcbiAgY29uc3Qge3Njb3BlID0gXCJ1c2VyXCIsIHdpdGhEYXRhLCAuLi5yZXN0UHJvcHN9ID0gcHJvcHNcblxuICBpZiAoT2JqZWN0LmtleXMocmVzdFByb3BzKS5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHByb3BzIGdpdmVuIHRvIHVzZUN1cnJlbnRVc2VyOiAke09iamVjdC5rZXlzKHJlc3RQcm9wcykuam9pbihcIiwgXCIpfWApXG4gIH1cblxuICBjb25zdCBzY29wZUluc3RhbmNlID0gRGV2aXNlLmdldFNjb3BlKHNjb3BlKVxuICBjb25zdCBjdXJyZW50VXNlckNvbnRleHQgPSB1c2VDb250ZXh0KHNjb3BlSW5zdGFuY2UuZ2V0Q29udGV4dCgpKVxuXG4gIGlmICh3aXRoRGF0YSkge1xuICAgIHJldHVybiBjdXJyZW50VXNlckNvbnRleHRcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3VycmVudFVzZXJDb250ZXh0Lm1vZGVsXG4gIH1cbn1cblxuY29uc3QgV2l0aEN1cnJlbnRVc2VyID0gKHByb3BzID0ge30pID0+IHtcbiAgY29uc3Qge2NoaWxkcmVuLCBzY29wZSA9IFwidXNlclwiLCAuLi5yZXN0UHJvcHN9ID0gcHJvcHNcblxuICBpZiAoT2JqZWN0LmtleXMocmVzdFByb3BzKS5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHByb3BzIGdpdmVuIHRvIFdpdGhDdXJyZW50VXNlcjogJHtPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmpvaW4oXCIsIFwiKX1gKVxuICB9XG5cbiAgY29uc3QgcyA9IHVzZVNoYXBlKHByb3BzKVxuICBjb25zdCBzY29wZU5hbWUgPSBgY3VycmVudCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSl9YFxuICBjb25zdCBzY29wZUluc3RhbmNlID0gRGV2aXNlLmdldFNjb3BlKHNjb3BlKVxuICBjb25zdCBTY29wZUNvbnRleHQgPSBzY29wZUluc3RhbmNlLmdldENvbnRleHQoKVxuXG4gIHMubWV0YS5zY29wZSA9IHNjb3BlXG4gIHMubWV0YS5zY29wZU5hbWUgPSBzY29wZU5hbWVcblxuICBjb25zdCBsb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7c2NvcGV9ID0gcy5tXG4gICAgY29uc3QgZ2V0QXJnc01ldGhvZE5hbWUgPSBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlKX1BcmdzYFxuICAgIGNvbnN0IGFyZ3MgPSBEZXZpc2VbZ2V0QXJnc01ldGhvZE5hbWVdKClcblxuICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgTG9hZGluZyAke3Njb3BlfSB3aXRoIHJlcXVlc3RgKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiRGV2aXNlOjpDdXJyZW50XCIsIHtxdWVyeTogYXJncy5xdWVyeSwgc2NvcGV9KVxuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWdnKHJlc3VsdCwgXCJjdXJyZW50XCIpWzBdXG5cbiAgICBpZiAoY3VycmVudCkgRGV2aXNlLnVwZGF0ZVNlc3Npb24oY3VycmVudClcblxuICAgIHMuc2V0KHtcbiAgICAgIHJlc3VsdDoge1xuICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgIG1vZGVsOiBjdXJyZW50XG4gICAgICB9XG4gICAgfSlcblxuICAgIGV2ZW50cy5lbWl0KFwiY3VycmVudFVzZXJMb2FkZWRcIiwge2N1cnJlbnR9KVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0Q3VycmVudFVzZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qge3Njb3BlLCBzY29wZU5hbWV9ID0gcy5tXG4gICAgbGV0IGN1cnJlbnRcblxuICAgIGlmIChEZXZpc2UuY3VycmVudCgpLmhhc0N1cnJlbnRTY29wZShzLm0uc2NvcGUpKSB7XG4gICAgICBjdXJyZW50ID0gRGV2aXNlLmN1cnJlbnQoKS5nZXRDdXJyZW50U2NvcGUoc2NvcGUpXG5cbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgU2V0dGluZyAke3Njb3BlfSBmcm9tIGN1cnJlbnQgc2NvcGU6ICR7Y3VycmVudD8uaWQoKX1gKVxuICAgIH0gZWxzZSBpZiAoRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUoc2NvcGUpKSB7XG4gICAgICBjdXJyZW50ID0gRGV2aXNlW3Njb3BlTmFtZV0oKVxuXG4gICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYFNldHRpbmcgJHtzY29wZX0gZnJvbSBnbG9iYWwgY3VycmVudCBzY29wZTogJHtjdXJyZW50Py5pZCgpfWApXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgIGV2ZW50cy5lbWl0KFwiY3VycmVudFVzZXJMb2FkZWRcIiwge2N1cnJlbnR9KVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50XG4gIH0sIFtdKVxuXG4gIHMudXNlU3RhdGVzKHtcbiAgICByZXN1bHQ6ICgpID0+ICh7XG4gICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgbW9kZWw6IGRlZmF1bHRDdXJyZW50VXNlcigpXG4gICAgfSlcbiAgfSlcblxuICBjb25zdCB1cGRhdGVDdXJyZW50VXNlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzLnNldCh7XG4gICAgICByZXN1bHQ6IHtcbiAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICBtb2RlbDogRGV2aXNlW3MubS5zY29wZU5hbWVdKClcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIURldmlzZS5jdXJyZW50KCkuaGFzR2xvYmFsQ3VycmVudFNjb3BlKHMubS5zY29wZSkgJiYgIURldmlzZS5jdXJyZW50KCkuaGFzQ3VycmVudFNjb3BlKHMubS5zY29wZSkpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgRGV2aXNlIGhhc24ndCBnb3QgY3VycmVudCBzY29wZSAke3MubS5zY29wZX0gc28gbG9hZGluZyBmcm9tIHJlcXVlc3RgKVxuICAgICAgbG9hZEN1cnJlbnRVc2VyRnJvbVJlcXVlc3QoKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3Qgb25EZXZpc2VTaWduSW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXBkYXRlQ3VycmVudFVzZXIoKVxuICB9LCBbXSlcblxuICBjb25zdCBvbkRldmlzZVNpZ25PdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXBkYXRlQ3VycmVudFVzZXIoKVxuICB9LCBbXSlcblxuICB1c2VFdmVudEVtaXR0ZXIoRGV2aXNlLmV2ZW50cygpLCBcIm9uRGV2aXNlU2lnbkluXCIsIG9uRGV2aXNlU2lnbkluKVxuICB1c2VFdmVudEVtaXR0ZXIoRGV2aXNlLmV2ZW50cygpLCBcIm9uRGV2aXNlU2lnbk91dFwiLCBvbkRldmlzZVNpZ25PdXQpXG5cbiAgcmV0dXJuIChcbiAgICA8U2NvcGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzLnMucmVzdWx0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1Njb3BlQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQge2V2ZW50cywgV2l0aEN1cnJlbnRVc2VyfVxuZXhwb3J0IGRlZmF1bHQgdXNlQ3VycmVudFVzZXJcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxJQUFHQyxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxRQUFPLE9BQU87QUFDN0QsT0FBT0MsTUFBTSxNQUFNLFVBQVU7QUFDN0IsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBT0MsWUFBWSxNQUFNLFFBQVE7QUFDakMsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxNQUFNLE1BQU0sVUFBVTtBQUM3QixPQUFPQyxRQUFRLE1BQU0sWUFBWTtBQUNqQyxPQUFPQyxlQUFlLE1BQU0scUJBQXFCO0FBQ2pELE9BQU9DLFFBQVEsTUFBTSxpQ0FBaUM7QUFFdEQsTUFBTUMsTUFBTSxHQUFHLElBQUlOLFlBQVksQ0FBQyxDQUFDO0FBQ2pDLE1BQU1PLE1BQU0sR0FBRyxJQUFJTCxNQUFNLENBQUM7RUFBQ00sSUFBSSxFQUFFO0FBQTJCLENBQUMsQ0FBQztBQUU5REQsTUFBTSxDQUFDRSxRQUFRLENBQUMsS0FBSyxDQUFDO0FBRXRCLE1BQU1DLGNBQWMsR0FBR0EsQ0FBQ0MsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLO0VBQ3JDLE1BQU07SUFBQ0MsS0FBSyxHQUFHLE1BQU07SUFBRUMsUUFBUTtJQUFFLEdBQUdDO0VBQVMsQ0FBQyxHQUFHSCxLQUFLO0VBRXRELElBQUlJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBQ0csTUFBTSxHQUFHLENBQUMsRUFBRTtJQUNyQyxNQUFNLElBQUlDLEtBQUssQ0FBQywwQ0FBMENILE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBQ0ssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7RUFDaEc7RUFFQSxNQUFNQyxhQUFhLEdBQUd0QixNQUFNLENBQUN1QixRQUFRLENBQUNULEtBQUssQ0FBQztFQUM1QyxNQUFNVSxrQkFBa0IsR0FBRzFCLFVBQVUsQ0FBQ3dCLGFBQWEsQ0FBQ0csVUFBVSxDQUFDLENBQUMsQ0FBQztFQUVqRSxJQUFJVixRQUFRLEVBQUU7SUFDWixPQUFPUyxrQkFBa0I7RUFDM0IsQ0FBQyxNQUFNO0lBQ0wsT0FBT0Esa0JBQWtCLENBQUNFLEtBQUs7RUFDakM7QUFDRixDQUFDO0FBRUQsTUFBTUMsZUFBZSxHQUFHQSxDQUFDZCxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUs7RUFDdEMsTUFBTTtJQUFDZSxRQUFRO0lBQUVkLEtBQUssR0FBRyxNQUFNO0lBQUUsR0FBR0U7RUFBUyxDQUFDLEdBQUdILEtBQUs7RUFFdEQsSUFBSUksTUFBTSxDQUFDQyxJQUFJLENBQUNGLFNBQVMsQ0FBQyxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQ3JDLE1BQU0sSUFBSUMsS0FBSyxDQUFDLDJDQUEyQ0gsTUFBTSxDQUFDQyxJQUFJLENBQUNGLFNBQVMsQ0FBQyxDQUFDSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztFQUNqRztFQUVBLE1BQU1RLENBQUMsR0FBR3RCLFFBQVEsQ0FBQ00sS0FBSyxDQUFDO0VBQ3pCLE1BQU1pQixTQUFTLEdBQUcsVUFBVTNCLFVBQVUsQ0FBQzRCLFFBQVEsQ0FBQ2pCLEtBQUssQ0FBQyxFQUFFO0VBQ3hELE1BQU1RLGFBQWEsR0FBR3RCLE1BQU0sQ0FBQ3VCLFFBQVEsQ0FBQ1QsS0FBSyxDQUFDO0VBQzVDLE1BQU1rQixZQUFZLEdBQUdWLGFBQWEsQ0FBQ0csVUFBVSxDQUFDLENBQUM7RUFFL0NJLENBQUMsQ0FBQ0ksSUFBSSxDQUFDbkIsS0FBSyxHQUFHQSxLQUFLO0VBQ3BCZSxDQUFDLENBQUNJLElBQUksQ0FBQ0gsU0FBUyxHQUFHQSxTQUFTO0VBRTVCLE1BQU1JLDBCQUEwQixHQUFHckMsV0FBVyxDQUFDLFlBQVk7SUFDekQsTUFBTTtNQUFDaUI7SUFBSyxDQUFDLEdBQUdlLENBQUMsQ0FBQ00sQ0FBQztJQUNuQixNQUFNQyxpQkFBaUIsR0FBRyxNQUFNakMsVUFBVSxDQUFDNEIsUUFBUSxDQUFDakIsS0FBSyxDQUFDLE1BQU07SUFDaEUsTUFBTXVCLElBQUksR0FBR3JDLE1BQU0sQ0FBQ29DLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUV4QzNCLE1BQU0sQ0FBQzZCLEtBQUssQ0FBQyxNQUFNLFdBQVd4QixLQUFLLGVBQWUsQ0FBQztJQUVuRCxNQUFNeUIsTUFBTSxHQUFHLE1BQU1sQyxRQUFRLENBQUNtQyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxXQUFXLENBQUMsaUJBQWlCLEVBQUU7TUFBQ0MsS0FBSyxFQUFFTCxJQUFJLENBQUNLLEtBQUs7TUFBRTVCO0lBQUssQ0FBQyxDQUFDO0lBQ2xHLE1BQU0wQixPQUFPLEdBQUd2QyxJQUFJLENBQUNzQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFDLElBQUlDLE9BQU8sRUFBRXhDLE1BQU0sQ0FBQzJDLGFBQWEsQ0FBQ0gsT0FBTyxDQUFDO0lBRTFDWCxDQUFDLENBQUNlLEdBQUcsQ0FBQztNQUNKTCxNQUFNLEVBQUU7UUFDTk0sTUFBTSxFQUFFLElBQUk7UUFDWm5CLEtBQUssRUFBRWM7TUFDVDtJQUNGLENBQUMsQ0FBQztJQUVGaEMsTUFBTSxDQUFDc0MsSUFBSSxDQUFDLG1CQUFtQixFQUFFO01BQUNOO0lBQU8sQ0FBQyxDQUFDO0VBQzdDLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixNQUFNTyxrQkFBa0IsR0FBR2xELFdBQVcsQ0FBQyxNQUFNO0lBQzNDLE1BQU07TUFBQ2lCLEtBQUs7TUFBRWdCO0lBQVMsQ0FBQyxHQUFHRCxDQUFDLENBQUNNLENBQUM7SUFDOUIsSUFBSUssT0FBTztJQUVYLElBQUl4QyxNQUFNLENBQUN3QyxPQUFPLENBQUMsQ0FBQyxDQUFDUSxlQUFlLENBQUNuQixDQUFDLENBQUNNLENBQUMsQ0FBQ3JCLEtBQUssQ0FBQyxFQUFFO01BQy9DMEIsT0FBTyxHQUFHeEMsTUFBTSxDQUFDd0MsT0FBTyxDQUFDLENBQUMsQ0FBQ1MsZUFBZSxDQUFDbkMsS0FBSyxDQUFDO01BRWpETCxNQUFNLENBQUM2QixLQUFLLENBQUMsTUFBTSxXQUFXeEIsS0FBSyx3QkFBd0IwQixPQUFPLEVBQUVVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3RSxDQUFDLE1BQU0sSUFBSWxELE1BQU0sQ0FBQ3dDLE9BQU8sQ0FBQyxDQUFDLENBQUNXLHFCQUFxQixDQUFDckMsS0FBSyxDQUFDLEVBQUU7TUFDeEQwQixPQUFPLEdBQUd4QyxNQUFNLENBQUM4QixTQUFTLENBQUMsQ0FBQyxDQUFDO01BRTdCckIsTUFBTSxDQUFDNkIsS0FBSyxDQUFDLE1BQU0sV0FBV3hCLEtBQUssK0JBQStCMEIsT0FBTyxFQUFFVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEY7SUFFQSxJQUFJVixPQUFPLEVBQUU7TUFDWGhDLE1BQU0sQ0FBQ3NDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtRQUFDTjtNQUFPLENBQUMsQ0FBQztJQUM3QztJQUVBLE9BQU9BLE9BQU87RUFDaEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOWCxDQUFDLENBQUN1QixTQUFTLENBQUM7SUFDVmIsTUFBTSxFQUFFQSxDQUFBLE1BQU87TUFDYk0sTUFBTSxFQUFFLEtBQUs7TUFDYm5CLEtBQUssRUFBRXFCLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7RUFDSCxDQUFDLENBQUM7RUFFRixNQUFNTSxpQkFBaUIsR0FBR3hELFdBQVcsQ0FBQyxNQUFNO0lBQzFDZ0MsQ0FBQyxDQUFDZSxHQUFHLENBQUM7TUFDSkwsTUFBTSxFQUFFO1FBQ05NLE1BQU0sRUFBRSxJQUFJO1FBQ1puQixLQUFLLEVBQUUxQixNQUFNLENBQUM2QixDQUFDLENBQUNNLENBQUMsQ0FBQ0wsU0FBUyxDQUFDLENBQUM7TUFDL0I7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4vQixPQUFPLENBQUMsTUFBTTtJQUNaLElBQUksQ0FBQ0MsTUFBTSxDQUFDd0MsT0FBTyxDQUFDLENBQUMsQ0FBQ1cscUJBQXFCLENBQUN0QixDQUFDLENBQUNNLENBQUMsQ0FBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUNkLE1BQU0sQ0FBQ3dDLE9BQU8sQ0FBQyxDQUFDLENBQUNRLGVBQWUsQ0FBQ25CLENBQUMsQ0FBQ00sQ0FBQyxDQUFDckIsS0FBSyxDQUFDLEVBQUU7TUFDdEdMLE1BQU0sQ0FBQzZCLEtBQUssQ0FBQyxNQUFNLG1DQUFtQ1QsQ0FBQyxDQUFDTSxDQUFDLENBQUNyQixLQUFLLDBCQUEwQixDQUFDO01BQzFGb0IsMEJBQTBCLENBQUMsQ0FBQztJQUM5QjtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixNQUFNb0IsY0FBYyxHQUFHekQsV0FBVyxDQUFDLE1BQU07SUFDdkN3RCxpQkFBaUIsQ0FBQyxDQUFDO0VBQ3JCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixNQUFNRSxlQUFlLEdBQUcxRCxXQUFXLENBQUMsTUFBTTtJQUN4Q3dELGlCQUFpQixDQUFDLENBQUM7RUFDckIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOL0MsZUFBZSxDQUFDTixNQUFNLENBQUNRLE1BQU0sQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUU4QyxjQUFjLENBQUM7RUFDbEVoRCxlQUFlLENBQUNOLE1BQU0sQ0FBQ1EsTUFBTSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRStDLGVBQWUsQ0FBQztFQUVwRSxvQkFDRTNELEtBQUEsQ0FBQTRELGFBQUEsQ0FBQ3hCLFlBQVksQ0FBQ3lCLFFBQVE7SUFBQ0MsS0FBSyxFQUFFN0IsQ0FBQyxDQUFDQSxDQUFDLENBQUNVO0VBQU8sR0FDdENYLFFBQ29CLENBQUM7QUFFNUIsQ0FBQztBQUVELFNBQVFwQixNQUFNLEVBQUVtQixlQUFlO0FBQy9CLGVBQWVmLGNBQWMiLCJpZ25vcmVMaXN0IjpbXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaspernj/api-maker",
3
- "version": "1.0.2030",
3
+ "version": "1.0.2031",
4
4
  "description": "My new module",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -1,27 +1,43 @@
1
- import React, {createContext, useCallback, useContext, useMemo} from "react"
1
+ import React, {useCallback, useContext, useMemo} from "react"
2
2
  import Devise from "./devise"
3
3
  import {digg} from "diggerize"
4
+ import EventEmitter from "events"
4
5
  import * as inflection from "inflection"
5
6
  import Logger from "./logger"
6
7
  import Services from "./services"
7
8
  import useEventEmitter from "./use-event-emitter"
8
9
  import useShape from "set-state-compare/src/use-shape"
9
10
 
11
+ const events = new EventEmitter()
10
12
  const logger = new Logger({name: "ApiMaker / useCurrentUser"})
11
13
 
12
- // logger.setDebug(true)
14
+ logger.setDebug(false)
15
+
16
+ const useCurrentUser = (props = {}) => {
17
+ const {scope = "user", withData, ...restProps} = props
18
+
19
+ if (Object.keys(restProps).length > 0) {
20
+ throw new Error(`Unknown props given to useCurrentUser: ${Object.keys(restProps).join(", ")}`)
21
+ }
13
22
 
14
- const useCurrentUser = (props) => {
15
- const scope = props?.scope || "user"
16
23
  const scopeInstance = Devise.getScope(scope)
17
24
  const currentUserContext = useContext(scopeInstance.getContext())
18
25
 
19
- return currentUserContext
26
+ if (withData) {
27
+ return currentUserContext
28
+ } else {
29
+ return currentUserContext.model
30
+ }
20
31
  }
21
32
 
22
- const WithCurrentUser = (props) => {
23
- const s = useShape(props || {})
24
- const scope = props?.scope || "user"
33
+ const WithCurrentUser = (props = {}) => {
34
+ const {children, scope = "user", ...restProps} = props
35
+
36
+ if (Object.keys(restProps).length > 0) {
37
+ throw new Error(`Unknown props given to WithCurrentUser: ${Object.keys(restProps).join(", ")}`)
38
+ }
39
+
40
+ const s = useShape(props)
25
41
  const scopeName = `current${inflection.camelize(scope)}`
26
42
  const scopeInstance = Devise.getScope(scope)
27
43
  const ScopeContext = scopeInstance.getContext()
@@ -41,9 +57,14 @@ const WithCurrentUser = (props) => {
41
57
 
42
58
  if (current) Devise.updateSession(current)
43
59
 
44
- s.set({current})
60
+ s.set({
61
+ result: {
62
+ loaded: true,
63
+ model: current
64
+ }
65
+ })
45
66
 
46
- if (s.props.onCurrentUserLoaded) setTimeout(() => s.props.onCurrentUserLoaded(current), 0)
67
+ events.emit("currentUserLoaded", {current})
47
68
  }, [])
48
69
 
49
70
  const defaultCurrentUser = useCallback(() => {
@@ -60,17 +81,27 @@ const WithCurrentUser = (props) => {
60
81
  logger.debug(() => `Setting ${scope} from global current scope: ${current?.id()}`)
61
82
  }
62
83
 
63
- if (current && s.props.onCurrentUserLoaded) {
64
- setTimeout(() => s.props.onCurrentUserLoaded(current), 0)
84
+ if (current) {
85
+ events.emit("currentUserLoaded", {current})
65
86
  }
66
87
 
67
88
  return current
68
89
  }, [])
69
90
 
70
- s.useStates({current: () => defaultCurrentUser()})
91
+ s.useStates({
92
+ result: () => ({
93
+ loaded: false,
94
+ model: defaultCurrentUser()
95
+ })
96
+ })
71
97
 
72
98
  const updateCurrentUser = useCallback(() => {
73
- s.set({current: Devise[s.m.scopeName]()})
99
+ s.set({
100
+ result: {
101
+ loaded: true,
102
+ model: Devise[s.m.scopeName]()
103
+ }
104
+ })
74
105
  }, [])
75
106
 
76
107
  useMemo(() => {
@@ -92,11 +123,11 @@ const WithCurrentUser = (props) => {
92
123
  useEventEmitter(Devise.events(), "onDeviseSignOut", onDeviseSignOut)
93
124
 
94
125
  return (
95
- <ScopeContext.Provider value={s.s.current}>
96
- {props.children}
126
+ <ScopeContext.Provider value={s.s.result}>
127
+ {children}
97
128
  </ScopeContext.Provider>
98
129
  )
99
130
  }
100
131
 
101
- export {WithCurrentUser}
132
+ export {events, WithCurrentUser}
102
133
  export default useCurrentUser