use-stomp
Version:
react provider, class decorator, and a hook for websockets using the stomp protocol
42 lines (37 loc) • 5.23 kB
JavaScript
import "core-js/modules/es.object.get-own-property-descriptor";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
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) { _defineProperty(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; }
import { useCallback, useEffect, useState } from 'react';
import { useStompCtx } from './useStompCtx';
export default function useStomp(channel) {
var context = useStompCtx();
var _useState = useState(null),
_useState2 = _slicedToArray(_useState, 2),
message = _useState2[0],
setMsg = _useState2[1];
var send = 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]);
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VTdG9tcC50cyJdLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlU3RvbXBDdHgiLCJ1c2VTdG9tcCIsImNoYW5uZWwiLCJjb250ZXh0IiwibWVzc2FnZSIsInNldE1zZyIsInNlbmQiLCJvdGhlckNoYW5uZWxPck1lc3NhZ2UiLCJjb25uZWN0ZWQiLCJzdWJzY3JpcHRpb24iLCJzdWJzY3JpYmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBUUEsV0FBUixFQUFxQkMsU0FBckIsRUFBZ0NDLFFBQWhDLFFBQStDLE9BQS9DO0FBRUEsU0FBUUMsV0FBUixRQUEwQixlQUExQjtBQVFBLGVBQWUsU0FBU0MsUUFBVCxDQUFxQkMsT0FBckIsRUFBd0Q7QUFDbkUsTUFBTUMsT0FBTyxHQUFHSCxXQUFXLEVBQTNCOztBQURtRSxrQkFFekNELFFBQVEsQ0FBSSxJQUFKLENBRmlDO0FBQUE7QUFBQSxNQUU1REssT0FGNEQ7QUFBQSxNQUVuREMsTUFGbUQ7O0FBSW5FLE1BQU1DLElBQUksR0FBR1QsV0FBVztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUNwQixVQUFDVSxxQkFBRCxFQUF3QkgsT0FBeEIsRUFBb0M7QUFDaENELElBQUFBLE9BQU8sQ0FBQ0csSUFBUixDQUNJQyxxQkFBcUIsSUFBSUgsT0FBekIsR0FDTUcscUJBRE4sR0FFTUwsT0FIVixFQUlJRSxPQUpKO0FBTUgsR0FSbUIsR0FTcEIsQ0FBQ0YsT0FBRCxFQUFVQyxPQUFPLENBQUNHLElBQWxCLENBVG9CLENBQXhCO0FBWUFSLEVBQUFBLFNBQVMsQ0FBQyxZQUFNO0FBQ1osUUFBSUssT0FBTyxDQUFDSyxTQUFaLEVBQXVCO0FBQ25CLFVBQU1DLFlBQVksR0FBR04sT0FBTyxDQUFDTyxTQUFSLENBQWtCUixPQUFsQixFQUEyQixVQUFDRSxPQUFELEVBQWE7QUFDekRDLFFBQUFBLE1BQU0sQ0FBQztBQUFBLGlCQUFNRCxPQUFOO0FBQUEsU0FBRCxDQUFOO0FBQ0gsT0FGb0IsQ0FBckI7QUFJQSxhQUFPLFlBQU07QUFDVEssUUFBQUEsWUFBWTtBQUNmLE9BRkQ7QUFHSDtBQUNKLEdBVlEsRUFVTixDQUFDUCxPQUFELEVBQVVDLE9BQU8sQ0FBQ0ssU0FBbEIsQ0FWTSxDQUFUO0FBWUEsU0FBTyxDQUFDSixPQUFELEVBQVVFLElBQVYsRUFBZ0JILE9BQU8sQ0FBQ0ssU0FBeEIsQ0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge3VzZVN0b21wQ3R4fSBmcm9tICcuL3VzZVN0b21wQ3R4JztcblxuZXhwb3J0IHR5cGUgVXNlU3RvbXBQcm9wczxUPiA9IFtcbiAgICBULFxuICAgIChvdGhlckNoYW5uZWxPck1lc3NhZ2U6IHN0cmluZyB8IFQsIG1lc3NhZ2U/OiBUKSA9PiB2b2lkLFxuICAgIGJvb2xlYW5cbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVN0b21wPFQ+KGNoYW5uZWw6IHN0cmluZyk6IFVzZVN0b21wUHJvcHM8VD4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VTdG9tcEN0eCgpO1xuICAgIGNvbnN0IFttZXNzYWdlLCBzZXRNc2ddID0gdXNlU3RhdGU8VD4obnVsbCk7XG5cbiAgICBjb25zdCBzZW5kID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIChvdGhlckNoYW5uZWxPck1lc3NhZ2UsIG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnRleHQuc2VuZChcbiAgICAgICAgICAgICAgICBvdGhlckNoYW5uZWxPck1lc3NhZ2UgJiYgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICA/IG90aGVyQ2hhbm5lbE9yTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICA6IGNoYW5uZWwsXG4gICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgW2NoYW5uZWwsIGNvbnRleHQuc2VuZF1cbiAgICApO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRleHQuY29ubmVjdGVkKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBjb250ZXh0LnN1YnNjcmliZShjaGFubmVsLCAobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgICAgIHNldE1zZygoKSA9PiBtZXNzYWdlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtjaGFubmVsLCBjb250ZXh0LmNvbm5lY3RlZF0pO1xuXG4gICAgcmV0dXJuIFttZXNzYWdlLCBzZW5kLCBjb250ZXh0LmNvbm5lY3RlZF07XG59XG4iXX0=