@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.js CHANGED
@@ -1,17 +1,20 @@
1
1
  import React, { createElement, isValidElement, cloneElement, createContext, useContext, useState, useRef, useEffect, useCallback } from 'react';
2
- import { useParams, Link, useRouteMatch, Switch, Route } from 'react-router-dom';
3
- import classNames from 'classnames';
4
- import { removeBy, removeById } from '@bigbinary/neeto-commons-frontend/pure';
5
- import { dateFormat, buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
6
- import { Close, Check, Info, MenuHorizontal } from '@bigbinary/neeto-icons';
2
+ import { useParams, useRouteMatch, Switch as Switch$1, Route } from 'react-router-dom';
3
+ import { isPresent, removeBy, isNotEmpty, removeById, findBy } from '@bigbinary/neeto-commons-frontend/pure';
4
+ import Container from '@bigbinary/neeto-molecules/Container';
7
5
  import Header$2 from '@bigbinary/neeto-molecules/Header';
8
6
  import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
9
- import { Spinner, Tab, Button, Typography, Accordion, Tag, NoData, Pane, Dropdown, Alert } from '@bigbinary/neetoui';
10
- import { isEmpty, pluck } from 'ramda';
7
+ import TableWrapper from '@bigbinary/neeto-molecules/TableWrapper';
8
+ import { Spinner, Typography, Tag, Tab, Pane, Button, Table, NoData, Dropdown, Alert } from '@bigbinary/neetoui';
11
9
  import { QueryClient, QueryCache, QueryClientProvider, useQuery, useQueryClient, useMutation } from 'react-query';
12
10
  import { ReactQueryDevtools } from 'react-query/devtools';
11
+ import { DEFAULT_STALE_TIME, SINGULAR, PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
13
12
  import axios from 'axios';
14
- import { Form, Input, ActionBlock } from '@bigbinary/neetoui/formik';
13
+ import DateFormat from '@bigbinary/neeto-molecules/DateFormat';
14
+ import { prop, pluck, assoc } from 'ramda';
15
+ import { MenuHorizontal, Info } from '@bigbinary/neeto-icons';
16
+ import { Form, Input, Select, Switch, ActionBlock } from '@bigbinary/neetoui/formik';
17
+ import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
15
18
  import * as yup from 'yup';
16
19
 
17
20
  const consoleLogger = {
@@ -2852,6 +2855,12 @@ function useTranslation(ns) {
2852
2855
  });
2853
2856
  }
2854
2857
 
2858
+ var common = {
2859
+ event_one: "Event",
2860
+ event_other: "Events",
2861
+ endpoint: "Endpoint",
2862
+ responseStatus: "Response status"
2863
+ };
2855
2864
  var entity = {
2856
2865
  webhook: "webhook",
2857
2866
  configure: "Configure"
@@ -2859,14 +2868,19 @@ var entity = {
2859
2868
  var buttons = {
2860
2869
  saveChanges: "Save changes",
2861
2870
  cancel: "Cancel",
2862
- "delete": "Delete"
2871
+ "delete": "Delete",
2872
+ edit: "Edit",
2873
+ viewDetails: "View details"
2863
2874
  };
2864
2875
  var errors = {
2865
2876
  webhook: {
2866
2877
  required: "Please enter your endpoint URL",
2867
2878
  invalidUrl: "Please enter a valid URL",
2868
2879
  invalidUrlProtocol: "Please enter a valid URL. URL must begin with http or https",
2869
- urlNotUnique: "Endpoint URL must be unique"
2880
+ urlNotUnique: "Endpoint URL must be unique",
2881
+ events: {
2882
+ required: "Please select atleast one webhook event"
2883
+ }
2870
2884
  }
2871
2885
  };
2872
2886
  var delivery = {
@@ -2878,6 +2892,7 @@ var delivery = {
2878
2892
  header: "Header",
2879
2893
  body: "Body",
2880
2894
  payload: "Payload",
2895
+ identifier: "Identifier",
2881
2896
  empty: {
2882
2897
  title: "There are no deliveries to show.",
2883
2898
  description: "No events have been sent to this webhook"
@@ -2889,10 +2904,18 @@ var webhook = {
2889
2904
  empty: "There are no webhooks defined currently",
2890
2905
  add: "Add new webhook",
2891
2906
  endpoint: "Endpoint",
2907
+ event_one: "Event",
2908
+ event_other: "Events",
2892
2909
  endpointPlaceholder: "Enter endpoint URL",
2910
+ eventPlaceholder: "Select webhook events",
2893
2911
  secret: "Secret key (optional) <helpLink><info></helpLink>",
2894
2912
  secretPlaceholder: "Enter secret key",
2895
- edit: "Edit Webhook"
2913
+ edit: "Edit Webhook",
2914
+ active: "Active",
2915
+ activeStatuses: {
2916
+ yes: "Yes",
2917
+ no: "No"
2918
+ }
2896
2919
  };
2897
2920
  var operation = {
2898
2921
  edit: "Edit",
@@ -2904,14 +2927,21 @@ var alert = {
2904
2927
  message: "You are deleting the {{entity}}."
2905
2928
  }
2906
2929
  };
2930
+ var tableHeaders = {
2931
+ active: "Active",
2932
+ details: "Details",
2933
+ createdAt: "Created at"
2934
+ };
2907
2935
  var en = {
2936
+ common: common,
2908
2937
  entity: entity,
2909
2938
  buttons: buttons,
2910
2939
  errors: errors,
2911
2940
  delivery: delivery,
2912
2941
  webhook: webhook,
2913
2942
  operation: operation,
2914
- alert: alert
2943
+ alert: alert,
2944
+ tableHeaders: tableHeaders
2915
2945
  };
2916
2946
 
2917
2947
  instance.use(initReactI18next).init({
@@ -2958,6 +2988,124 @@ function _toConsumableArray(arr) {
2958
2988
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
2959
2989
  }
2960
2990
 
2991
+ function _arrayWithHoles(arr) {
2992
+ if (Array.isArray(arr)) return arr;
2993
+ }
2994
+
2995
+ function _iterableToArrayLimit(arr, i) {
2996
+ var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
2997
+ if (null != _i) {
2998
+ var _s,
2999
+ _e,
3000
+ _x,
3001
+ _r,
3002
+ _arr = [],
3003
+ _n = !0,
3004
+ _d = !1;
3005
+ try {
3006
+ if (_x = (_i = _i.call(arr)).next, 0 === i) {
3007
+ if (Object(_i) !== _i) return;
3008
+ _n = !1;
3009
+ } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
3010
+ } catch (err) {
3011
+ _d = !0, _e = err;
3012
+ } finally {
3013
+ try {
3014
+ if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
3015
+ } finally {
3016
+ if (_d) throw _e;
3017
+ }
3018
+ }
3019
+ return _arr;
3020
+ }
3021
+ }
3022
+
3023
+ function _nonIterableRest() {
3024
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3025
+ }
3026
+
3027
+ function _slicedToArray(arr, i) {
3028
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
3029
+ }
3030
+
3031
+ var queryClient = new QueryClient({
3032
+ queryCache: new QueryCache(),
3033
+ defaultOptions: {
3034
+ queries: {
3035
+ staleTime: DEFAULT_STALE_TIME
3036
+ }
3037
+ }
3038
+ });
3039
+
3040
+ /* eslint-disable @bigbinary/neeto/file-name-and-export-name-standards */
3041
+ var withReactQuery = function withReactQuery(Component) {
3042
+ var QueryWrapper = function QueryWrapper(props) {
3043
+ return /*#__PURE__*/React.createElement(QueryClientProvider, {
3044
+ client: queryClient
3045
+ }, /*#__PURE__*/React.createElement(Component, props), /*#__PURE__*/React.createElement(ReactQueryDevtools, {
3046
+ initialIsOpen: false,
3047
+ position: "bottom-right"
3048
+ }));
3049
+ };
3050
+ return QueryWrapper;
3051
+ };
3052
+
3053
+ var baseUrl$2 = "/webhooks/deliveries";
3054
+ var fetch$1 = function fetch(params) {
3055
+ return axios.get(baseUrl$2, {
3056
+ params: params
3057
+ });
3058
+ };
3059
+ var show$1 = function show(id) {
3060
+ return axios.get("".concat(baseUrl$2, "/").concat(id));
3061
+ };
3062
+ var redeliver = function redeliver(id) {
3063
+ return axios.post("".concat(baseUrl$2, "/").concat(id, "/redeliver"));
3064
+ };
3065
+ var deliveriesApi = {
3066
+ fetch: fetch$1,
3067
+ show: show$1,
3068
+ redeliver: redeliver
3069
+ };
3070
+
3071
+ var QUERY_KEYS = {
3072
+ DELIVERY_LIST: "delivery-list",
3073
+ DELIVERY_DETAILS: "delivery-details",
3074
+ WEBHOOK_LIST: "webhook-list",
3075
+ WEBHOOK_DETAILS: "webhook-details",
3076
+ EVENTS_LIST: "events-list"
3077
+ };
3078
+ var DELIVERY_STALE_TIME = 3200000; // 1 hour
3079
+ var WEBHOOK_STALE_TIME = 3200000; // 1 hour
3080
+ var POST_REDELIVERY_ON_SUCCESS_TIMEOUT = 5000; // 5 seconds
3081
+
3082
+ var useFetchDeliveries = function useFetchDeliveries(params) {
3083
+ return useQuery([QUERY_KEYS.DELIVERY_LIST, params], function () {
3084
+ return deliveriesApi.fetch(params);
3085
+ }, {
3086
+ staleTime: DELIVERY_STALE_TIME
3087
+ });
3088
+ };
3089
+ var useShowDelivery = function useShowDelivery(id) {
3090
+ return useQuery([QUERY_KEYS.DELIVERY_DETAILS, id], function () {
3091
+ return deliveriesApi.show(id);
3092
+ }, {
3093
+ staleTime: DELIVERY_STALE_TIME
3094
+ });
3095
+ };
3096
+ var useRedeliverWebhook = function useRedeliverWebhook() {
3097
+ var queryClient = useQueryClient();
3098
+ return useMutation(deliveriesApi.redeliver, {
3099
+ onSuccess: function onSuccess() {
3100
+ setTimeout(function () {
3101
+ return queryClient.invalidateQueries(QUERY_KEYS.DELIVERY_LIST);
3102
+ }, POST_REDELIVERY_ON_SUCCESS_TIMEOUT);
3103
+ }
3104
+ });
3105
+ };
3106
+
3107
+ var DEFAULT_PAGE_SIZE = 10;
3108
+
2961
3109
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2962
3110
  try {
2963
3111
  var info = gen[key](arg);
@@ -3338,137 +3486,24 @@ try {
3338
3486
 
3339
3487
  var _regeneratorRuntime = /*@__PURE__*/getDefaultExportFromCjs(regenerator);
3340
3488
 
3341
- var queryClient = new QueryClient({
3342
- queryCache: new QueryCache()
3343
- });
3344
-
3345
- var withReactQuery = function withReactQuery(Component) {
3346
- var QueryWrapper = function QueryWrapper(props) {
3347
- return /*#__PURE__*/React.createElement(QueryClientProvider, {
3348
- client: queryClient
3349
- }, /*#__PURE__*/React.createElement(Component, props), /*#__PURE__*/React.createElement(ReactQueryDevtools, {
3350
- initialIsOpen: false,
3351
- position: "bottom-right"
3352
- }));
3353
- };
3354
- return QueryWrapper;
3355
- };
3356
-
3357
- var baseUrl$1 = "/webhooks/deliveries";
3358
- var fetch$1 = function fetch(webhook_id) {
3359
- return axios.get(baseUrl$1, {
3360
- params: {
3361
- webhook_id: webhook_id
3362
- }
3363
- });
3364
- };
3365
- var show$1 = function show(id) {
3366
- return axios.get("".concat(baseUrl$1, "/").concat(id));
3367
- };
3368
- var redeliver = function redeliver(id) {
3369
- return axios.post("".concat(baseUrl$1, "/").concat(id, "/redeliver"));
3370
- };
3371
- var deliveriesApi = {
3372
- fetch: fetch$1,
3373
- show: show$1,
3374
- redeliver: redeliver
3375
- };
3376
-
3377
- var QUERY_KEYS = {
3378
- DELIVERY_LIST: "delivery-list",
3379
- DELIVERY_DETAILS: "delivery-details",
3380
- WEBHOOK_LIST: "webhook-list",
3381
- WEBHOOK_DETAILS: "webhook-details"
3382
- };
3383
- var DELIVERY_STALE_TIME = 3200000; // 1 hour
3384
- var WEBHOOK_STALE_TIME = 3200000; // 1 hour
3385
- var POST_REDELIVERY_ON_SUCCESS_TIMEOUT = 5000; // 5 seconds
3386
-
3387
- var useFetchDeliveries = function useFetchDeliveries(webhookId) {
3388
- return useQuery([QUERY_KEYS.DELIVERY_LIST, webhookId], function () {
3389
- return deliveriesApi.fetch(webhookId);
3390
- }, {
3391
- staleTime: DELIVERY_STALE_TIME
3392
- });
3393
- };
3394
- var useShowDelivery = function useShowDelivery(id) {
3395
- return useQuery([QUERY_KEYS.DELIVERY_DETAILS, id], function () {
3396
- return deliveriesApi.show(id);
3397
- }, {
3398
- staleTime: DELIVERY_STALE_TIME
3399
- });
3400
- };
3401
- var useRedeliverWebhook = function useRedeliverWebhook() {
3402
- var queryClient = useQueryClient();
3403
- return useMutation(deliveriesApi.redeliver, {
3404
- onSuccess: function onSuccess() {
3405
- setTimeout(function () {
3406
- return queryClient.invalidateQueries(QUERY_KEYS.DELIVERY_LIST);
3407
- }, POST_REDELIVERY_ON_SUCCESS_TIMEOUT);
3408
- }
3409
- });
3410
- };
3411
-
3412
3489
  var DELIVERY_TAB = {
3413
3490
  response: "response",
3414
3491
  request: "request"
3415
3492
  };
3416
- var DELIVERY_STATUS = {
3417
- failure: "failure",
3418
- success: "success"
3419
- };
3420
-
3421
- function _arrayWithHoles(arr) {
3422
- if (Array.isArray(arr)) return arr;
3423
- }
3424
-
3425
- function _iterableToArrayLimit(arr, i) {
3426
- var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
3427
- if (null != _i) {
3428
- var _s,
3429
- _e,
3430
- _x,
3431
- _r,
3432
- _arr = [],
3433
- _n = !0,
3434
- _d = !1;
3435
- try {
3436
- if (_x = (_i = _i.call(arr)).next, 0 === i) {
3437
- if (Object(_i) !== _i) return;
3438
- _n = !1;
3439
- } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
3440
- } catch (err) {
3441
- _d = !0, _e = err;
3442
- } finally {
3443
- try {
3444
- if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
3445
- } finally {
3446
- if (_d) throw _e;
3447
- }
3448
- }
3449
- return _arr;
3450
- }
3451
- }
3452
-
3453
- function _nonIterableRest() {
3454
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3455
- }
3456
-
3457
- function _slicedToArray(arr, i) {
3458
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
3459
- }
3460
3493
 
3461
3494
  var Snippet = function Snippet(_ref) {
3462
3495
  var children = _ref.children;
3463
3496
  return /*#__PURE__*/React.createElement("div", {
3464
- className: "my-2 whitespace-pre-wrap break-all rounded border border-gray-300 bg-gray-100 p-4"
3497
+ className: "neeto-ui-rounded neeto-ui-border-gray-300 neeto-ui-bg-gray-100 my-2 whitespace-pre-wrap break-all border p-4"
3465
3498
  }, children);
3466
3499
  };
3467
3500
 
3468
- var DeliveryItem = function DeliveryItem(_ref) {
3469
- var deliveryId = _ref.deliveryId,
3470
- isRedelivering = _ref.isRedelivering,
3471
- onRedeliverClick = _ref.onRedeliverClick;
3501
+ var TransactionDetails = function TransactionDetails(_ref) {
3502
+ var delivery = _ref.delivery;
3503
+ var deliveryId = delivery.id,
3504
+ status = delivery.status,
3505
+ identifier = delivery.identifier,
3506
+ responseStatusCode = delivery.responseStatusCode;
3472
3507
  var _useState = useState(DELIVERY_TAB.request),
3473
3508
  _useState2 = _slicedToArray(_useState, 2),
3474
3509
  activeHeader = _useState2[0],
@@ -3480,17 +3515,29 @@ var DeliveryItem = function DeliveryItem(_ref) {
3480
3515
  _useShowDelivery$data = _useShowDelivery.data,
3481
3516
  _useShowDelivery$data2 = _useShowDelivery$data === void 0 ? {} : _useShowDelivery$data,
3482
3517
  _useShowDelivery$data3 = _useShowDelivery$data2.delivery,
3483
- delivery = _useShowDelivery$data3 === void 0 ? {} : _useShowDelivery$data3;
3518
+ deliveryDetails = _useShowDelivery$data3 === void 0 ? {} : _useShowDelivery$data3;
3484
3519
  if (isLoading) {
3485
3520
  return /*#__PURE__*/React.createElement("div", {
3486
- className: "flex items-center justify-center py-6"
3521
+ className: "flex w-full items-center justify-center py-6"
3487
3522
  }, /*#__PURE__*/React.createElement(Spinner, null));
3488
3523
  }
3489
- return /*#__PURE__*/React.createElement("div", {
3490
- className: "p-4"
3491
- }, /*#__PURE__*/React.createElement(Tab, {
3492
- className: "mb-4"
3493
- }, /*#__PURE__*/React.createElement(Tab.Item, {
3524
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
3525
+ className: "neeto-ui-bg-white sticky top-0 mb-2 flex w-full flex-col"
3526
+ }, /*#__PURE__*/React.createElement("div", {
3527
+ className: "flex w-full flex-col space-y-2 pb-4"
3528
+ }, /*#__PURE__*/React.createElement("span", {
3529
+ className: "flex items-center space-x-1"
3530
+ }, t("delivery.identifier"), ":", /*#__PURE__*/React.createElement(Typography, {
3531
+ className: "px-2 font-bold",
3532
+ style: "body2"
3533
+ }, identifier)), /*#__PURE__*/React.createElement("span", {
3534
+ className: "flex items-center"
3535
+ }, t("common.responseStatus"), ":", /*#__PURE__*/React.createElement(Typography, {
3536
+ className: "px-2 font-bold",
3537
+ style: "body2"
3538
+ }, responseStatusCode), /*#__PURE__*/React.createElement(Tag, {
3539
+ style: status === "success" ? "success" : "warning"
3540
+ }, status))), /*#__PURE__*/React.createElement(Tab, null, /*#__PURE__*/React.createElement(Tab.Item, {
3494
3541
  active: activeHeader === DELIVERY_TAB.request,
3495
3542
  onClick: function onClick() {
3496
3543
  return setActiveHeader(DELIVERY_TAB.request);
@@ -3500,65 +3547,190 @@ var DeliveryItem = function DeliveryItem(_ref) {
3500
3547
  onClick: function onClick() {
3501
3548
  return setActiveHeader(DELIVERY_TAB.response);
3502
3549
  }
3503
- }, t("delivery.response")), /*#__PURE__*/React.createElement("div", {
3504
- className: "flex flex-1 justify-end"
3505
- }, /*#__PURE__*/React.createElement(Button, {
3506
- className: "mr-2 mb-2",
3507
- label: t("delivery.redeliver"),
3508
- loading: isRedelivering,
3509
- style: "secondary",
3510
- onClick: function onClick() {
3511
- return onRedeliverClick(delivery.id);
3512
- }
3513
- }))), activeHeader === DELIVERY_TAB.request ? /*#__PURE__*/React.createElement("div", {
3550
+ }, t("delivery.response")))), /*#__PURE__*/React.createElement("div", {
3551
+ className: "mt-2"
3552
+ }, activeHeader === DELIVERY_TAB.request ? /*#__PURE__*/React.createElement("div", {
3514
3553
  className: "space-y-4"
3515
3554
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
3516
3555
  style: "h5"
3517
- }, t("delivery.header")), /*#__PURE__*/React.createElement(Snippet, null, delivery.requestHeader)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
3556
+ }, t("delivery.header")), /*#__PURE__*/React.createElement(Snippet, null, deliveryDetails.requestHeader)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
3518
3557
  style: "h5"
3519
- }, t("delivery.payload")), /*#__PURE__*/React.createElement(Snippet, null, JSON.stringify(JSON.parse(delivery.requestBody), null, 2)))) : /*#__PURE__*/React.createElement("div", {
3558
+ }, t("delivery.payload")), /*#__PURE__*/React.createElement(Snippet, null, JSON.stringify(JSON.parse(deliveryDetails.requestBody), null, 2)))) : /*#__PURE__*/React.createElement("div", {
3520
3559
  className: "space-y-4"
3521
3560
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
3522
3561
  style: "h5"
3523
- }, t("delivery.header")), /*#__PURE__*/React.createElement(Snippet, null, delivery.responseHeader)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
3562
+ }, t("delivery.header")), /*#__PURE__*/React.createElement(Snippet, null, deliveryDetails.responseHeader)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Typography, {
3524
3563
  style: "h5"
3525
- }, t("delivery.body")), /*#__PURE__*/React.createElement(Snippet, null, delivery.responseBody))));
3564
+ }, t("delivery.body")), /*#__PURE__*/React.createElement(Snippet, null, deliveryDetails.responseBody)))));
3526
3565
  };
3527
3566
 
3528
- var Deliveries = function Deliveries(_ref) {
3529
- var webhooksUrl = _ref.webhooksUrl,
3530
- hostBreadcrumbs = _ref.breadcrumbs;
3567
+ var Details = function Details(_ref) {
3568
+ var delivery = _ref.delivery,
3569
+ onClose = _ref.onClose;
3570
+ var createdAt = delivery.createdAt,
3571
+ id = delivery.id;
3531
3572
  var _useTranslation = useTranslation(),
3532
3573
  t = _useTranslation.t;
3533
- var _useParams = useParams(),
3534
- webhookId = _useParams.webhookId;
3535
- var _useFetchDeliveries = useFetchDeliveries(webhookId),
3536
- isLoading = _useFetchDeliveries.isLoading,
3537
- _useFetchDeliveries$d = _useFetchDeliveries.data,
3538
- _useFetchDeliveries$d2 = _useFetchDeliveries$d === void 0 ? {} : _useFetchDeliveries$d,
3539
- endpoint = _useFetchDeliveries$d2.endpoint,
3540
- _useFetchDeliveries$d3 = _useFetchDeliveries$d2.deliveries,
3541
- deliveries = _useFetchDeliveries$d3 === void 0 ? [] : _useFetchDeliveries$d3;
3542
3574
  var _useRedeliverWebhook = useRedeliverWebhook(),
3543
3575
  isRedelivering = _useRedeliverWebhook.isLoading,
3544
3576
  redeliverWebhook = _useRedeliverWebhook.mutateAsync;
3545
- var onRedeliverClick = /*#__PURE__*/function () {
3546
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(deliveryId) {
3577
+ var handleRedeliverClick = /*#__PURE__*/function () {
3578
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
3547
3579
  return _regeneratorRuntime.wrap(function _callee$(_context) {
3548
3580
  while (1) switch (_context.prev = _context.next) {
3549
3581
  case 0:
3550
3582
  _context.next = 2;
3551
- return redeliverWebhook(deliveryId);
3583
+ return redeliverWebhook(id);
3552
3584
  case 2:
3553
3585
  case "end":
3554
3586
  return _context.stop();
3555
3587
  }
3556
3588
  }, _callee);
3557
3589
  }));
3558
- return function onRedeliverClick(_x) {
3590
+ return function handleRedeliverClick() {
3559
3591
  return _ref2.apply(this, arguments);
3560
3592
  };
3561
3593
  }();
3594
+ return /*#__PURE__*/React.createElement(Pane, {
3595
+ isOpen: isPresent(delivery),
3596
+ size: "large",
3597
+ onClose: onClose
3598
+ }, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DateFormat.Date, {
3599
+ date: createdAt,
3600
+ typographyProps: {
3601
+ style: "h2",
3602
+ weight: "semibold"
3603
+ }
3604
+ }), /*#__PURE__*/React.createElement("span", null, " \u2022 "), /*#__PURE__*/React.createElement(DateFormat.Time, {
3605
+ date: createdAt,
3606
+ typographyProps: {
3607
+ style: "h2",
3608
+ weight: "normal"
3609
+ }
3610
+ }))), /*#__PURE__*/React.createElement(Pane.Body, null, isPresent(delivery) && /*#__PURE__*/React.createElement(TransactionDetails, {
3611
+ delivery: delivery
3612
+ })), /*#__PURE__*/React.createElement(Pane.Footer, {
3613
+ className: "gap-x-2"
3614
+ }, /*#__PURE__*/React.createElement(Button, {
3615
+ disabled: isRedelivering,
3616
+ label: t("delivery.redeliver"),
3617
+ loading: isRedelivering,
3618
+ style: "primary",
3619
+ onClick: handleRedeliverClick
3620
+ }), /*#__PURE__*/React.createElement(Button, {
3621
+ label: t("buttons.cancel"),
3622
+ style: "text",
3623
+ onClick: onClose
3624
+ })));
3625
+ };
3626
+
3627
+ var buildColumns$1 = function buildColumns(_ref) {
3628
+ var handleDetailsClick = _ref.handleDetailsClick;
3629
+ return [{
3630
+ title: t$2("delivery.identifier", SINGULAR),
3631
+ key: "identifier",
3632
+ width: 300,
3633
+ render: function render(_ref2) {
3634
+ var identifier = _ref2.identifier,
3635
+ redelivery = _ref2.redelivery;
3636
+ return /*#__PURE__*/React.createElement("div", {
3637
+ className: "flex space-x-1"
3638
+ }, /*#__PURE__*/React.createElement(Typography, {
3639
+ className: "px-2",
3640
+ style: "body2",
3641
+ weight: "semibold"
3642
+ }, identifier), redelivery && /*#__PURE__*/React.createElement(Tag, {
3643
+ style: "info"
3644
+ }, t$2("delivery.redelivery")));
3645
+ }
3646
+ }, {
3647
+ title: t$2("tableHeaders.createdAt"),
3648
+ key: "createdAt",
3649
+ dataIndex: "createdAt",
3650
+ width: 300,
3651
+ render: function render(createdAt) {
3652
+ return /*#__PURE__*/React.createElement("div", {
3653
+ className: "flex items-center justify-between space-x-1"
3654
+ }, /*#__PURE__*/React.createElement(Typography, null, /*#__PURE__*/React.createElement(DateFormat.Date, {
3655
+ date: createdAt,
3656
+ typographyProps: {
3657
+ style: "body1",
3658
+ weight: "semibold"
3659
+ }
3660
+ }), /*#__PURE__*/React.createElement("span", null, " \u2022 "), /*#__PURE__*/React.createElement(DateFormat.Time, {
3661
+ date: createdAt,
3662
+ typographyProps: {
3663
+ style: "body1"
3664
+ }
3665
+ })));
3666
+ }
3667
+ }, {
3668
+ title: t$2("common.responseStatus"),
3669
+ key: "responseStatusCode",
3670
+ width: 150,
3671
+ render: function render(_ref3) {
3672
+ var responseStatusCode = _ref3.responseStatusCode,
3673
+ status = _ref3.status;
3674
+ return /*#__PURE__*/React.createElement("span", {
3675
+ className: "flex items-center"
3676
+ }, /*#__PURE__*/React.createElement(Typography, {
3677
+ className: "px-2 font-bold",
3678
+ style: "body2"
3679
+ }, responseStatusCode), /*#__PURE__*/React.createElement(Tag, {
3680
+ style: status === "success" ? "success" : "warning"
3681
+ }, status));
3682
+ }
3683
+ }, {
3684
+ title: t$2("common.event", SINGULAR),
3685
+ key: "event",
3686
+ dataIndex: "event",
3687
+ width: 100,
3688
+ render: prop("label")
3689
+ }, {
3690
+ title: t$2("tableHeaders.details"),
3691
+ key: "details",
3692
+ dataIndex: "details",
3693
+ width: 150,
3694
+ render: function render(_, delivery) {
3695
+ return /*#__PURE__*/React.createElement(Button, {
3696
+ label: t$2("buttons.viewDetails"),
3697
+ size: "small",
3698
+ onClick: function onClick() {
3699
+ return handleDetailsClick(delivery);
3700
+ }
3701
+ });
3702
+ }
3703
+ }];
3704
+ };
3705
+
3706
+ var Deliveries = function Deliveries(_ref) {
3707
+ var webhooksUrl = _ref.webhooksUrl,
3708
+ hostBreadcrumbs = _ref.breadcrumbs;
3709
+ var _useState = useState(1),
3710
+ _useState2 = _slicedToArray(_useState, 2),
3711
+ pageNumber = _useState2[0],
3712
+ setPageNumber = _useState2[1];
3713
+ var _useState3 = useState({}),
3714
+ _useState4 = _slicedToArray(_useState3, 2),
3715
+ selectedDelivery = _useState4[0],
3716
+ setSelectedDelivery = _useState4[1];
3717
+ var _useTranslation = useTranslation(),
3718
+ t = _useTranslation.t;
3719
+ var _useParams = useParams(),
3720
+ webhookId = _useParams.webhookId;
3721
+ var _useFetchDeliveries = useFetchDeliveries({
3722
+ webhookId: webhookId,
3723
+ page: pageNumber,
3724
+ limit: DEFAULT_PAGE_SIZE
3725
+ }),
3726
+ isLoading = _useFetchDeliveries.isLoading,
3727
+ isFetching = _useFetchDeliveries.isFetching,
3728
+ _useFetchDeliveries$d = _useFetchDeliveries.data,
3729
+ _useFetchDeliveries$d2 = _useFetchDeliveries$d === void 0 ? {} : _useFetchDeliveries$d,
3730
+ endpoint = _useFetchDeliveries$d2.endpoint,
3731
+ totalCount = _useFetchDeliveries$d2.totalCount,
3732
+ _useFetchDeliveries$d3 = _useFetchDeliveries$d2.deliveries,
3733
+ deliveries = _useFetchDeliveries$d3 === void 0 ? [] : _useFetchDeliveries$d3;
3562
3734
  var breadcrumbsWithoutWebhooksTitle = removeBy({
3563
3735
  text: t("webhook.title")
3564
3736
  }, hostBreadcrumbs);
@@ -3570,86 +3742,61 @@ var Deliveries = function Deliveries(_ref) {
3570
3742
  text: endpoint
3571
3743
  }]);
3572
3744
  if (isLoading) return /*#__PURE__*/React.createElement(PageLoader, null);
3573
- return /*#__PURE__*/React.createElement("div", {
3574
- className: "w-full px-6"
3745
+ return /*#__PURE__*/React.createElement(Container, {
3746
+ className: "w-full"
3575
3747
  }, /*#__PURE__*/React.createElement(Header$2, {
3576
3748
  breadcrumbs: breadcrumbs,
3577
3749
  title: t("delivery.title")
3578
- }), /*#__PURE__*/React.createElement("div", {
3579
- className: "deliveries__list"
3580
- }, /*#__PURE__*/React.createElement(Accordion, {
3581
- className: classNames("neeto-ui-rounded", {
3582
- border: deliveries.length
3750
+ }), isNotEmpty(deliveries) ? /*#__PURE__*/React.createElement(TableWrapper, {
3751
+ hasPagination: totalCount > DEFAULT_PAGE_SIZE
3752
+ }, /*#__PURE__*/React.createElement(Table, {
3753
+ totalCount: totalCount,
3754
+ fixedHeight: true,
3755
+ currentPageNumber: pageNumber,
3756
+ defaultPageSize: DEFAULT_PAGE_SIZE,
3757
+ handlePageChange: function handlePageChange(page) {
3758
+ return setPageNumber(page);
3759
+ },
3760
+ loading: isFetching,
3761
+ rowData: deliveries,
3762
+ columnData: buildColumns$1({
3763
+ handleDetailsClick: setSelectedDelivery
3583
3764
  })
3584
- }, deliveries.map(function (_ref3) {
3585
- var id = _ref3.id,
3586
- status = _ref3.status,
3587
- identifier = _ref3.identifier,
3588
- action = _ref3.action,
3589
- redelivery = _ref3.redelivery,
3590
- createdAt = _ref3.createdAt;
3591
- return /*#__PURE__*/React.createElement(Accordion.Item, {
3592
- key: id,
3593
- title: /*#__PURE__*/React.createElement("div", {
3594
- className: "flex flex-1 justify-between"
3595
- }, /*#__PURE__*/React.createElement("div", {
3596
- className: "flex items-center gap-2"
3597
- }, /*#__PURE__*/React.createElement("span", null, status === DELIVERY_STATUS.failure ? /*#__PURE__*/React.createElement(Close, {
3598
- className: "neeto-ui-text-error-600",
3599
- size: 20,
3600
- strokeWidth: 2.5
3601
- }) : /*#__PURE__*/React.createElement(Check, {
3602
- className: "neeto-ui-text-success-600",
3603
- size: 24,
3604
- strokeWidth: 2
3605
- })), /*#__PURE__*/React.createElement(Typography, {
3606
- style: "h5"
3607
- }, identifier), /*#__PURE__*/React.createElement(Tag, {
3608
- label: action,
3609
- style: "info"
3610
- }), redelivery && /*#__PURE__*/React.createElement(Tag, {
3611
- label: t("delivery.redelivery")
3612
- })), /*#__PURE__*/React.createElement(Typography, {
3613
- className: "mr-8",
3614
- style: "body2"
3615
- }, dateFormat.dateTime(createdAt)))
3616
- }, /*#__PURE__*/React.createElement(DeliveryItem, {
3617
- deliveryId: id,
3618
- isRedelivering: isRedelivering,
3619
- onRedeliverClick: onRedeliverClick
3620
- }));
3621
- })), isEmpty(deliveries) && /*#__PURE__*/React.createElement("div", {
3622
- className: "flex h-full items-center justify-center"
3765
+ })) : /*#__PURE__*/React.createElement("div", {
3766
+ className: "flex h-full w-full items-center justify-center"
3623
3767
  }, /*#__PURE__*/React.createElement(NoData, {
3624
3768
  description: t("delivery.empty.description"),
3625
3769
  title: t("delivery.empty.title")
3626
- }))));
3770
+ })), /*#__PURE__*/React.createElement(Details, {
3771
+ delivery: selectedDelivery,
3772
+ onClose: function onClose() {
3773
+ return setSelectedDelivery({});
3774
+ }
3775
+ }));
3627
3776
  };
3628
3777
  var Deliveries$1 = withReactQuery(Deliveries);
3629
3778
 
3630
- var baseUrl = "/webhooks/webhooks";
3631
- var fetch = function fetch(entity_id) {
3632
- return axios.get(baseUrl, {
3633
- params: {
3634
- entity_id: entity_id
3635
- }
3779
+ var baseUrl$1 = "/webhooks/webhooks";
3780
+ var fetch = function fetch(params) {
3781
+ return axios.get(baseUrl$1, {
3782
+ params: params
3636
3783
  });
3637
3784
  };
3638
3785
  var create = function create(payload) {
3639
- return axios.post(baseUrl, {
3786
+ return axios.post(baseUrl$1, {
3640
3787
  webhook: payload
3641
3788
  });
3642
3789
  };
3643
3790
  var show = function show(id) {
3644
- return axios.get("".concat(baseUrl, "/").concat(id));
3791
+ return axios.get("".concat(baseUrl$1, "/").concat(id));
3645
3792
  };
3646
3793
  var update = function update(id, payload) {
3647
- return axios.put("".concat(baseUrl, "/").concat(id), {
3794
+ return axios.put("".concat(baseUrl$1, "/").concat(id), {
3648
3795
  webhook: payload
3649
3796
  });
3650
3797
  };
3651
3798
  var destroy = function destroy(id) {
3652
- return axios["delete"]("".concat(baseUrl, "/").concat(id));
3799
+ return axios["delete"]("".concat(baseUrl$1, "/").concat(id));
3653
3800
  };
3654
3801
  var webhooksApi = {
3655
3802
  fetch: fetch,
@@ -3659,9 +3806,9 @@ var webhooksApi = {
3659
3806
  destroy: destroy
3660
3807
  };
3661
3808
 
3662
- var useFetchWebhooks = function useFetchWebhooks(entityId) {
3663
- return useQuery([QUERY_KEYS.WEBHOOK_LIST, entityId], function () {
3664
- return webhooksApi.fetch(entityId);
3809
+ var useFetchWebhooks = function useFetchWebhooks(params) {
3810
+ return useQuery([QUERY_KEYS.WEBHOOK_LIST, params], function () {
3811
+ return webhooksApi.fetch(params);
3665
3812
  }, {
3666
3813
  staleTime: WEBHOOK_STALE_TIME
3667
3814
  });
@@ -3752,16 +3899,125 @@ function _defineProperty(obj, key, value) {
3752
3899
  return obj;
3753
3900
  }
3754
3901
 
3902
+ var baseUrl = "/webhooks/events/all";
3903
+ var all = function all() {
3904
+ return axios.get(baseUrl);
3905
+ };
3906
+ var eventsApi = {
3907
+ all: all
3908
+ };
3909
+
3910
+ var useFetchEvents = function useFetchEvents() {
3911
+ return useQuery([QUERY_KEYS.EVENTS_LIST], eventsApi.all, {
3912
+ staleTime: WEBHOOK_STALE_TIME
3913
+ });
3914
+ };
3915
+
3755
3916
  var WEBHOOK_HELP_URL = "https://help.neetocal.com/articles/webhook";
3756
3917
 
3918
+ var Menu = Dropdown.Menu,
3919
+ MenuItem = Dropdown.MenuItem;
3920
+ var ActionDropdown = function ActionDropdown(_ref) {
3921
+ var onEdit = _ref.onEdit,
3922
+ onDelete = _ref.onDelete;
3923
+ var _useTranslation = useTranslation(),
3924
+ t = _useTranslation.t;
3925
+ return /*#__PURE__*/React.createElement(Dropdown, {
3926
+ buttonStyle: "text",
3927
+ icon: MenuHorizontal,
3928
+ strategy: "fixed"
3929
+ }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
3930
+ onClick: onEdit
3931
+ }, t("buttons.edit")), /*#__PURE__*/React.createElement(MenuItem.Button, {
3932
+ style: "danger",
3933
+ onClick: onDelete
3934
+ }, t("buttons.delete"))));
3935
+ };
3936
+
3937
+ 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; }
3938
+ 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; }
3757
3939
  var getValidationSchema = function getValidationSchema(webhooks) {
3758
3940
  return yup.object().shape({
3759
3941
  endpoint: yup.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) {
3760
3942
  return !pluck("endpoint", removeById(ctx.parent.id, webhooks)).includes(endpoint === null || endpoint === void 0 ? void 0 : endpoint.trim());
3761
3943
  }),
3944
+ events: yup.array().min(1, t$2("errors.webhook.events.required")),
3762
3945
  secret: yup.string().trim().nullable()
3763
3946
  });
3764
3947
  };
3948
+ var buildPayload = function buildPayload(_ref) {
3949
+ var _initialValues$events;
3950
+ var isEditing = _ref.isEditing,
3951
+ values = _ref.values,
3952
+ initialValues = _ref.initialValues;
3953
+ var events = values.events.map(function (_ref2) {
3954
+ var identifier = _ref2.identifier;
3955
+ return {
3956
+ identifier: identifier
3957
+ };
3958
+ });
3959
+ if (!isEditing) return _objectSpread$1(_objectSpread$1({}, values), {}, {
3960
+ eventsAttributes: events
3961
+ });
3962
+ var deletable = ((_initialValues$events = initialValues.events) !== null && _initialValues$events !== void 0 ? _initialValues$events : []).filter(function (_ref3) {
3963
+ var identifier = _ref3.identifier;
3964
+ return !findBy({
3965
+ identifier: identifier
3966
+ }, values.events);
3967
+ }).map(assoc("_destroy", true));
3968
+ var creatable = values.events.filter(function (_ref4) {
3969
+ var identifier = _ref4.identifier;
3970
+ return !findBy({
3971
+ identifier: identifier
3972
+ }, initialValues.events);
3973
+ });
3974
+ return _objectSpread$1(_objectSpread$1({}, values), {}, {
3975
+ eventsAttributes: [].concat(_toConsumableArray(creatable), _toConsumableArray(deletable))
3976
+ });
3977
+ };
3978
+ var buildColumns = function buildColumns(_ref5) {
3979
+ var handleDelete = _ref5.handleDelete,
3980
+ handleEdit = _ref5.handleEdit,
3981
+ deliveriesPath = _ref5.deliveriesPath;
3982
+ return [{
3983
+ title: t$2("common.endpoint"),
3984
+ key: "endpoint",
3985
+ dataIndex: "endpoint",
3986
+ render: function render(endpoint, webhook) {
3987
+ return /*#__PURE__*/React.createElement("div", {
3988
+ className: "flex items-center justify-between space-x-3"
3989
+ }, /*#__PURE__*/React.createElement(Button, {
3990
+ style: "link",
3991
+ to: buildUrl(deliveriesPath, {
3992
+ webhookId: webhook.id
3993
+ })
3994
+ }, endpoint), /*#__PURE__*/React.createElement(ActionDropdown, {
3995
+ onDelete: function onDelete() {
3996
+ return handleDelete(webhook.id);
3997
+ },
3998
+ onEdit: function onEdit() {
3999
+ return handleEdit(webhook.id);
4000
+ }
4001
+ }));
4002
+ }
4003
+ }, {
4004
+ title: t$2("webhook.active"),
4005
+ key: "isActive",
4006
+ dataIndex: "isActive",
4007
+ render: function render(isActive) {
4008
+ return isActive ? t$2("webhook.activeStatuses.yes") : t$2("webhook.activeStatuses.no");
4009
+ },
4010
+ width: 100
4011
+ }, {
4012
+ title: t$2("common.event", PLURAL),
4013
+ dataIndex: "events",
4014
+ key: "events",
4015
+ render: function render(events) {
4016
+ return pluck("label", events).sort().join(", ");
4017
+ },
4018
+ width: 200
4019
+ }];
4020
+ };
3765
4021
 
3766
4022
  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; }
3767
4023
  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; }
@@ -3792,15 +4048,25 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3792
4048
  }),
3793
4049
  updateWebhook = _useUpdateWebhook.mutate;
3794
4050
  var endpointRef = useRef();
4051
+ var _useFetchEvents = useFetchEvents(),
4052
+ events = _useFetchEvents.data,
4053
+ isLoading = _useFetchEvents.isLoading;
3795
4054
  var initialValues = editingWebhookId ? webhook : {
3796
4055
  endpoint: "",
3797
- secret: ""
4056
+ events: events,
4057
+ secret: "",
4058
+ isActive: true
3798
4059
  };
3799
4060
  var handleSubmit = function handleSubmit(values) {
4061
+ var payload = buildPayload({
4062
+ isEditing: editingWebhookId,
4063
+ values: values,
4064
+ initialValues: initialValues
4065
+ });
3800
4066
  editingWebhookId ? updateWebhook({
3801
4067
  id: editingWebhookId,
3802
- payload: values
3803
- }) : createWebhook(_objectSpread(_objectSpread({}, values), {}, {
4068
+ payload: payload
4069
+ }) : createWebhook(_objectSpread(_objectSpread({}, payload), {}, {
3804
4070
  entityId: entityId,
3805
4071
  entityType: entityType
3806
4072
  }));
@@ -3833,8 +4099,11 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3833
4099
  }
3834
4100
  }, function (_ref2) {
3835
4101
  var dirty = _ref2.dirty,
3836
- isSubmitting = _ref2.isSubmitting;
3837
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane.Body, null, /*#__PURE__*/React.createElement("div", {
4102
+ isSubmitting = _ref2.isSubmitting,
4103
+ isValid = _ref2.isValid;
4104
+ return isLoading ? /*#__PURE__*/React.createElement("div", {
4105
+ className: "flex items-center justify-center"
4106
+ }, /*#__PURE__*/React.createElement(Spinner, null)) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane.Body, null, /*#__PURE__*/React.createElement("div", {
3838
4107
  className: "w-full space-y-4"
3839
4108
  }, /*#__PURE__*/React.createElement(Input, {
3840
4109
  required: true,
@@ -3843,6 +4112,15 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3843
4112
  name: "endpoint",
3844
4113
  placeholder: t("webhook.endpointPlaceholder"),
3845
4114
  ref: endpointRef
4115
+ }), !isLoading && /*#__PURE__*/React.createElement(Select, {
4116
+ isMulti: true,
4117
+ required: true,
4118
+ getOptionLabel: prop("label"),
4119
+ getOptionValue: prop("identifier"),
4120
+ label: t("common.event", PLURAL),
4121
+ name: "events",
4122
+ options: events,
4123
+ placeholder: t("webhook.eventPlaceholder")
3846
4124
  }), /*#__PURE__*/React.createElement(Input, {
3847
4125
  "data-cy": "secret-key-input-field",
3848
4126
  name: "secret",
@@ -3861,6 +4139,9 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3861
4139
  })
3862
4140
  }
3863
4141
  })
4142
+ }), /*#__PURE__*/React.createElement(Switch, {
4143
+ label: t("webhook.active"),
4144
+ name: "isActive"
3864
4145
  }))), /*#__PURE__*/React.createElement(Pane.Footer, {
3865
4146
  className: "flex gap-2"
3866
4147
  }, /*#__PURE__*/React.createElement(ActionBlock, {
@@ -3872,7 +4153,7 @@ var AddWebhookPane = function AddWebhookPane(_ref) {
3872
4153
  },
3873
4154
  submitButtonProps: {
3874
4155
  label: t("buttons.saveChanges"),
3875
- disabled: !dirty,
4156
+ disabled: !dirty || !isValid,
3876
4157
  loading: isSubmitting
3877
4158
  }
3878
4159
  })));
@@ -3903,44 +4184,6 @@ var Header = function Header(_ref) {
3903
4184
  };
3904
4185
  var Header$1 = /*#__PURE__*/React.memo(Header);
3905
4186
 
3906
- var Menu = Dropdown.Menu,
3907
- MenuItem = Dropdown.MenuItem;
3908
- var WebhookItem = function WebhookItem(_ref) {
3909
- var webhook = _ref.webhook,
3910
- onDeleteClick = _ref.onDeleteClick,
3911
- onEditClick = _ref.onEditClick,
3912
- deliveriesPath = _ref.deliveriesPath;
3913
- var _useTranslation = useTranslation(),
3914
- t = _useTranslation.t;
3915
- return /*#__PURE__*/React.createElement(Link, {
3916
- className: "neeto-ui-rounded-lg neeto-ui-border-gray-300 flex cursor-pointer items-center justify-between gap-4 border px-4 py-2",
3917
- to: buildUrl(deliveriesPath, {
3918
- webhookId: webhook.id
3919
- })
3920
- }, /*#__PURE__*/React.createElement(Typography, {
3921
- className: "neeto-ui-text-primary-800 break-all",
3922
- component: "span",
3923
- style: "body1"
3924
- }, webhook.endpoint), /*#__PURE__*/React.createElement("div", {
3925
- onClick: function onClick(e) {
3926
- e.preventDefault();
3927
- e.stopPropagation();
3928
- }
3929
- }, /*#__PURE__*/React.createElement(Dropdown, {
3930
- buttonStyle: "text",
3931
- icon: MenuHorizontal
3932
- }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
3933
- onClick: function onClick() {
3934
- return onEditClick(webhook.id);
3935
- }
3936
- }, t("operation.edit")), /*#__PURE__*/React.createElement(MenuItem.Button, {
3937
- onClick: function onClick() {
3938
- return onDeleteClick(webhook.id);
3939
- }
3940
- }, t("operation.delete"))))));
3941
- };
3942
- var WebhookItem$1 = /*#__PURE__*/React.memo(WebhookItem);
3943
-
3944
4187
  var Webhooks = function Webhooks(_ref) {
3945
4188
  var deliveriesPath = _ref.deliveriesPath,
3946
4189
  entityType = _ref.entityType,
@@ -3962,14 +4205,25 @@ var Webhooks = function Webhooks(_ref) {
3962
4205
  _useState8 = _slicedToArray(_useState7, 2),
3963
4206
  isDeleteAlertOpen = _useState8[0],
3964
4207
  setIsDeleteAlertOpen = _useState8[1];
4208
+ var _useState9 = useState(1),
4209
+ _useState10 = _slicedToArray(_useState9, 2),
4210
+ pageNumber = _useState10[0],
4211
+ setPageNumber = _useState10[1];
3965
4212
  var _useTranslation = useTranslation(),
3966
4213
  t = _useTranslation.t;
3967
- var _useFetchWebhooks = useFetchWebhooks(entityId),
4214
+ var _useFetchWebhooks = useFetchWebhooks({
4215
+ entityId: entityId,
4216
+ page: pageNumber,
4217
+ limit: DEFAULT_PAGE_SIZE
4218
+ }),
3968
4219
  isLoading = _useFetchWebhooks.isLoading,
4220
+ isFetching = _useFetchWebhooks.isFetching,
3969
4221
  _useFetchWebhooks$dat = _useFetchWebhooks.data,
3970
4222
  _useFetchWebhooks$dat2 = _useFetchWebhooks$dat === void 0 ? {} : _useFetchWebhooks$dat,
3971
4223
  _useFetchWebhooks$dat3 = _useFetchWebhooks$dat2.webhooks,
3972
- webhooks = _useFetchWebhooks$dat3 === void 0 ? [] : _useFetchWebhooks$dat3;
4224
+ webhooks = _useFetchWebhooks$dat3 === void 0 ? [] : _useFetchWebhooks$dat3,
4225
+ _useFetchWebhooks$dat4 = _useFetchWebhooks$dat2.totalCount,
4226
+ totalCount = _useFetchWebhooks$dat4 === void 0 ? 0 : _useFetchWebhooks$dat4;
3973
4227
  var _useDestroyWebhook = useDestroyWebhook({
3974
4228
  onSuccess: function onSuccess() {
3975
4229
  return setIsDeleteAlertOpen(false);
@@ -3992,28 +4246,33 @@ var Webhooks = function Webhooks(_ref) {
3992
4246
  if (isLoading) {
3993
4247
  return /*#__PURE__*/React.createElement(PageLoader, null);
3994
4248
  }
3995
- return /*#__PURE__*/React.createElement("div", {
3996
- className: "w-full px-6"
3997
- }, /*#__PURE__*/React.createElement("div", {
3998
- className: "neeto-ui-bg-white sticky top-0 z-50 w-full"
3999
- }), /*#__PURE__*/React.createElement(Header$1, {
4249
+ return /*#__PURE__*/React.createElement(Container, {
4250
+ className: "w-full"
4251
+ }, /*#__PURE__*/React.createElement(Header$1, {
4000
4252
  breadcrumbs: breadcrumbs,
4001
4253
  setIsAddWebhookPaneOpen: setIsAddWebhookPaneOpen
4002
- }), /*#__PURE__*/React.createElement("div", {
4003
- className: "webhooks__list space-y-2"
4004
- }, webhooks.map(function (webhook) {
4005
- return /*#__PURE__*/React.createElement(WebhookItem$1, {
4006
- deliveriesPath: deliveriesPath,
4007
- key: webhook.id,
4008
- webhook: webhook,
4009
- onDeleteClick: handleDelete,
4010
- onEditClick: handleEdit
4011
- });
4012
- }), isEmpty(webhooks) && /*#__PURE__*/React.createElement("div", {
4013
- className: "flex h-full items-center justify-center"
4254
+ }), isNotEmpty(webhooks) ? /*#__PURE__*/React.createElement(TableWrapper, {
4255
+ hasPagination: totalCount > DEFAULT_PAGE_SIZE
4256
+ }, /*#__PURE__*/React.createElement(Table, {
4257
+ totalCount: totalCount,
4258
+ fixedHeight: true,
4259
+ currentPageNumber: pageNumber,
4260
+ defaultPageSize: DEFAULT_PAGE_SIZE,
4261
+ handlePageChange: function handlePageChange(page) {
4262
+ return setPageNumber(page);
4263
+ },
4264
+ loading: isFetching,
4265
+ rowData: webhooks,
4266
+ columnData: buildColumns({
4267
+ handleDelete: handleDelete,
4268
+ handleEdit: handleEdit,
4269
+ deliveriesPath: deliveriesPath
4270
+ })
4271
+ })) : /*#__PURE__*/React.createElement("div", {
4272
+ className: "flex h-full w-full items-center justify-center"
4014
4273
  }, /*#__PURE__*/React.createElement(NoData, {
4015
4274
  title: t("webhook.empty")
4016
- }))), /*#__PURE__*/React.createElement(AddWebhookPane, {
4275
+ })), /*#__PURE__*/React.createElement(AddWebhookPane, {
4017
4276
  editingWebhookId: editingWebhookId,
4018
4277
  entityId: entityId,
4019
4278
  entityType: entityType,
@@ -4049,7 +4308,7 @@ var NeetoWebhooks = function NeetoWebhooks(_ref) {
4049
4308
  webhooksPath = _useRouteMatch.path,
4050
4309
  webhooksUrl = _useRouteMatch.url;
4051
4310
  var deliveriesPath = getDeliveriesPath(webhooksUrl);
4052
- return /*#__PURE__*/React.createElement(Switch, null, /*#__PURE__*/React.createElement(Route, {
4311
+ return /*#__PURE__*/React.createElement(Switch$1, null, /*#__PURE__*/React.createElement(Route, {
4053
4312
  exact: true,
4054
4313
  path: webhooksPath,
4055
4314
  component: function component() {