UNPKG

@coko/client

Version:

Client side common code for coko apps

62 lines (61 loc) 2.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _client = require("@apollo/client"); var _currentUserContext = require("../helpers/currentUserContext"); var _currentUserQuery = require("../helpers/currentUserQuery"); var _Spin = _interopRequireDefault(require("../ui/common/Spin")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var AuthWrapper = function AuthWrapper(props) { var LoadingComponent = props.loadingComponent, currentUserQuery = props.currentUserQuery, children = props.children; var _useCurrentUser = (0, _currentUserContext.useCurrentUser)(), currentUser = _useCurrentUser.currentUser, setCurrentUser = _useCurrentUser.setCurrentUser; var _useQuery = (0, _client.useQuery)(currentUserQuery, { skip: currentUser, onCompleted: function onCompleted(_ref) { var fetchedUser = _ref.currentUser; setCurrentUser(fetchedUser); }, onError: function onError(error) { // Make sure 'currentUser' is defined and null so that RequireAuth knows // to clear the current (corrupted) token. // Note on session states: // * undefined: current user remains unresolved // * null: current user is resolved but unauthorised or token invalid setCurrentUser(null); console.error(error); } }), loading = _useQuery.loading; (0, _client.useSubscription)(_currentUserQuery.USER_UPDATED_SUBSCRIPTION, { skip: !currentUser, variables: { userId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.id }, onData: function onData(_ref2) { var data = _ref2.data; var userUpdated = data.data.userUpdated; setCurrentUser(userUpdated); } }); return /*#__PURE__*/_react["default"].createElement(LoadingComponent, { spinning: loading && !currentUser }, children); }; AuthWrapper.propTypes = { loadingComponent: _propTypes["default"].func, currentUserQuery: _propTypes["default"].shape() }; AuthWrapper.defaultProps = { loadingComponent: _Spin["default"], currentUserQuery: _currentUserQuery.CURRENT_USER }; var _default = AuthWrapper; exports["default"] = _default;