use-stomp
Version:
react provider, class decorator, and a hook for websockets using the stomp protocol
55 lines (43 loc) • 5.33 kB
JavaScript
;
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