UNPKG

use-stomp

Version:

react provider, class decorator, and a hook for websockets using the stomp protocol

55 lines (43 loc) 5.33 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); require("core-js/modules/es.object.get-own-property-descriptor"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useStomp; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _useStompCtx = require("./useStompCtx"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function useStomp(channel) { var context = (0, _useStompCtx.useStompCtx)(); var _useState = (0, _react.useState)(null), _useState2 = (0, _slicedToArray2.default)(_useState, 2), message = _useState2[0], setMsg = _useState2[1]; var send = (0, _react.useCallback)(function (name, callable) { callable.displayName = name; Object.defineProperty(callable, "name", _objectSpread(_objectSpread({}, Object.getOwnPropertyDescriptor(callable, "name")), {}, { value: name })); return callable; }("send", function (otherChannelOrMessage, message) { context.send(otherChannelOrMessage && message ? otherChannelOrMessage : channel, message); }), [channel, context.send]); (0, _react.useEffect)(function () { if (context.connected) { var subscription = context.subscribe(channel, function (message) { setMsg(function () { return message; }); }); return function () { subscription(); }; } }, [channel, context.connected]); return [message, send, context.connected]; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VTdG9tcC50cyJdLCJuYW1lcyI6WyJ1c2VTdG9tcCIsImNoYW5uZWwiLCJjb250ZXh0IiwibWVzc2FnZSIsInNldE1zZyIsInNlbmQiLCJvdGhlckNoYW5uZWxPck1lc3NhZ2UiLCJjb25uZWN0ZWQiLCJzdWJzY3JpcHRpb24iLCJzdWJzY3JpYmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOzs7Ozs7QUFRZSxTQUFTQSxRQUFULENBQXFCQyxPQUFyQixFQUF3RDtBQUNuRSxNQUFNQyxPQUFPLEdBQUcsK0JBQWhCOztBQURtRSxrQkFFekMscUJBQVksSUFBWixDQUZ5QztBQUFBO0FBQUEsTUFFNURDLE9BRjREO0FBQUEsTUFFbkRDLE1BRm1EOztBQUluRSxNQUFNQyxJQUFJLEdBQUc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFDVCxVQUFDQyxxQkFBRCxFQUF3QkgsT0FBeEIsRUFBb0M7QUFDaENELElBQUFBLE9BQU8sQ0FBQ0csSUFBUixDQUNJQyxxQkFBcUIsSUFBSUgsT0FBekIsR0FDTUcscUJBRE4sR0FFTUwsT0FIVixFQUlJRSxPQUpKO0FBTUgsR0FSUSxHQVNULENBQUNGLE9BQUQsRUFBVUMsT0FBTyxDQUFDRyxJQUFsQixDQVRTLENBQWI7QUFZQSx3QkFBVSxZQUFNO0FBQ1osUUFBSUgsT0FBTyxDQUFDSyxTQUFaLEVBQXVCO0FBQ25CLFVBQU1DLFlBQVksR0FBR04sT0FBTyxDQUFDTyxTQUFSLENBQWtCUixPQUFsQixFQUEyQixVQUFDRSxPQUFELEVBQWE7QUFDekRDLFFBQUFBLE1BQU0sQ0FBQztBQUFBLGlCQUFNRCxPQUFOO0FBQUEsU0FBRCxDQUFOO0FBQ0gsT0FGb0IsQ0FBckI7QUFJQSxhQUFPLFlBQU07QUFDVEssUUFBQUEsWUFBWTtBQUNmLE9BRkQ7QUFHSDtBQUNKLEdBVkQsRUFVRyxDQUFDUCxPQUFELEVBQVVDLE9BQU8sQ0FBQ0ssU0FBbEIsQ0FWSDtBQVlBLFNBQU8sQ0FBQ0osT0FBRCxFQUFVRSxJQUFWLEVBQWdCSCxPQUFPLENBQUNLLFNBQXhCLENBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHt1c2VTdG9tcEN0eH0gZnJvbSAnLi91c2VTdG9tcEN0eCc7XG5cbmV4cG9ydCB0eXBlIFVzZVN0b21wUHJvcHM8VD4gPSBbXG4gICAgVCxcbiAgICAob3RoZXJDaGFubmVsT3JNZXNzYWdlOiBzdHJpbmcgfCBULCBtZXNzYWdlPzogVCkgPT4gdm9pZCxcbiAgICBib29sZWFuXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VTdG9tcDxUPihjaGFubmVsOiBzdHJpbmcpOiBVc2VTdG9tcFByb3BzPFQ+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gdXNlU3RvbXBDdHgoKTtcbiAgICBjb25zdCBbbWVzc2FnZSwgc2V0TXNnXSA9IHVzZVN0YXRlPFQ+KG51bGwpO1xuXG4gICAgY29uc3Qgc2VuZCA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAob3RoZXJDaGFubmVsT3JNZXNzYWdlLCBtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICBjb250ZXh0LnNlbmQoXG4gICAgICAgICAgICAgICAgb3RoZXJDaGFubmVsT3JNZXNzYWdlICYmIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgPyBvdGhlckNoYW5uZWxPck1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgOiBjaGFubmVsLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIFtjaGFubmVsLCBjb250ZXh0LnNlbmRdXG4gICAgKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250ZXh0LmNvbm5lY3RlZCkge1xuICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gY29udGV4dC5zdWJzY3JpYmUoY2hhbm5lbCwgKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRNc2coKCkgPT4gbWVzc2FnZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LCBbY2hhbm5lbCwgY29udGV4dC5jb25uZWN0ZWRdKTtcblxuICAgIHJldHVybiBbbWVzc2FnZSwgc2VuZCwgY29udGV4dC5jb25uZWN0ZWRdO1xufVxuIl19