@bigbinary/neeto-webhooks-frontend 1.6.13 → 1.6.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,28 +1,32 @@
1
1
  import React, { useState, useRef, useEffect, useCallback } from 'react';
2
- import { useParams, useRouteMatch, Switch as Switch$1, Route } from 'react-router-dom';
3
- import { isPresent, removeBy, isNotEmpty, removeById, findBy } from '@bigbinary/neeto-cist';
2
+ import { useRouteMatch, useHistory, useParams, Switch as Switch$1, Route } from 'react-router-dom';
3
+ import { isNotPresent, isPresent, removeBy, isNotEmpty, removeById, findBy } from '@bigbinary/neeto-cist';
4
4
  import { DEFAULT_STALE_TIME, SINGULAR, DEFAULT_PAGE_SIZE, PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
5
+ import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
5
6
  import Container from '@bigbinary/neeto-molecules/Container';
6
7
  import Header$2 from '@bigbinary/neeto-molecules/Header';
7
8
  import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
8
9
  import TableWrapper from '@bigbinary/neeto-molecules/TableWrapper';
9
- import { Spinner, Typography, Tag, Tab, Pane, Button, Table, NoData, Alert } from '@bigbinary/neetoui';
10
- import { useTranslation, Trans } from 'react-i18next';
10
+ import { Typography, Tag, Tab, Pane, Button, Table, NoData, Spinner, Alert } from '@bigbinary/neetoui';
11
+ import { useTranslation } from 'react-i18next';
11
12
  import { QueryClient, QueryCache, QueryClientProvider, useQuery, useQueryClient, useMutation } from 'react-query';
12
13
  import { ReactQueryDevtools } from 'react-query/devtools';
13
14
  import axios from 'axios';
14
15
  import DateFormat from '@bigbinary/neeto-molecules/DateFormat';
15
16
  import { t as t$1 } from 'i18next';
16
17
  import { prop, pluck, assoc } from 'ramda';
17
- import { Info, Plus } from '@bigbinary/neeto-icons';
18
+ import { Plus } from '@bigbinary/neeto-icons';
19
+ import HelpPopover from '@bigbinary/neeto-molecules/HelpPopover';
18
20
  import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
19
21
  import { Form, Textarea, Select, Input, Switch, ActionBlock } from '@bigbinary/neetoui/formik';
20
- import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
21
22
  import * as yup from 'yup';
22
23
 
23
24
  var getDeliveriesPath = function getDeliveriesPath(webhooksPath) {
24
25
  return "".concat(webhooksPath, "/:webhookId/deliveries");
25
26
  };
27
+ var getDeliveryDetailsPath = function getDeliveryDetailsPath(deliveriesPath) {
28
+ return "".concat(deliveriesPath, "/:deliveryId/");
29
+ };
26
30
 
27
31
  function _arrayLikeToArray(arr, len) {
28
32
  if (len == null || len > arr.length) len = arr.length;
@@ -157,7 +161,8 @@ var useShowDelivery = function useShowDelivery(id) {
157
161
  return useQuery([QUERY_KEYS.DELIVERY_DETAILS, id], function () {
158
162
  return deliveriesApi.show(id);
159
163
  }, {
160
- staleTime: DELIVERY_STALE_TIME
164
+ staleTime: DELIVERY_STALE_TIME,
165
+ enabled: !!id
161
166
  });
162
167
  };
163
168
  var useRedeliverWebhook = function useRedeliverWebhook() {
@@ -572,30 +577,18 @@ var Snippet = function Snippet(_ref) {
572
577
 
573
578
  var TransactionDetails = function TransactionDetails(_ref) {
574
579
  var delivery = _ref.delivery;
575
- var deliveryId = delivery.id,
576
- status = delivery.status,
577
- identifier = delivery.identifier,
578
- responseStatusCode = delivery.responseStatusCode;
579
580
  var _useState = useState(DELIVERY_TAB.request),
580
581
  _useState2 = _slicedToArray(_useState, 2),
581
582
  activeHeader = _useState2[0],
582
583
  setActiveHeader = _useState2[1];
583
584
  var _useTranslation = useTranslation(),
584
585
  t = _useTranslation.t;
585
- var _useShowDelivery = useShowDelivery(deliveryId),
586
- isLoading = _useShowDelivery.isLoading,
587
- _useShowDelivery$data = _useShowDelivery.data,
588
- _useShowDelivery$data2 = _useShowDelivery$data === void 0 ? {} : _useShowDelivery$data,
589
- _useShowDelivery$data3 = _useShowDelivery$data2.delivery,
590
- deliveryDetails = _useShowDelivery$data3 === void 0 ? {} : _useShowDelivery$data3;
591
- if (isLoading) {
592
- return /*#__PURE__*/React.createElement("div", {
593
- className: "flex w-full items-center justify-center py-6"
594
- }, /*#__PURE__*/React.createElement(Spinner, null));
595
- }
586
+ var status = delivery.status,
587
+ identifier = delivery.identifier,
588
+ responseStatusCode = delivery.responseStatusCode;
596
589
  var renderPayload = function renderPayload() {
597
590
  try {
598
- return JSON.stringify(JSON.parse(deliveryDetails.requestBody), null, 2);
591
+ return JSON.stringify(JSON.parse(delivery.requestBody), null, 2);
599
592
  } catch (_unused) {
600
593
  return "";
601
594
  }
@@ -636,7 +629,7 @@ var TransactionDetails = function TransactionDetails(_ref) {
636
629
  style: "h5"
637
630
  }, t("neetoWebhooks.delivery.header")), /*#__PURE__*/React.createElement(Snippet, {
638
631
  dataCy: "delivery-request-header"
639
- }, deliveryDetails.requestHeader)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
632
+ }, delivery.requestHeader)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
640
633
  style: "h5"
641
634
  }, t("neetoWebhooks.delivery.payload")), /*#__PURE__*/React.createElement(Snippet, {
642
635
  dataCy: "delivery-request-payload"
@@ -646,31 +639,33 @@ var TransactionDetails = function TransactionDetails(_ref) {
646
639
  style: "h5"
647
640
  }, t("neetoWebhooks.delivery.header")), /*#__PURE__*/React.createElement(Snippet, {
648
641
  dataCy: "delivery-response-header"
649
- }, deliveryDetails.responseHeader)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
642
+ }, delivery.responseHeader)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
650
643
  style: "h5"
651
644
  }, t("neetoWebhooks.delivery.body")), /*#__PURE__*/React.createElement(Snippet, {
652
645
  dataCy: "delivery-response-body"
653
- }, deliveryDetails.responseBody)))));
646
+ }, delivery.responseBody)))));
654
647
  };
655
648
 
656
649
  var Details = function Details(_ref) {
657
- var delivery = _ref.delivery,
658
- onClose = _ref.onClose;
659
- var createdAt = delivery.createdAt,
660
- id = delivery.id,
661
- event = delivery.event;
650
+ var onClose = _ref.onClose,
651
+ deliveryId = _ref.deliveryId;
662
652
  var _useTranslation = useTranslation(),
663
653
  t = _useTranslation.t;
664
654
  var _useRedeliverWebhook = useRedeliverWebhook(),
665
655
  isRedelivering = _useRedeliverWebhook.isLoading,
666
656
  redeliverWebhook = _useRedeliverWebhook.mutateAsync;
657
+ var _useShowDelivery = useShowDelivery(deliveryId),
658
+ isLoading = _useShowDelivery.isLoading,
659
+ _useShowDelivery$data = _useShowDelivery.data,
660
+ _useShowDelivery$data2 = _useShowDelivery$data === void 0 ? {} : _useShowDelivery$data,
661
+ delivery = _useShowDelivery$data2.delivery;
667
662
  var handleRedeliverClick = /*#__PURE__*/function () {
668
663
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
669
664
  return _regeneratorRuntime.wrap(function _callee$(_context) {
670
665
  while (1) switch (_context.prev = _context.next) {
671
666
  case 0:
672
667
  _context.next = 2;
673
- return redeliverWebhook(id);
668
+ return redeliverWebhook(deliveryId);
674
669
  case 2:
675
670
  case "end":
676
671
  return _context.stop();
@@ -681,12 +676,15 @@ var Details = function Details(_ref) {
681
676
  return _ref2.apply(this, arguments);
682
677
  };
683
678
  }();
679
+ if (isNotPresent(delivery)) {
680
+ return null;
681
+ }
684
682
  return /*#__PURE__*/React.createElement(Pane, {
685
- isOpen: isPresent(delivery),
686
- size: "large",
687
- onClose: onClose
688
- }, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DateFormat.Date, {
689
- date: createdAt,
683
+ onClose: onClose,
684
+ isOpen: isPresent(deliveryId),
685
+ size: "large"
686
+ }, /*#__PURE__*/React.createElement(React.Fragment, null, isLoading ? /*#__PURE__*/React.createElement(PageLoader, null) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DateFormat.Date, {
687
+ date: delivery.createdAt,
690
688
  tooltipProps: {
691
689
  disabled: true
692
690
  },
@@ -695,7 +693,7 @@ var Details = function Details(_ref) {
695
693
  weight: "semibold"
696
694
  }
697
695
  }), /*#__PURE__*/React.createElement("span", null, " \u2022 "), /*#__PURE__*/React.createElement(DateFormat.Time, {
698
- date: createdAt,
696
+ date: delivery.createdAt,
699
697
  tooltipProps: {
700
698
  disabled: true
701
699
  },
@@ -717,7 +715,7 @@ var Details = function Details(_ref) {
717
715
  label: t("neetoWebhooks.buttons.cancel"),
718
716
  style: "text",
719
717
  onClick: onClose
720
- })));
718
+ })))));
721
719
  };
722
720
 
723
721
  var buildColumns$1 = function buildColumns(_ref) {
@@ -734,7 +732,7 @@ var buildColumns$1 = function buildColumns(_ref) {
734
732
  style: "link",
735
733
  weight: "semibold",
736
734
  onClick: function onClick() {
737
- return handleDetailsClick(delivery);
735
+ return handleDetailsClick(delivery.sid);
738
736
  }
739
737
  }, delivery.identifier), delivery.redelivery && /*#__PURE__*/React.createElement(Tag, {
740
738
  style: "info"
@@ -784,14 +782,16 @@ var Deliveries = function Deliveries(_ref) {
784
782
  _useState2 = _slicedToArray(_useState, 2),
785
783
  pageNumber = _useState2[0],
786
784
  setPageNumber = _useState2[1];
787
- var _useState3 = useState({}),
788
- _useState4 = _slicedToArray(_useState3, 2),
789
- selectedDelivery = _useState4[0],
790
- setSelectedDelivery = _useState4[1];
785
+ var _useRouteMatch = useRouteMatch(),
786
+ deliveriesUrl = _useRouteMatch.url;
787
+ var history = useHistory();
791
788
  var _useTranslation = useTranslation(),
792
789
  t = _useTranslation.t;
793
790
  var _useParams = useParams(),
794
- webhookId = _useParams.webhookId;
791
+ webhookId = _useParams.webhookId,
792
+ deliveryId = _useParams.deliveryId;
793
+ var deliveriesPath = getDeliveriesPath(webhooksUrl);
794
+ var deliveryDetailsPath = getDeliveryDetailsPath(deliveriesUrl);
795
795
  var _useFetchDeliveries = useFetchDeliveries({
796
796
  sid: webhookId,
797
797
  page: pageNumber,
@@ -815,6 +815,16 @@ var Deliveries = function Deliveries(_ref) {
815
815
  link: window.location.pathname,
816
816
  text: endpoint
817
817
  }]);
818
+ var handleDetailsClick = function handleDetailsClick(sid) {
819
+ return history.push(buildUrl(deliveryDetailsPath, {
820
+ deliveryId: sid
821
+ }));
822
+ };
823
+ var handleClose = function handleClose() {
824
+ history.push(buildUrl(deliveriesPath, {
825
+ webhookId: webhookId
826
+ }));
827
+ };
818
828
  if (isLoading) return /*#__PURE__*/React.createElement(PageLoader, null);
819
829
  return /*#__PURE__*/React.createElement(Container, {
820
830
  className: "w-full"
@@ -826,26 +836,22 @@ var Deliveries = function Deliveries(_ref) {
826
836
  }, /*#__PURE__*/React.createElement(Table, {
827
837
  totalCount: totalCount,
828
838
  fixedHeight: true,
839
+ columnData: buildColumns$1({
840
+ handleDetailsClick: handleDetailsClick
841
+ }),
829
842
  currentPageNumber: pageNumber,
830
843
  defaultPageSize: DEFAULT_PAGE_SIZE,
831
- handlePageChange: function handlePageChange(page) {
832
- return setPageNumber(page);
833
- },
844
+ handlePageChange: setPageNumber,
834
845
  loading: isFetching,
835
- rowData: deliveries,
836
- columnData: buildColumns$1({
837
- handleDetailsClick: setSelectedDelivery
838
- })
846
+ rowData: deliveries
839
847
  })) : /*#__PURE__*/React.createElement("div", {
840
848
  className: "flex h-full w-full items-center justify-center"
841
849
  }, /*#__PURE__*/React.createElement(NoData, {
842
850
  description: t("neetoWebhooks.delivery.empty.description"),
843
851
  title: t("neetoWebhooks.delivery.empty.title")
844
852
  })), /*#__PURE__*/React.createElement(Details, {
845
- delivery: selectedDelivery,
846
- onClose: function onClose() {
847
- return setSelectedDelivery({});
848
- }
853
+ deliveryId: deliveryId,
854
+ onClose: handleClose
849
855
  }));
850
856
  };
851
857
  var Deliveries$1 = withReactQuery(Deliveries);
@@ -1246,19 +1252,18 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
1246
1252
  onClose: onClose,
1247
1253
  initialFocusRef: endpointRef
1248
1254
  }, /*#__PURE__*/React.createElement(Pane.Header, {
1249
- className: "flex items-center space-x-3"
1255
+ className: "flex items-center gap-x-2"
1250
1256
  }, /*#__PURE__*/React.createElement(Typography, {
1251
1257
  "data-cy": "add-new-webhook-pane-header",
1252
1258
  style: "h2",
1253
1259
  weight: "semibold"
1254
- }, editingWebhookId ? t("neetoWebhooks.webhook.edit") : t("neetoWebhooks.webhook.add")), /*#__PURE__*/React.createElement("a", {
1255
- href: WEBHOOK_HELP_URL,
1256
- rel: "noreferrer",
1257
- target: "_blank"
1258
- }, /*#__PURE__*/React.createElement(Info, {
1259
- className: "neeto-ui-text-primary-800 mt-0.5 cursor-pointer",
1260
- size: 20
1261
- }))), /*#__PURE__*/React.createElement(Form, {
1260
+ }, editingWebhookId ? t("neetoWebhooks.webhook.edit") : t("neetoWebhooks.webhook.add")), /*#__PURE__*/React.createElement(HelpPopover, {
1261
+ description: t("neetoWebhooks.webhook.helpDescription"),
1262
+ helpLinkProps: {
1263
+ href: WEBHOOK_HELP_URL
1264
+ },
1265
+ title: t("neetoWebhooks.webhook.title")
1266
+ })), /*#__PURE__*/React.createElement(Form, {
1262
1267
  formikProps: {
1263
1268
  enableReinitialize: true,
1264
1269
  validationSchema: getValidationSchema(webhooks),
@@ -1298,20 +1303,15 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
1298
1303
  }, /*#__PURE__*/React.createElement(Input, {
1299
1304
  "data-cy": "secret-key-input-field",
1300
1305
  name: "secret",
1301
- label: /*#__PURE__*/React.createElement(Trans, {
1302
- i18nKey: "neetoWebhooks.webhook.secret",
1303
- components: {
1304
- helpLink: /*#__PURE__*/React.createElement("a", {
1305
- href: WEBHOOK_SECRETS_HELP_URL,
1306
- rel: "noreferrer",
1307
- target: "_blank"
1308
- }),
1309
- info: /*#__PURE__*/React.createElement(Info, {
1310
- className: "neeto-ui-text-primary-800 mt-0.5 cursor-pointer",
1311
- size: 20
1312
- })
1313
- }
1314
- }),
1306
+ label: /*#__PURE__*/React.createElement("span", {
1307
+ className: "flex items-center gap-x-2"
1308
+ }, t("neetoWebhooks.webhook.secret"), /*#__PURE__*/React.createElement(HelpPopover, {
1309
+ helpLinkProps: {
1310
+ href: WEBHOOK_SECRETS_HELP_URL
1311
+ },
1312
+ description: t("neetoWebhooks.webhook.secretkeyHelpDescription"),
1313
+ title: t("neetoWebhooks.webhook.secretkeyHelpTitle")
1314
+ })),
1315
1315
  placeholder: t("neetoWebhooks.webhook.secretPlaceholder")
1316
1316
  }), /*#__PURE__*/React.createElement("div", {
1317
1317
  className: "mt-6"
@@ -1514,6 +1514,7 @@ var NeetoWebhooks = function NeetoWebhooks(_ref) {
1514
1514
  webhooksPath = _useRouteMatch.path,
1515
1515
  webhooksUrl = _useRouteMatch.url;
1516
1516
  var deliveriesPath = getDeliveriesPath(webhooksUrl);
1517
+ var deliveryDetailsPath = getDeliveryDetailsPath(deliveriesPath);
1517
1518
  return /*#__PURE__*/React.createElement(Switch$1, null, /*#__PURE__*/React.createElement(Route, {
1518
1519
  exact: true,
1519
1520
  path: webhooksPath,
@@ -1527,6 +1528,15 @@ var NeetoWebhooks = function NeetoWebhooks(_ref) {
1527
1528
  onDelete: onDelete
1528
1529
  });
1529
1530
  }
1531
+ }), /*#__PURE__*/React.createElement(Route, {
1532
+ exact: true,
1533
+ path: deliveryDetailsPath,
1534
+ render: function render() {
1535
+ return /*#__PURE__*/React.createElement(Deliveries$1, {
1536
+ breadcrumbs: breadcrumbs,
1537
+ webhooksUrl: webhooksUrl
1538
+ });
1539
+ }
1530
1540
  }), /*#__PURE__*/React.createElement(Route, {
1531
1541
  component: function component() {
1532
1542
  return /*#__PURE__*/React.createElement(Deliveries$1, {