@bigbinary/neeto-webhooks-frontend 1.5.8 → 1.6.0

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.cjs.js CHANGED
@@ -4,18 +4,21 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var reactRouterDom = require('react-router-dom');
7
- var classNames = require('classnames');
8
7
  var pure = require('@bigbinary/neeto-commons-frontend/pure');
9
- var utils = require('@bigbinary/neeto-commons-frontend/utils');
10
- var neetoIcons = require('@bigbinary/neeto-icons');
8
+ var Container = require('@bigbinary/neeto-molecules/Container');
11
9
  var Header$2 = require('@bigbinary/neeto-molecules/Header');
12
10
  var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
11
+ var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
13
12
  var neetoui = require('@bigbinary/neetoui');
14
- var ramda = require('ramda');
15
13
  var reactQuery = require('react-query');
16
14
  var devtools = require('react-query/devtools');
15
+ var constants = require('@bigbinary/neeto-commons-frontend/constants');
17
16
  var axios = require('axios');
17
+ var DateFormat = require('@bigbinary/neeto-molecules/DateFormat');
18
+ var ramda = require('ramda');
19
+ var neetoIcons = require('@bigbinary/neeto-icons');
18
20
  var formik = require('@bigbinary/neetoui/formik');
21
+ var utils = require('@bigbinary/neeto-commons-frontend/utils');
19
22
  var yup = require('yup');
20
23
 
21
24
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -39,10 +42,12 @@ function _interopNamespace(e) {
39
42
  }
40
43
 
41
44
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
42
- var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
45
+ var Container__default = /*#__PURE__*/_interopDefaultLegacy(Container);
43
46
  var Header__default = /*#__PURE__*/_interopDefaultLegacy(Header$2);
44
47
  var PageLoader__default = /*#__PURE__*/_interopDefaultLegacy(PageLoader);
48
+ var TableWrapper__default = /*#__PURE__*/_interopDefaultLegacy(TableWrapper);
45
49
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
50
+ var DateFormat__default = /*#__PURE__*/_interopDefaultLegacy(DateFormat);
46
51
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
47
52
 
48
53
  const consoleLogger = {
@@ -2883,6 +2888,12 @@ function useTranslation(ns) {
2883
2888
  });
2884
2889
  }
2885
2890
 
2891
+ var common = {
2892
+ event_one: "Event",
2893
+ event_other: "Events",
2894
+ endpoint: "Endpoint",
2895
+ responseStatus: "Response status"
2896
+ };
2886
2897
  var entity = {
2887
2898
  webhook: "webhook",
2888
2899
  configure: "Configure"
@@ -2890,14 +2901,19 @@ var entity = {
2890
2901
  var buttons = {
2891
2902
  saveChanges: "Save changes",
2892
2903
  cancel: "Cancel",
2893
- "delete": "Delete"
2904
+ "delete": "Delete",
2905
+ edit: "Edit",
2906
+ viewDetails: "View details"
2894
2907
  };
2895
2908
  var errors = {
2896
2909
  webhook: {
2897
2910
  required: "Please enter your endpoint URL",
2898
2911
  invalidUrl: "Please enter a valid URL",
2899
2912
  invalidUrlProtocol: "Please enter a valid URL. URL must begin with http or https",
2900
- urlNotUnique: "Endpoint URL must be unique"
2913
+ urlNotUnique: "Endpoint URL must be unique",
2914
+ events: {
2915
+ required: "Please select atleast one webhook event"
2916
+ }
2901
2917
  }
2902
2918
  };
2903
2919
  var delivery = {
@@ -2909,6 +2925,7 @@ var delivery = {
2909
2925
  header: "Header",
2910
2926
  body: "Body",
2911
2927
  payload: "Payload",
2928
+ identifier: "Identifier",
2912
2929
  empty: {
2913
2930
  title: "There are no deliveries to show.",
2914
2931
  description: "No events have been sent to this webhook"
@@ -2920,10 +2937,18 @@ var webhook = {
2920
2937
  empty: "There are no webhooks defined currently",
2921
2938
  add: "Add new webhook",
2922
2939
  endpoint: "Endpoint",
2940
+ event_one: "Event",
2941
+ event_other: "Events",
2923
2942
  endpointPlaceholder: "Enter endpoint URL",
2943
+ eventPlaceholder: "Select webhook events",
2924
2944
  secret: "Secret key (optional) <helpLink><info></helpLink>",
2925
2945
  secretPlaceholder: "Enter secret key",
2926
- edit: "Edit Webhook"
2946
+ edit: "Edit Webhook",
2947
+ active: "Active",
2948
+ activeStatuses: {
2949
+ yes: "Yes",
2950
+ no: "No"
2951
+ }
2927
2952
  };
2928
2953
  var operation = {
2929
2954
  edit: "Edit",
@@ -2935,14 +2960,21 @@ var alert = {
2935
2960
  message: "You are deleting the {{entity}}."
2936
2961
  }
2937
2962
  };
2963
+ var tableHeaders = {
2964
+ active: "Active",
2965
+ details: "Details",
2966
+ createdAt: "Created at"
2967
+ };
2938
2968
  var en = {
2969
+ common: common,
2939
2970
  entity: entity,
2940
2971
  buttons: buttons,
2941
2972
  errors: errors,
2942
2973
  delivery: delivery,
2943
2974
  webhook: webhook,
2944
2975
  operation: operation,
2945
- alert: alert
2976
+ alert: alert,
2977
+ tableHeaders: tableHeaders
2946
2978
  };
2947
2979
 
2948
2980
  instance.use(initReactI18next).init({
@@ -2989,6 +3021,124 @@ function _toConsumableArray(arr) {
2989
3021
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
2990
3022
  }
2991
3023
 
3024
+ function _arrayWithHoles(arr) {
3025
+ if (Array.isArray(arr)) return arr;
3026
+ }
3027
+
3028
+ function _iterableToArrayLimit(arr, i) {
3029
+ var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
3030
+ if (null != _i) {
3031
+ var _s,
3032
+ _e,
3033
+ _x,
3034
+ _r,
3035
+ _arr = [],
3036
+ _n = !0,
3037
+ _d = !1;
3038
+ try {
3039
+ if (_x = (_i = _i.call(arr)).next, 0 === i) {
3040
+ if (Object(_i) !== _i) return;
3041
+ _n = !1;
3042
+ } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
3043
+ } catch (err) {
3044
+ _d = !0, _e = err;
3045
+ } finally {
3046
+ try {
3047
+ if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
3048
+ } finally {
3049
+ if (_d) throw _e;
3050
+ }
3051
+ }
3052
+ return _arr;
3053
+ }
3054
+ }
3055
+
3056
+ function _nonIterableRest() {
3057
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3058
+ }
3059
+
3060
+ function _slicedToArray(arr, i) {
3061
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
3062
+ }
3063
+
3064
+ var queryClient = new reactQuery.QueryClient({
3065
+ queryCache: new reactQuery.QueryCache(),
3066
+ defaultOptions: {
3067
+ queries: {
3068
+ staleTime: constants.DEFAULT_STALE_TIME
3069
+ }
3070
+ }
3071
+ });
3072
+
3073
+ /* eslint-disable @bigbinary/neeto/file-name-and-export-name-standards */
3074
+ var withReactQuery = function withReactQuery(Component) {
3075
+ var QueryWrapper = function QueryWrapper(props) {
3076
+ return /*#__PURE__*/React__default["default"].createElement(reactQuery.QueryClientProvider, {
3077
+ client: queryClient
3078
+ }, /*#__PURE__*/React__default["default"].createElement(Component, props), /*#__PURE__*/React__default["default"].createElement(devtools.ReactQueryDevtools, {
3079
+ initialIsOpen: false,
3080
+ position: "bottom-right"
3081
+ }));
3082
+ };
3083
+ return QueryWrapper;
3084
+ };
3085
+
3086
+ var baseUrl$2 = "/webhooks/deliveries";
3087
+ var fetch$1 = function fetch(params) {
3088
+ return axios__default["default"].get(baseUrl$2, {
3089
+ params: params
3090
+ });
3091
+ };
3092
+ var show$1 = function show(id) {
3093
+ return axios__default["default"].get("".concat(baseUrl$2, "/").concat(id));
3094
+ };
3095
+ var redeliver = function redeliver(id) {
3096
+ return axios__default["default"].post("".concat(baseUrl$2, "/").concat(id, "/redeliver"));
3097
+ };
3098
+ var deliveriesApi = {
3099
+ fetch: fetch$1,
3100
+ show: show$1,
3101
+ redeliver: redeliver
3102
+ };
3103
+
3104
+ var QUERY_KEYS = {
3105
+ DELIVERY_LIST: "delivery-list",
3106
+ DELIVERY_DETAILS: "delivery-details",
3107
+ WEBHOOK_LIST: "webhook-list",
3108
+ WEBHOOK_DETAILS: "webhook-details",
3109
+ EVENTS_LIST: "events-list"
3110
+ };
3111
+ var DELIVERY_STALE_TIME = 3200000; // 1 hour
3112
+ var WEBHOOK_STALE_TIME = 3200000; // 1 hour
3113
+ var POST_REDELIVERY_ON_SUCCESS_TIMEOUT = 5000; // 5 seconds
3114
+
3115
+ var useFetchDeliveries = function useFetchDeliveries(params) {
3116
+ return reactQuery.useQuery([QUERY_KEYS.DELIVERY_LIST, params], function () {
3117
+ return deliveriesApi.fetch(params);
3118
+ }, {
3119
+ staleTime: DELIVERY_STALE_TIME
3120
+ });
3121
+ };
3122
+ var useShowDelivery = function useShowDelivery(id) {
3123
+ return reactQuery.useQuery([QUERY_KEYS.DELIVERY_DETAILS, id], function () {
3124
+ return deliveriesApi.show(id);
3125
+ }, {
3126
+ staleTime: DELIVERY_STALE_TIME
3127
+ });
3128
+ };
3129
+ var useRedeliverWebhook = function useRedeliverWebhook() {
3130
+ var queryClient = reactQuery.useQueryClient();
3131
+ return reactQuery.useMutation(deliveriesApi.redeliver, {
3132
+ onSuccess: function onSuccess() {
3133
+ setTimeout(function () {
3134
+ return queryClient.invalidateQueries(QUERY_KEYS.DELIVERY_LIST);
3135
+ }, POST_REDELIVERY_ON_SUCCESS_TIMEOUT);
3136
+ }
3137
+ });
3138
+ };
3139
+
3140
+ var DEFAULT_PAGE_SIZE = 10;
3141
+
2992
3142
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2993
3143
  try {
2994
3144
  var info = gen[key](arg);
@@ -3369,137 +3519,24 @@ try {
3369
3519
 
3370
3520
  var _regeneratorRuntime = /*@__PURE__*/getDefaultExportFromCjs(regenerator);
3371
3521
 
3372
- var queryClient = new reactQuery.QueryClient({
3373
- queryCache: new reactQuery.QueryCache()
3374
- });
3375
-
3376
- var withReactQuery = function withReactQuery(Component) {
3377
- var QueryWrapper = function QueryWrapper(props) {
3378
- return /*#__PURE__*/React__default["default"].createElement(reactQuery.QueryClientProvider, {
3379
- client: queryClient
3380
- }, /*#__PURE__*/React__default["default"].createElement(Component, props), /*#__PURE__*/React__default["default"].createElement(devtools.ReactQueryDevtools, {
3381
- initialIsOpen: false,
3382
- position: "bottom-right"
3383
- }));
3384
- };
3385
- return QueryWrapper;
3386
- };
3387
-
3388
- var baseUrl$1 = "/webhooks/deliveries";
3389
- var fetch$1 = function fetch(webhook_id) {
3390
- return axios__default["default"].get(baseUrl$1, {
3391
- params: {
3392
- webhook_id: webhook_id
3393
- }
3394
- });
3395
- };
3396
- var show$1 = function show(id) {
3397
- return axios__default["default"].get("".concat(baseUrl$1, "/").concat(id));
3398
- };
3399
- var redeliver = function redeliver(id) {
3400
- return axios__default["default"].post("".concat(baseUrl$1, "/").concat(id, "/redeliver"));
3401
- };
3402
- var deliveriesApi = {
3403
- fetch: fetch$1,
3404
- show: show$1,
3405
- redeliver: redeliver
3406
- };
3407
-
3408
- var QUERY_KEYS = {
3409
- DELIVERY_LIST: "delivery-list",
3410
- DELIVERY_DETAILS: "delivery-details",
3411
- WEBHOOK_LIST: "webhook-list",
3412
- WEBHOOK_DETAILS: "webhook-details"
3413
- };
3414
- var DELIVERY_STALE_TIME = 3200000; // 1 hour
3415
- var WEBHOOK_STALE_TIME = 3200000; // 1 hour
3416
- var POST_REDELIVERY_ON_SUCCESS_TIMEOUT = 5000; // 5 seconds
3417
-
3418
- var useFetchDeliveries = function useFetchDeliveries(webhookId) {
3419
- return reactQuery.useQuery([QUERY_KEYS.DELIVERY_LIST, webhookId], function () {
3420
- return deliveriesApi.fetch(webhookId);
3421
- }, {
3422
- staleTime: DELIVERY_STALE_TIME
3423
- });
3424
- };
3425
- var useShowDelivery = function useShowDelivery(id) {
3426
- return reactQuery.useQuery([QUERY_KEYS.DELIVERY_DETAILS, id], function () {
3427
- return deliveriesApi.show(id);
3428
- }, {
3429
- staleTime: DELIVERY_STALE_TIME
3430
- });
3431
- };
3432
- var useRedeliverWebhook = function useRedeliverWebhook() {
3433
- var queryClient = reactQuery.useQueryClient();
3434
- return reactQuery.useMutation(deliveriesApi.redeliver, {
3435
- onSuccess: function onSuccess() {
3436
- setTimeout(function () {
3437
- return queryClient.invalidateQueries(QUERY_KEYS.DELIVERY_LIST);
3438
- }, POST_REDELIVERY_ON_SUCCESS_TIMEOUT);
3439
- }
3440
- });
3441
- };
3442
-
3443
3522
  var DELIVERY_TAB = {
3444
3523
  response: "response",
3445
3524
  request: "request"
3446
3525
  };
3447
- var DELIVERY_STATUS = {
3448
- failure: "failure",
3449
- success: "success"
3450
- };
3451
-
3452
- function _arrayWithHoles(arr) {
3453
- if (Array.isArray(arr)) return arr;
3454
- }
3455
-
3456
- function _iterableToArrayLimit(arr, i) {
3457
- var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
3458
- if (null != _i) {
3459
- var _s,
3460
- _e,
3461
- _x,
3462
- _r,
3463
- _arr = [],
3464
- _n = !0,
3465
- _d = !1;
3466
- try {
3467
- if (_x = (_i = _i.call(arr)).next, 0 === i) {
3468
- if (Object(_i) !== _i) return;
3469
- _n = !1;
3470
- } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
3471
- } catch (err) {
3472
- _d = !0, _e = err;
3473
- } finally {
3474
- try {
3475
- if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
3476
- } finally {
3477
- if (_d) throw _e;
3478
- }
3479
- }
3480
- return _arr;
3481
- }
3482
- }
3483
-
3484
- function _nonIterableRest() {
3485
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3486
- }
3487
-
3488
- function _slicedToArray(arr, i) {
3489
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
3490
- }
3491
3526
 
3492
3527
  var Snippet = function Snippet(_ref) {
3493
3528
  var children = _ref.children;
3494
3529
  return /*#__PURE__*/React__default["default"].createElement("div", {
3495
- className: "my-2 whitespace-pre-wrap break-all rounded border border-gray-300 bg-gray-100 p-4"
3530
+ className: "neeto-ui-rounded neeto-ui-border-gray-300 neeto-ui-bg-gray-100 my-2 whitespace-pre-wrap break-all border p-4"
3496
3531
  }, children);
3497
3532
  };
3498
3533
 
3499
- var DeliveryItem = function DeliveryItem(_ref) {
3500
- var deliveryId = _ref.deliveryId,
3501
- isRedelivering = _ref.isRedelivering,
3502
- onRedeliverClick = _ref.onRedeliverClick;
3534
+ var TransactionDetails = function TransactionDetails(_ref) {
3535
+ var delivery = _ref.delivery;
3536
+ var deliveryId = delivery.id,
3537
+ status = delivery.status,
3538
+ identifier = delivery.identifier,
3539
+ responseStatusCode = delivery.responseStatusCode;
3503
3540
  var _useState = React.useState(DELIVERY_TAB.request),
3504
3541
  _useState2 = _slicedToArray(_useState, 2),
3505
3542
  activeHeader = _useState2[0],
@@ -3511,17 +3548,29 @@ var DeliveryItem = function DeliveryItem(_ref) {
3511
3548
  _useShowDelivery$data = _useShowDelivery.data,
3512
3549
  _useShowDelivery$data2 = _useShowDelivery$data === void 0 ? {} : _useShowDelivery$data,
3513
3550
  _useShowDelivery$data3 = _useShowDelivery$data2.delivery,
3514
- delivery = _useShowDelivery$data3 === void 0 ? {} : _useShowDelivery$data3;
3551
+ deliveryDetails = _useShowDelivery$data3 === void 0 ? {} : _useShowDelivery$data3;
3515
3552
  if (isLoading) {
3516
3553
  return /*#__PURE__*/React__default["default"].createElement("div", {
3517
- className: "flex items-center justify-center py-6"
3554
+ className: "flex w-full items-center justify-center py-6"
3518
3555
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null));
3519
3556
  }
3520
- return /*#__PURE__*/React__default["default"].createElement("div", {
3521
- className: "p-4"
3522
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Tab, {
3523
- className: "mb-4"
3524
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Tab.Item, {
3557
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
3558
+ className: "neeto-ui-bg-white sticky top-0 mb-2 flex w-full flex-col"
3559
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
3560
+ className: "flex w-full flex-col space-y-2 pb-4"
3561
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
3562
+ className: "flex items-center space-x-1"
3563
+ }, t("delivery.identifier"), ":", /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3564
+ className: "px-2 font-bold",
3565
+ style: "body2"
3566
+ }, identifier)), /*#__PURE__*/React__default["default"].createElement("span", {
3567
+ className: "flex items-center"
3568
+ }, t("common.responseStatus"), ":", /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3569
+ className: "px-2 font-bold",
3570
+ style: "body2"
3571
+ }, responseStatusCode), /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, {
3572
+ style: status === "success" ? "success" : "warning"
3573
+ }, status))), /*#__PURE__*/React__default["default"].createElement(neetoui.Tab, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Tab.Item, {
3525
3574
  active: activeHeader === DELIVERY_TAB.request,
3526
3575
  onClick: function onClick() {
3527
3576
  return setActiveHeader(DELIVERY_TAB.request);
@@ -3531,65 +3580,190 @@ var DeliveryItem = function DeliveryItem(_ref) {
3531
3580
  onClick: function onClick() {
3532
3581
  return setActiveHeader(DELIVERY_TAB.response);
3533
3582
  }
3534
- }, t("delivery.response")), /*#__PURE__*/React__default["default"].createElement("div", {
3535
- className: "flex flex-1 justify-end"
3536
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3537
- className: "mr-2 mb-2",
3538
- label: t("delivery.redeliver"),
3539
- loading: isRedelivering,
3540
- style: "secondary",
3541
- onClick: function onClick() {
3542
- return onRedeliverClick(delivery.id);
3543
- }
3544
- }))), activeHeader === DELIVERY_TAB.request ? /*#__PURE__*/React__default["default"].createElement("div", {
3583
+ }, t("delivery.response")))), /*#__PURE__*/React__default["default"].createElement("div", {
3584
+ className: "mt-2"
3585
+ }, activeHeader === DELIVERY_TAB.request ? /*#__PURE__*/React__default["default"].createElement("div", {
3545
3586
  className: "space-y-4"
3546
3587
  }, /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3547
3588
  style: "h5"
3548
- }, t("delivery.header")), /*#__PURE__*/React__default["default"].createElement(Snippet, null, delivery.requestHeader)), /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3589
+ }, t("delivery.header")), /*#__PURE__*/React__default["default"].createElement(Snippet, null, deliveryDetails.requestHeader)), /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3549
3590
  style: "h5"
3550
- }, t("delivery.payload")), /*#__PURE__*/React__default["default"].createElement(Snippet, null, JSON.stringify(JSON.parse(delivery.requestBody), null, 2)))) : /*#__PURE__*/React__default["default"].createElement("div", {
3591
+ }, t("delivery.payload")), /*#__PURE__*/React__default["default"].createElement(Snippet, null, JSON.stringify(JSON.parse(deliveryDetails.requestBody), null, 2)))) : /*#__PURE__*/React__default["default"].createElement("div", {
3551
3592
  className: "space-y-4"
3552
3593
  }, /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3553
3594
  style: "h5"
3554
- }, t("delivery.header")), /*#__PURE__*/React__default["default"].createElement(Snippet, null, delivery.responseHeader)), /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3595
+ }, t("delivery.header")), /*#__PURE__*/React__default["default"].createElement(Snippet, null, deliveryDetails.responseHeader)), /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3555
3596
  style: "h5"
3556
- }, t("delivery.body")), /*#__PURE__*/React__default["default"].createElement(Snippet, null, delivery.responseBody))));
3597
+ }, t("delivery.body")), /*#__PURE__*/React__default["default"].createElement(Snippet, null, deliveryDetails.responseBody)))));
3557
3598
  };
3558
3599
 
3559
- var Deliveries = function Deliveries(_ref) {
3560
- var webhooksUrl = _ref.webhooksUrl,
3561
- hostBreadcrumbs = _ref.breadcrumbs;
3600
+ var Details = function Details(_ref) {
3601
+ var delivery = _ref.delivery,
3602
+ onClose = _ref.onClose;
3603
+ var createdAt = delivery.createdAt,
3604
+ id = delivery.id;
3562
3605
  var _useTranslation = useTranslation(),
3563
3606
  t = _useTranslation.t;
3564
- var _useParams = reactRouterDom.useParams(),
3565
- webhookId = _useParams.webhookId;
3566
- var _useFetchDeliveries = useFetchDeliveries(webhookId),
3567
- isLoading = _useFetchDeliveries.isLoading,
3568
- _useFetchDeliveries$d = _useFetchDeliveries.data,
3569
- _useFetchDeliveries$d2 = _useFetchDeliveries$d === void 0 ? {} : _useFetchDeliveries$d,
3570
- endpoint = _useFetchDeliveries$d2.endpoint,
3571
- _useFetchDeliveries$d3 = _useFetchDeliveries$d2.deliveries,
3572
- deliveries = _useFetchDeliveries$d3 === void 0 ? [] : _useFetchDeliveries$d3;
3573
3607
  var _useRedeliverWebhook = useRedeliverWebhook(),
3574
3608
  isRedelivering = _useRedeliverWebhook.isLoading,
3575
3609
  redeliverWebhook = _useRedeliverWebhook.mutateAsync;
3576
- var onRedeliverClick = /*#__PURE__*/function () {
3577
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(deliveryId) {
3610
+ var handleRedeliverClick = /*#__PURE__*/function () {
3611
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
3578
3612
  return _regeneratorRuntime.wrap(function _callee$(_context) {
3579
3613
  while (1) switch (_context.prev = _context.next) {
3580
3614
  case 0:
3581
3615
  _context.next = 2;
3582
- return redeliverWebhook(deliveryId);
3616
+ return redeliverWebhook(id);
3583
3617
  case 2:
3584
3618
  case "end":
3585
3619
  return _context.stop();
3586
3620
  }
3587
3621
  }, _callee);
3588
3622
  }));
3589
- return function onRedeliverClick(_x) {
3623
+ return function handleRedeliverClick() {
3590
3624
  return _ref2.apply(this, arguments);
3591
3625
  };
3592
3626
  }();
3627
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
3628
+ isOpen: pure.isPresent(delivery),
3629
+ size: "large",
3630
+ onClose: onClose
3631
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(DateFormat__default["default"].Date, {
3632
+ date: createdAt,
3633
+ typographyProps: {
3634
+ style: "h2",
3635
+ weight: "semibold"
3636
+ }
3637
+ }), /*#__PURE__*/React__default["default"].createElement("span", null, " \u2022 "), /*#__PURE__*/React__default["default"].createElement(DateFormat__default["default"].Time, {
3638
+ date: createdAt,
3639
+ typographyProps: {
3640
+ style: "h2",
3641
+ weight: "normal"
3642
+ }
3643
+ }))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, pure.isPresent(delivery) && /*#__PURE__*/React__default["default"].createElement(TransactionDetails, {
3644
+ delivery: delivery
3645
+ })), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
3646
+ className: "gap-x-2"
3647
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3648
+ disabled: isRedelivering,
3649
+ label: t("delivery.redeliver"),
3650
+ loading: isRedelivering,
3651
+ style: "primary",
3652
+ onClick: handleRedeliverClick
3653
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3654
+ label: t("buttons.cancel"),
3655
+ style: "text",
3656
+ onClick: onClose
3657
+ })));
3658
+ };
3659
+
3660
+ var buildColumns$1 = function buildColumns(_ref) {
3661
+ var handleDetailsClick = _ref.handleDetailsClick;
3662
+ return [{
3663
+ title: t$2("delivery.identifier", constants.SINGULAR),
3664
+ key: "identifier",
3665
+ width: 300,
3666
+ render: function render(_ref2) {
3667
+ var identifier = _ref2.identifier,
3668
+ redelivery = _ref2.redelivery;
3669
+ return /*#__PURE__*/React__default["default"].createElement("div", {
3670
+ className: "flex space-x-1"
3671
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3672
+ className: "px-2",
3673
+ style: "body2",
3674
+ weight: "semibold"
3675
+ }, identifier), redelivery && /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, {
3676
+ style: "info"
3677
+ }, t$2("delivery.redelivery")));
3678
+ }
3679
+ }, {
3680
+ title: t$2("tableHeaders.createdAt"),
3681
+ key: "createdAt",
3682
+ dataIndex: "createdAt",
3683
+ width: 300,
3684
+ render: function render(createdAt) {
3685
+ return /*#__PURE__*/React__default["default"].createElement("div", {
3686
+ className: "flex items-center justify-between space-x-1"
3687
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, null, /*#__PURE__*/React__default["default"].createElement(DateFormat__default["default"].Date, {
3688
+ date: createdAt,
3689
+ typographyProps: {
3690
+ style: "body1",
3691
+ weight: "semibold"
3692
+ }
3693
+ }), /*#__PURE__*/React__default["default"].createElement("span", null, " \u2022 "), /*#__PURE__*/React__default["default"].createElement(DateFormat__default["default"].Time, {
3694
+ date: createdAt,
3695
+ typographyProps: {
3696
+ style: "body1"
3697
+ }
3698
+ })));
3699
+ }
3700
+ }, {
3701
+ title: t$2("common.responseStatus"),
3702
+ key: "responseStatusCode",
3703
+ width: 150,
3704
+ render: function render(_ref3) {
3705
+ var responseStatusCode = _ref3.responseStatusCode,
3706
+ status = _ref3.status;
3707
+ return /*#__PURE__*/React__default["default"].createElement("span", {
3708
+ className: "flex items-center"
3709
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3710
+ className: "px-2 font-bold",
3711
+ style: "body2"
3712
+ }, responseStatusCode), /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, {
3713
+ style: status === "success" ? "success" : "warning"
3714
+ }, status));
3715
+ }
3716
+ }, {
3717
+ title: t$2("common.event", constants.SINGULAR),
3718
+ key: "event",
3719
+ dataIndex: "event",
3720
+ width: 100,
3721
+ render: ramda.prop("label")
3722
+ }, {
3723
+ title: t$2("tableHeaders.details"),
3724
+ key: "details",
3725
+ dataIndex: "details",
3726
+ width: 150,
3727
+ render: function render(_, delivery) {
3728
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3729
+ label: t$2("buttons.viewDetails"),
3730
+ size: "small",
3731
+ onClick: function onClick() {
3732
+ return handleDetailsClick(delivery);
3733
+ }
3734
+ });
3735
+ }
3736
+ }];
3737
+ };
3738
+
3739
+ var Deliveries = function Deliveries(_ref) {
3740
+ var webhooksUrl = _ref.webhooksUrl,
3741
+ hostBreadcrumbs = _ref.breadcrumbs;
3742
+ var _useState = React.useState(1),
3743
+ _useState2 = _slicedToArray(_useState, 2),
3744
+ pageNumber = _useState2[0],
3745
+ setPageNumber = _useState2[1];
3746
+ var _useState3 = React.useState({}),
3747
+ _useState4 = _slicedToArray(_useState3, 2),
3748
+ selectedDelivery = _useState4[0],
3749
+ setSelectedDelivery = _useState4[1];
3750
+ var _useTranslation = useTranslation(),
3751
+ t = _useTranslation.t;
3752
+ var _useParams = reactRouterDom.useParams(),
3753
+ webhookId = _useParams.webhookId;
3754
+ var _useFetchDeliveries = useFetchDeliveries({
3755
+ webhookId: webhookId,
3756
+ page: pageNumber,
3757
+ limit: DEFAULT_PAGE_SIZE
3758
+ }),
3759
+ isLoading = _useFetchDeliveries.isLoading,
3760
+ isFetching = _useFetchDeliveries.isFetching,
3761
+ _useFetchDeliveries$d = _useFetchDeliveries.data,
3762
+ _useFetchDeliveries$d2 = _useFetchDeliveries$d === void 0 ? {} : _useFetchDeliveries$d,
3763
+ endpoint = _useFetchDeliveries$d2.endpoint,
3764
+ totalCount = _useFetchDeliveries$d2.totalCount,
3765
+ _useFetchDeliveries$d3 = _useFetchDeliveries$d2.deliveries,
3766
+ deliveries = _useFetchDeliveries$d3 === void 0 ? [] : _useFetchDeliveries$d3;
3593
3767
  var breadcrumbsWithoutWebhooksTitle = pure.removeBy({
3594
3768
  text: t("webhook.title")
3595
3769
  }, hostBreadcrumbs);
@@ -3601,86 +3775,61 @@ var Deliveries = function Deliveries(_ref) {
3601
3775
  text: endpoint
3602
3776
  }]);
3603
3777
  if (isLoading) return /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null);
3604
- return /*#__PURE__*/React__default["default"].createElement("div", {
3605
- className: "w-full px-6"
3778
+ return /*#__PURE__*/React__default["default"].createElement(Container__default["default"], {
3779
+ className: "w-full"
3606
3780
  }, /*#__PURE__*/React__default["default"].createElement(Header__default["default"], {
3607
3781
  breadcrumbs: breadcrumbs,
3608
3782
  title: t("delivery.title")
3609
- }), /*#__PURE__*/React__default["default"].createElement("div", {
3610
- className: "deliveries__list"
3611
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Accordion, {
3612
- className: classNames__default["default"]("neeto-ui-rounded", {
3613
- border: deliveries.length
3783
+ }), pure.isNotEmpty(deliveries) ? /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], {
3784
+ hasPagination: totalCount > DEFAULT_PAGE_SIZE
3785
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Table, {
3786
+ totalCount: totalCount,
3787
+ fixedHeight: true,
3788
+ currentPageNumber: pageNumber,
3789
+ defaultPageSize: DEFAULT_PAGE_SIZE,
3790
+ handlePageChange: function handlePageChange(page) {
3791
+ return setPageNumber(page);
3792
+ },
3793
+ loading: isFetching,
3794
+ rowData: deliveries,
3795
+ columnData: buildColumns$1({
3796
+ handleDetailsClick: setSelectedDelivery
3614
3797
  })
3615
- }, deliveries.map(function (_ref3) {
3616
- var id = _ref3.id,
3617
- status = _ref3.status,
3618
- identifier = _ref3.identifier,
3619
- action = _ref3.action,
3620
- redelivery = _ref3.redelivery,
3621
- createdAt = _ref3.createdAt;
3622
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Accordion.Item, {
3623
- key: id,
3624
- title: /*#__PURE__*/React__default["default"].createElement("div", {
3625
- className: "flex flex-1 justify-between"
3626
- }, /*#__PURE__*/React__default["default"].createElement("div", {
3627
- className: "flex items-center gap-2"
3628
- }, /*#__PURE__*/React__default["default"].createElement("span", null, status === DELIVERY_STATUS.failure ? /*#__PURE__*/React__default["default"].createElement(neetoIcons.Close, {
3629
- className: "neeto-ui-text-error-600",
3630
- size: 20,
3631
- strokeWidth: 2.5
3632
- }) : /*#__PURE__*/React__default["default"].createElement(neetoIcons.Check, {
3633
- className: "neeto-ui-text-success-600",
3634
- size: 24,
3635
- strokeWidth: 2
3636
- })), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3637
- style: "h5"
3638
- }, identifier), /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, {
3639
- label: action,
3640
- style: "info"
3641
- }), redelivery && /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, {
3642
- label: t("delivery.redelivery")
3643
- })), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3644
- className: "mr-8",
3645
- style: "body2"
3646
- }, utils.dateFormat.dateTime(createdAt)))
3647
- }, /*#__PURE__*/React__default["default"].createElement(DeliveryItem, {
3648
- deliveryId: id,
3649
- isRedelivering: isRedelivering,
3650
- onRedeliverClick: onRedeliverClick
3651
- }));
3652
- })), ramda.isEmpty(deliveries) && /*#__PURE__*/React__default["default"].createElement("div", {
3653
- className: "flex h-full items-center justify-center"
3798
+ })) : /*#__PURE__*/React__default["default"].createElement("div", {
3799
+ className: "flex h-full w-full items-center justify-center"
3654
3800
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.NoData, {
3655
3801
  description: t("delivery.empty.description"),
3656
3802
  title: t("delivery.empty.title")
3657
- }))));
3803
+ })), /*#__PURE__*/React__default["default"].createElement(Details, {
3804
+ delivery: selectedDelivery,
3805
+ onClose: function onClose() {
3806
+ return setSelectedDelivery({});
3807
+ }
3808
+ }));
3658
3809
  };
3659
3810
  var Deliveries$1 = withReactQuery(Deliveries);
3660
3811
 
3661
- var baseUrl = "/webhooks/webhooks";
3662
- var fetch = function fetch(entity_id) {
3663
- return axios__default["default"].get(baseUrl, {
3664
- params: {
3665
- entity_id: entity_id
3666
- }
3812
+ var baseUrl$1 = "/webhooks/webhooks";
3813
+ var fetch = function fetch(params) {
3814
+ return axios__default["default"].get(baseUrl$1, {
3815
+ params: params
3667
3816
  });
3668
3817
  };
3669
3818
  var create = function create(payload) {
3670
- return axios__default["default"].post(baseUrl, {
3819
+ return axios__default["default"].post(baseUrl$1, {
3671
3820
  webhook: payload
3672
3821
  });
3673
3822
  };
3674
3823
  var show = function show(id) {
3675
- return axios__default["default"].get("".concat(baseUrl, "/").concat(id));
3824
+ return axios__default["default"].get("".concat(baseUrl$1, "/").concat(id));
3676
3825
  };
3677
3826
  var update = function update(id, payload) {
3678
- return axios__default["default"].put("".concat(baseUrl, "/").concat(id), {
3827
+ return axios__default["default"].put("".concat(baseUrl$1, "/").concat(id), {
3679
3828
  webhook: payload
3680
3829
  });
3681
3830
  };
3682
3831
  var destroy = function destroy(id) {
3683
- return axios__default["default"]["delete"]("".concat(baseUrl, "/").concat(id));
3832
+ return axios__default["default"]["delete"]("".concat(baseUrl$1, "/").concat(id));
3684
3833
  };
3685
3834
  var webhooksApi = {
3686
3835
  fetch: fetch,
@@ -3690,9 +3839,9 @@ var webhooksApi = {
3690
3839
  destroy: destroy
3691
3840
  };
3692
3841
 
3693
- var useFetchWebhooks = function useFetchWebhooks(entityId) {
3694
- return reactQuery.useQuery([QUERY_KEYS.WEBHOOK_LIST, entityId], function () {
3695
- return webhooksApi.fetch(entityId);
3842
+ var useFetchWebhooks = function useFetchWebhooks(params) {
3843
+ return reactQuery.useQuery([QUERY_KEYS.WEBHOOK_LIST, params], function () {
3844
+ return webhooksApi.fetch(params);
3696
3845
  }, {
3697
3846
  staleTime: WEBHOOK_STALE_TIME
3698
3847
  });
@@ -3783,16 +3932,125 @@ function _defineProperty(obj, key, value) {
3783
3932
  return obj;
3784
3933
  }
3785
3934
 
3935
+ var baseUrl = "/webhooks/events/all";
3936
+ var all = function all() {
3937
+ return axios__default["default"].get(baseUrl);
3938
+ };
3939
+ var eventsApi = {
3940
+ all: all
3941
+ };
3942
+
3943
+ var useFetchEvents = function useFetchEvents() {
3944
+ return reactQuery.useQuery([QUERY_KEYS.EVENTS_LIST], eventsApi.all, {
3945
+ staleTime: WEBHOOK_STALE_TIME
3946
+ });
3947
+ };
3948
+
3786
3949
  var WEBHOOK_HELP_URL = "https://help.neetocal.com/articles/webhook";
3787
3950
 
3951
+ var Menu = neetoui.Dropdown.Menu,
3952
+ MenuItem = neetoui.Dropdown.MenuItem;
3953
+ var ActionDropdown = function ActionDropdown(_ref) {
3954
+ var onEdit = _ref.onEdit,
3955
+ onDelete = _ref.onDelete;
3956
+ var _useTranslation = useTranslation(),
3957
+ t = _useTranslation.t;
3958
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
3959
+ buttonStyle: "text",
3960
+ icon: neetoIcons.MenuHorizontal,
3961
+ strategy: "fixed"
3962
+ }, /*#__PURE__*/React__default["default"].createElement(Menu, null, /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
3963
+ onClick: onEdit
3964
+ }, t("buttons.edit")), /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
3965
+ style: "danger",
3966
+ onClick: onDelete
3967
+ }, t("buttons.delete"))));
3968
+ };
3969
+
3970
+ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3971
+ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3788
3972
  var getValidationSchema = function getValidationSchema(webhooks) {
3789
3973
  return yup__namespace.object().shape({
3790
3974
  endpoint: yup__namespace.string().trim().matches(/^(https?):\/\//i, t$2("errors.webhook.invalidUrlProtocol")).url(t$2("errors.webhook.invalidUrl")).required(t$2("errors.webhook.required")).test("Is endpoint unique", t$2("errors.webhook.urlNotUnique"), function (endpoint, ctx) {
3791
3975
  return !ramda.pluck("endpoint", pure.removeById(ctx.parent.id, webhooks)).includes(endpoint === null || endpoint === void 0 ? void 0 : endpoint.trim());
3792
3976
  }),
3977
+ events: yup__namespace.array().min(1, t$2("errors.webhook.events.required")),
3793
3978
  secret: yup__namespace.string().trim().nullable()
3794
3979
  });
3795
3980
  };
3981
+ var buildPayload = function buildPayload(_ref) {
3982
+ var _initialValues$events;
3983
+ var isEditing = _ref.isEditing,
3984
+ values = _ref.values,
3985
+ initialValues = _ref.initialValues;
3986
+ var events = values.events.map(function (_ref2) {
3987
+ var identifier = _ref2.identifier;
3988
+ return {
3989
+ identifier: identifier
3990
+ };
3991
+ });
3992
+ if (!isEditing) return _objectSpread$1(_objectSpread$1({}, values), {}, {
3993
+ eventsAttributes: events
3994
+ });
3995
+ var deletable = ((_initialValues$events = initialValues.events) !== null && _initialValues$events !== void 0 ? _initialValues$events : []).filter(function (_ref3) {
3996
+ var identifier = _ref3.identifier;
3997
+ return !pure.findBy({
3998
+ identifier: identifier
3999
+ }, values.events);
4000
+ }).map(ramda.assoc("_destroy", true));
4001
+ var creatable = values.events.filter(function (_ref4) {
4002
+ var identifier = _ref4.identifier;
4003
+ return !pure.findBy({
4004
+ identifier: identifier
4005
+ }, initialValues.events);
4006
+ });
4007
+ return _objectSpread$1(_objectSpread$1({}, values), {}, {
4008
+ eventsAttributes: [].concat(_toConsumableArray(creatable), _toConsumableArray(deletable))
4009
+ });
4010
+ };
4011
+ var buildColumns = function buildColumns(_ref5) {
4012
+ var handleDelete = _ref5.handleDelete,
4013
+ handleEdit = _ref5.handleEdit,
4014
+ deliveriesPath = _ref5.deliveriesPath;
4015
+ return [{
4016
+ title: t$2("common.endpoint"),
4017
+ key: "endpoint",
4018
+ dataIndex: "endpoint",
4019
+ render: function render(endpoint, webhook) {
4020
+ return /*#__PURE__*/React__default["default"].createElement("div", {
4021
+ className: "flex items-center justify-between space-x-3"
4022
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
4023
+ style: "link",
4024
+ to: utils.buildUrl(deliveriesPath, {
4025
+ webhookId: webhook.id
4026
+ })
4027
+ }, endpoint), /*#__PURE__*/React__default["default"].createElement(ActionDropdown, {
4028
+ onDelete: function onDelete() {
4029
+ return handleDelete(webhook.id);
4030
+ },
4031
+ onEdit: function onEdit() {
4032
+ return handleEdit(webhook.id);
4033
+ }
4034
+ }));
4035
+ }
4036
+ }, {
4037
+ title: t$2("webhook.active"),
4038
+ key: "isActive",
4039
+ dataIndex: "isActive",
4040
+ render: function render(isActive) {
4041
+ return isActive ? t$2("webhook.activeStatuses.yes") : t$2("webhook.activeStatuses.no");
4042
+ },
4043
+ width: 100
4044
+ }, {
4045
+ title: t$2("common.event", constants.PLURAL),
4046
+ dataIndex: "events",
4047
+ key: "events",
4048
+ render: function render(events) {
4049
+ return ramda.pluck("label", events).sort().join(", ");
4050
+ },
4051
+ width: 200
4052
+ }];
4053
+ };
3796
4054
 
3797
4055
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3798
4056
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -3823,15 +4081,25 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3823
4081
  }),
3824
4082
  updateWebhook = _useUpdateWebhook.mutate;
3825
4083
  var endpointRef = React.useRef();
4084
+ var _useFetchEvents = useFetchEvents(),
4085
+ events = _useFetchEvents.data,
4086
+ isLoading = _useFetchEvents.isLoading;
3826
4087
  var initialValues = editingWebhookId ? webhook : {
3827
4088
  endpoint: "",
3828
- secret: ""
4089
+ events: events,
4090
+ secret: "",
4091
+ isActive: true
3829
4092
  };
3830
4093
  var handleSubmit = function handleSubmit(values) {
4094
+ var payload = buildPayload({
4095
+ isEditing: editingWebhookId,
4096
+ values: values,
4097
+ initialValues: initialValues
4098
+ });
3831
4099
  editingWebhookId ? updateWebhook({
3832
4100
  id: editingWebhookId,
3833
- payload: values
3834
- }) : createWebhook(_objectSpread(_objectSpread({}, values), {}, {
4101
+ payload: payload
4102
+ }) : createWebhook(_objectSpread(_objectSpread({}, payload), {}, {
3835
4103
  entityId: entityId,
3836
4104
  entityType: entityType
3837
4105
  }));
@@ -3864,8 +4132,11 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3864
4132
  }
3865
4133
  }, function (_ref2) {
3866
4134
  var dirty = _ref2.dirty,
3867
- isSubmitting = _ref2.isSubmitting;
3868
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
4135
+ isSubmitting = _ref2.isSubmitting,
4136
+ isValid = _ref2.isValid;
4137
+ return isLoading ? /*#__PURE__*/React__default["default"].createElement("div", {
4138
+ className: "flex items-center justify-center"
4139
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null)) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
3869
4140
  className: "w-full space-y-4"
3870
4141
  }, /*#__PURE__*/React__default["default"].createElement(formik.Input, {
3871
4142
  required: true,
@@ -3874,6 +4145,15 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3874
4145
  name: "endpoint",
3875
4146
  placeholder: t("webhook.endpointPlaceholder"),
3876
4147
  ref: endpointRef
4148
+ }), !isLoading && /*#__PURE__*/React__default["default"].createElement(formik.Select, {
4149
+ isMulti: true,
4150
+ required: true,
4151
+ getOptionLabel: ramda.prop("label"),
4152
+ getOptionValue: ramda.prop("identifier"),
4153
+ label: t("common.event", constants.PLURAL),
4154
+ name: "events",
4155
+ options: events,
4156
+ placeholder: t("webhook.eventPlaceholder")
3877
4157
  }), /*#__PURE__*/React__default["default"].createElement(formik.Input, {
3878
4158
  "data-cy": "secret-key-input-field",
3879
4159
  name: "secret",
@@ -3892,6 +4172,9 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3892
4172
  })
3893
4173
  }
3894
4174
  })
4175
+ }), /*#__PURE__*/React__default["default"].createElement(formik.Switch, {
4176
+ label: t("webhook.active"),
4177
+ name: "isActive"
3895
4178
  }))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
3896
4179
  className: "flex gap-2"
3897
4180
  }, /*#__PURE__*/React__default["default"].createElement(formik.ActionBlock, {
@@ -3903,7 +4186,7 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3903
4186
  },
3904
4187
  submitButtonProps: {
3905
4188
  label: t("buttons.saveChanges"),
3906
- disabled: !dirty,
4189
+ disabled: !dirty || !isValid,
3907
4190
  loading: isSubmitting
3908
4191
  }
3909
4192
  })));
@@ -3934,44 +4217,6 @@ var Header = function Header(_ref) {
3934
4217
  };
3935
4218
  var Header$1 = /*#__PURE__*/React__default["default"].memo(Header);
3936
4219
 
3937
- var Menu = neetoui.Dropdown.Menu,
3938
- MenuItem = neetoui.Dropdown.MenuItem;
3939
- var WebhookItem = function WebhookItem(_ref) {
3940
- var webhook = _ref.webhook,
3941
- onDeleteClick = _ref.onDeleteClick,
3942
- onEditClick = _ref.onEditClick,
3943
- deliveriesPath = _ref.deliveriesPath;
3944
- var _useTranslation = useTranslation(),
3945
- t = _useTranslation.t;
3946
- return /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
3947
- className: "neeto-ui-rounded-lg neeto-ui-border-gray-300 flex cursor-pointer items-center justify-between gap-4 border px-4 py-2",
3948
- to: utils.buildUrl(deliveriesPath, {
3949
- webhookId: webhook.id
3950
- })
3951
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3952
- className: "neeto-ui-text-primary-800 break-all",
3953
- component: "span",
3954
- style: "body1"
3955
- }, webhook.endpoint), /*#__PURE__*/React__default["default"].createElement("div", {
3956
- onClick: function onClick(e) {
3957
- e.preventDefault();
3958
- e.stopPropagation();
3959
- }
3960
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
3961
- buttonStyle: "text",
3962
- icon: neetoIcons.MenuHorizontal
3963
- }, /*#__PURE__*/React__default["default"].createElement(Menu, null, /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
3964
- onClick: function onClick() {
3965
- return onEditClick(webhook.id);
3966
- }
3967
- }, t("operation.edit")), /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
3968
- onClick: function onClick() {
3969
- return onDeleteClick(webhook.id);
3970
- }
3971
- }, t("operation.delete"))))));
3972
- };
3973
- var WebhookItem$1 = /*#__PURE__*/React__default["default"].memo(WebhookItem);
3974
-
3975
4220
  var Webhooks = function Webhooks(_ref) {
3976
4221
  var deliveriesPath = _ref.deliveriesPath,
3977
4222
  entityType = _ref.entityType,
@@ -3993,14 +4238,25 @@ var Webhooks = function Webhooks(_ref) {
3993
4238
  _useState8 = _slicedToArray(_useState7, 2),
3994
4239
  isDeleteAlertOpen = _useState8[0],
3995
4240
  setIsDeleteAlertOpen = _useState8[1];
4241
+ var _useState9 = React.useState(1),
4242
+ _useState10 = _slicedToArray(_useState9, 2),
4243
+ pageNumber = _useState10[0],
4244
+ setPageNumber = _useState10[1];
3996
4245
  var _useTranslation = useTranslation(),
3997
4246
  t = _useTranslation.t;
3998
- var _useFetchWebhooks = useFetchWebhooks(entityId),
4247
+ var _useFetchWebhooks = useFetchWebhooks({
4248
+ entityId: entityId,
4249
+ page: pageNumber,
4250
+ limit: DEFAULT_PAGE_SIZE
4251
+ }),
3999
4252
  isLoading = _useFetchWebhooks.isLoading,
4253
+ isFetching = _useFetchWebhooks.isFetching,
4000
4254
  _useFetchWebhooks$dat = _useFetchWebhooks.data,
4001
4255
  _useFetchWebhooks$dat2 = _useFetchWebhooks$dat === void 0 ? {} : _useFetchWebhooks$dat,
4002
4256
  _useFetchWebhooks$dat3 = _useFetchWebhooks$dat2.webhooks,
4003
- webhooks = _useFetchWebhooks$dat3 === void 0 ? [] : _useFetchWebhooks$dat3;
4257
+ webhooks = _useFetchWebhooks$dat3 === void 0 ? [] : _useFetchWebhooks$dat3,
4258
+ _useFetchWebhooks$dat4 = _useFetchWebhooks$dat2.totalCount,
4259
+ totalCount = _useFetchWebhooks$dat4 === void 0 ? 0 : _useFetchWebhooks$dat4;
4004
4260
  var _useDestroyWebhook = useDestroyWebhook({
4005
4261
  onSuccess: function onSuccess() {
4006
4262
  return setIsDeleteAlertOpen(false);
@@ -4023,28 +4279,33 @@ var Webhooks = function Webhooks(_ref) {
4023
4279
  if (isLoading) {
4024
4280
  return /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null);
4025
4281
  }
4026
- return /*#__PURE__*/React__default["default"].createElement("div", {
4027
- className: "w-full px-6"
4028
- }, /*#__PURE__*/React__default["default"].createElement("div", {
4029
- className: "neeto-ui-bg-white sticky top-0 z-50 w-full"
4030
- }), /*#__PURE__*/React__default["default"].createElement(Header$1, {
4282
+ return /*#__PURE__*/React__default["default"].createElement(Container__default["default"], {
4283
+ className: "w-full"
4284
+ }, /*#__PURE__*/React__default["default"].createElement(Header$1, {
4031
4285
  breadcrumbs: breadcrumbs,
4032
4286
  setIsAddWebhookPaneOpen: setIsAddWebhookPaneOpen
4033
- }), /*#__PURE__*/React__default["default"].createElement("div", {
4034
- className: "webhooks__list space-y-2"
4035
- }, webhooks.map(function (webhook) {
4036
- return /*#__PURE__*/React__default["default"].createElement(WebhookItem$1, {
4037
- deliveriesPath: deliveriesPath,
4038
- key: webhook.id,
4039
- webhook: webhook,
4040
- onDeleteClick: handleDelete,
4041
- onEditClick: handleEdit
4042
- });
4043
- }), ramda.isEmpty(webhooks) && /*#__PURE__*/React__default["default"].createElement("div", {
4044
- className: "flex h-full items-center justify-center"
4287
+ }), pure.isNotEmpty(webhooks) ? /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], {
4288
+ hasPagination: totalCount > DEFAULT_PAGE_SIZE
4289
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Table, {
4290
+ totalCount: totalCount,
4291
+ fixedHeight: true,
4292
+ currentPageNumber: pageNumber,
4293
+ defaultPageSize: DEFAULT_PAGE_SIZE,
4294
+ handlePageChange: function handlePageChange(page) {
4295
+ return setPageNumber(page);
4296
+ },
4297
+ loading: isFetching,
4298
+ rowData: webhooks,
4299
+ columnData: buildColumns({
4300
+ handleDelete: handleDelete,
4301
+ handleEdit: handleEdit,
4302
+ deliveriesPath: deliveriesPath
4303
+ })
4304
+ })) : /*#__PURE__*/React__default["default"].createElement("div", {
4305
+ className: "flex h-full w-full items-center justify-center"
4045
4306
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.NoData, {
4046
4307
  title: t("webhook.empty")
4047
- }))), /*#__PURE__*/React__default["default"].createElement(AddWebhookPane, {
4308
+ })), /*#__PURE__*/React__default["default"].createElement(AddWebhookPane, {
4048
4309
  editingWebhookId: editingWebhookId,
4049
4310
  entityId: entityId,
4050
4311
  entityType: entityType,