UNPKG

use-stomp

Version:

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

87 lines (71 loc) 11.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); require("core-js/modules/es.array.for-each"); require("core-js/modules/es.object.get-own-property-descriptor"); require("core-js/modules/web.dom-collections.for-each"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useStompNotifications; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _notistack = require("notistack"); 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 useStompNotifications(channel, options) { var context = (0, _useStompCtx.useStompCtx)(); var _useSnackbar = (0, _notistack.useSnackbar)(), closeSnackbar = _useSnackbar.closeSnackbar, enqueueSnackbar = _useSnackbar.enqueueSnackbar; var _useState = (0, _react.useState)([]), _useState2 = (0, _slicedToArray2.default)(_useState, 2), messages = _useState2[0], setMessages = _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.subscribeSync(channel, function (messages, added, removed) { added.forEach(function (item) { enqueueSnackbar(options.parseMessage ? options.parseMessage(item) : item.content, _objectSpread(_objectSpread(_objectSpread({ key: item.id, disableWindowBlurListener: true, ClickAwayListenerProps: { mouseEvent: false, touchEvent: false } }, options), options.action ? { action: options.action(function () { closeSnackbar(item.id); }) } : {}), {}, { onClose: function onClose() { item.dismiss(); }, variant: options.parseVariant ? options.parseVariant(item) : item.variant || 'info' })); }); removed.forEach(function (item) { closeSnackbar(item.id); }); setMessages(function () { return messages; }); }); return function () { subscription(); }; } }, [channel, context.connected]); return [messages, send, context.connected]; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VTdG9tcE5vdGlmaWNhdGlvbnMudHN4Il0sIm5hbWVzIjpbInVzZVN0b21wTm90aWZpY2F0aW9ucyIsImNoYW5uZWwiLCJvcHRpb25zIiwiY29udGV4dCIsImNsb3NlU25hY2tiYXIiLCJlbnF1ZXVlU25hY2tiYXIiLCJtZXNzYWdlcyIsInNldE1lc3NhZ2VzIiwic2VuZCIsIm90aGVyQ2hhbm5lbE9yTWVzc2FnZSIsIm1lc3NhZ2UiLCJjb25uZWN0ZWQiLCJzdWJzY3JpcHRpb24iLCJzdWJzY3JpYmVTeW5jIiwiYWRkZWQiLCJyZW1vdmVkIiwiZm9yRWFjaCIsIml0ZW0iLCJwYXJzZU1lc3NhZ2UiLCJjb250ZW50Iiwia2V5IiwiaWQiLCJkaXNhYmxlV2luZG93Qmx1ckxpc3RlbmVyIiwiQ2xpY2tBd2F5TGlzdGVuZXJQcm9wcyIsIm1vdXNlRXZlbnQiLCJ0b3VjaEV2ZW50IiwiYWN0aW9uIiwib25DbG9zZSIsImRpc21pc3MiLCJ2YXJpYW50IiwicGFyc2VWYXJpYW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBR0E7Ozs7OztBQXFCZSxTQUFTQSxxQkFBVCxDQUlYQyxPQUpXLEVBS1hDLE9BTFcsRUFNK0Q7QUFDMUUsTUFBTUMsT0FBTyxHQUFHLCtCQUFoQjs7QUFEMEUscUJBRWpDLDZCQUZpQztBQUFBLE1BRW5FQyxhQUZtRSxnQkFFbkVBLGFBRm1FO0FBQUEsTUFFcERDLGVBRm9ELGdCQUVwREEsZUFGb0Q7O0FBQUEsa0JBRzFDLHFCQUU5QixFQUY4QixDQUgwQztBQUFBO0FBQUEsTUFHbkVDLFFBSG1FO0FBQUEsTUFHekRDLFdBSHlEOztBQU8xRSxNQUFNQyxJQUFJLEdBQUc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFDVCxVQUFDQyxxQkFBRCxFQUF3QkMsT0FBeEIsRUFBb0M7QUFDaENQLElBQUFBLE9BQU8sQ0FBQ0ssSUFBUixDQUNJQyxxQkFBcUIsSUFBSUMsT0FBekIsR0FDTUQscUJBRE4sR0FFTVIsT0FIVixFQUlJUyxPQUpKO0FBTUgsR0FSUSxHQVNULENBQUNULE9BQUQsRUFBVUUsT0FBTyxDQUFDSyxJQUFsQixDQVRTLENBQWI7QUFZQSx3QkFBVSxZQUFNO0FBQ1osUUFBSUwsT0FBTyxDQUFDUSxTQUFaLEVBQXVCO0FBQ25CLFVBQU1DLFlBQVksR0FBR1QsT0FBTyxDQUFDVSxhQUFSLENBQ2pCWixPQURpQixFQUVqQixVQUFDSyxRQUFELEVBQVdRLEtBQVgsRUFBa0JDLE9BQWxCLEVBQThCO0FBQzFCRCxRQUFBQSxLQUFLLENBQUNFLE9BQU4sQ0FBYyxVQUFDQyxJQUFELEVBQVU7QUFDcEJaLFVBQUFBLGVBQWUsQ0FDWEgsT0FBTyxDQUFDZ0IsWUFBUixHQUNNaEIsT0FBTyxDQUFDZ0IsWUFBUixDQUFxQkQsSUFBckIsQ0FETixHQUVNQSxJQUFJLENBQUNFLE9BSEE7QUFLUEMsWUFBQUEsR0FBRyxFQUFFSCxJQUFJLENBQUNJLEVBTEg7QUFNUEMsWUFBQUEseUJBQXlCLEVBQUUsSUFOcEI7QUFPUEMsWUFBQUEsc0JBQXNCLEVBQUU7QUFDcEJDLGNBQUFBLFVBQVUsRUFBRSxLQURRO0FBRXBCQyxjQUFBQSxVQUFVLEVBQUU7QUFGUTtBQVBqQixhQVdKdkIsT0FYSSxHQVlIQSxPQUFPLENBQUN3QixNQUFSLEdBQ0U7QUFDSUEsWUFBQUEsTUFBTSxFQUFFeEIsT0FBTyxDQUFDd0IsTUFBUixDQUFlLFlBQU07QUFDekJ0QixjQUFBQSxhQUFhLENBQUNhLElBQUksQ0FBQ0ksRUFBTixDQUFiO0FBQ0gsYUFGTztBQURaLFdBREYsR0FNRSxFQWxCQztBQW1CUE0sWUFBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ1hWLGNBQUFBLElBQUksQ0FBQ1csT0FBTDtBQUNILGFBckJNO0FBc0JQQyxZQUFBQSxPQUFPLEVBQUUzQixPQUFPLENBQUM0QixZQUFSLEdBQ0g1QixPQUFPLENBQUM0QixZQUFSLENBQXFCYixJQUFyQixDQURHLEdBRUhBLElBQUksQ0FBQ1ksT0FBTCxJQUFnQjtBQXhCZixhQUFmO0FBMkJILFNBNUJEO0FBOEJBZCxRQUFBQSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsVUFBQ0MsSUFBRCxFQUFVO0FBQ3RCYixVQUFBQSxhQUFhLENBQUNhLElBQUksQ0FBQ0ksRUFBTixDQUFiO0FBQ0gsU0FGRDtBQUlBZCxRQUFBQSxXQUFXLENBQUM7QUFBQSxpQkFBTUQsUUFBTjtBQUFBLFNBQUQsQ0FBWDtBQUNILE9BdENnQixDQUFyQjtBQXlDQSxhQUFPLFlBQU07QUFDVE0sUUFBQUEsWUFBWTtBQUNmLE9BRkQ7QUFHSDtBQUNKLEdBL0NELEVBK0NHLENBQUNYLE9BQUQsRUFBVUUsT0FBTyxDQUFDUSxTQUFsQixDQS9DSDtBQWlEQSxTQUFPLENBQUNMLFFBQUQsRUFBV0UsSUFBWCxFQUFpQkwsT0FBTyxDQUFDUSxTQUF6QixDQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZVNuYWNrYmFyfSBmcm9tICdub3Rpc3RhY2snO1xuaW1wb3J0IHR5cGUge09wdGlvbnNPYmplY3QsIFZhcmlhbnRUeXBlfSBmcm9tICdub3Rpc3RhY2snO1xuaW1wb3J0IHt1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge3VzZVN0b21wQ3R4fSBmcm9tICcuL3VzZVN0b21wQ3R4JztcblxuZXhwb3J0IHR5cGUgVXNlU3RvbXBOb3RpZmljYXRpb25zUHJvcHM8VCwgTT4gPSBbXG4gICAgVFtdLFxuICAgIChvdGhlckNoYW5uZWxPck1lc3NhZ2U6IHN0cmluZyB8IFQsIG1lc3NhZ2U/OiBNKSA9PiB2b2lkLFxuICAgIGJvb2xlYW5cbl07XG5cbmV4cG9ydCB0eXBlIFN0b21wTm90aWZpY2F0aW9uPFQ+ID0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29udGVudDogVDtcbiAgICBkaXNtaXNzOiAoKSA9PiB2b2lkO1xuICAgIHZhcmlhbnQ/OiBWYXJpYW50VHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIFN0b21wTm90aXN0YWNrT3B0aW9uczxUPiA9IE9taXQ8T3B0aW9uc09iamVjdCwgJ2FjdGlvbicgfCAna2V5Jz4gJiB7XG4gICAgYWN0aW9uOiAoZGlzbWlzczogKCkgPT4gdm9pZCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICAgIHBhcnNlTWVzc2FnZT86IChtZXNzYWdlOiBTdG9tcE5vdGlmaWNhdGlvbjxUPikgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICAgIHBhcnNlVmFyaWFudD86IChtZXNzYWdlOiBTdG9tcE5vdGlmaWNhdGlvbjxUPikgPT4gVmFyaWFudFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VTdG9tcE5vdGlmaWNhdGlvbnM8XG4gICAgUmVjZWl2ZU1lc3NhZ2UsXG4gICAgU2VuZE1lc3NhZ2UgPSBhbnlcbj4oXG4gICAgY2hhbm5lbDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBTdG9tcE5vdGlzdGFja09wdGlvbnM8UmVjZWl2ZU1lc3NhZ2U+XG4pOiBVc2VTdG9tcE5vdGlmaWNhdGlvbnNQcm9wczxTdG9tcE5vdGlmaWNhdGlvbjxSZWNlaXZlTWVzc2FnZT4sIFNlbmRNZXNzYWdlPiB7XG4gICAgY29uc3QgY29udGV4dCA9IHVzZVN0b21wQ3R4KCk7XG4gICAgY29uc3Qge2Nsb3NlU25hY2tiYXIsIGVucXVldWVTbmFja2Jhcn0gPSB1c2VTbmFja2JhcigpO1xuICAgIGNvbnN0IFttZXNzYWdlcywgc2V0TWVzc2FnZXNdID0gdXNlU3RhdGU8XG4gICAgICAgIFN0b21wTm90aWZpY2F0aW9uPFJlY2VpdmVNZXNzYWdlPltdXG4gICAgPihbXSk7XG5cbiAgICBjb25zdCBzZW5kID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIChvdGhlckNoYW5uZWxPck1lc3NhZ2UsIG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnRleHQuc2VuZChcbiAgICAgICAgICAgICAgICBvdGhlckNoYW5uZWxPck1lc3NhZ2UgJiYgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICA/IG90aGVyQ2hhbm5lbE9yTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICA6IGNoYW5uZWwsXG4gICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgW2NoYW5uZWwsIGNvbnRleHQuc2VuZF1cbiAgICApO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRleHQuY29ubmVjdGVkKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBjb250ZXh0LnN1YnNjcmliZVN5bmMoXG4gICAgICAgICAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgICAgICAgICAobWVzc2FnZXMsIGFkZGVkLCByZW1vdmVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFkZGVkLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVucXVldWVTbmFja2JhcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhcnNlTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMucGFyc2VNZXNzYWdlKGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5jb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlV2luZG93Qmx1ckxpc3RlbmVyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlja0F3YXlMaXN0ZW5lclByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZUV2ZW50OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoRXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihvcHRpb25zLmFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IG9wdGlvbnMuYWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNuYWNrYmFyKGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzbWlzcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50OiBvcHRpb25zLnBhcnNlVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvcHRpb25zLnBhcnNlVmFyaWFudChpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtLnZhcmlhbnQgfHwgJ2luZm8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNuYWNrYmFyKGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBzZXRNZXNzYWdlcygoKSA9PiBtZXNzYWdlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LCBbY2hhbm5lbCwgY29udGV4dC5jb25uZWN0ZWRdKTtcblxuICAgIHJldHVybiBbbWVzc2FnZXMsIHNlbmQsIGNvbnRleHQuY29ubmVjdGVkXTtcbn1cbiJdfQ==