powr-sdk-web 5.6.6 → 5.6.7

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.
@@ -71,7 +71,7 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
71
71
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(file) {
72
72
  var formData, _yield$apiCall, data, ok, _t;
73
73
  return _regenerator().w(function (_context) {
74
- while (1) switch (_context.n) {
74
+ while (1) switch (_context.p = _context.n) {
75
75
  case 0:
76
76
  formData = new FormData();
77
77
  formData.append('file', file);
@@ -110,7 +110,7 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
110
110
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(filesList) {
111
111
  var uploadedFiles, totalFiles, completedFiles, placeholderFiles, _loop, i, updatedFiles, _t2;
112
112
  return _regenerator().w(function (_context3) {
113
- while (1) switch (_context3.n) {
113
+ while (1) switch (_context3.p = _context3.n) {
114
114
  case 0:
115
115
  if (!(!filesList || isUploading)) {
116
116
  _context3.n = 1;
@@ -48,7 +48,7 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
48
48
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
49
49
  var _yield$apiCall, data, ok, _t;
50
50
  return _regenerator().w(function (_context) {
51
- while (1) switch (_context.n) {
51
+ while (1) switch (_context.p = _context.n) {
52
52
  case 0:
53
53
  _context.p = 0;
54
54
  setLoading(true);
@@ -61,7 +61,7 @@ var fireAsync = /*#__PURE__*/function () {
61
61
  var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(method, params) {
62
62
  var callable, result, _t;
63
63
  return _regenerator().w(function (_context) {
64
- while (1) switch (_context.n) {
64
+ while (1) switch (_context.p = _context.n) {
65
65
  case 0:
66
66
  callable = (0, _functions.httpsCallable)(functions, method);
67
67
  _context.p = 1;
@@ -58,7 +58,7 @@ var PowrWaitListAdmin = function PowrWaitListAdmin(_ref) {
58
58
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
59
59
  var _yield$apiCall, data, ok, _t;
60
60
  return _regenerator().w(function (_context) {
61
- while (1) switch (_context.n) {
61
+ while (1) switch (_context.p = _context.n) {
62
62
  case 0:
63
63
  _context.p = 0;
64
64
  setLoading(true);
@@ -120,7 +120,7 @@ var PowrWaitListAdmin = function PowrWaitListAdmin(_ref) {
120
120
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
121
121
  var _yield$apiCall2, result, ok, _t2;
122
122
  return _regenerator().w(function (_context2) {
123
- while (1) switch (_context2.n) {
123
+ while (1) switch (_context2.p = _context2.n) {
124
124
  case 0:
125
125
  if (formData.email) {
126
126
  _context2.n = 1;
@@ -45,7 +45,7 @@ var PowrWaitList = function PowrWaitList(_ref) {
45
45
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
46
46
  var _yield$apiCall, data, ok, _t;
47
47
  return _regenerator().w(function (_context) {
48
- while (1) switch (_context.n) {
48
+ while (1) switch (_context.p = _context.n) {
49
49
  case 0:
50
50
  e.preventDefault();
51
51
  setLoading(true);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "5.6.6",
3
+ "version": "5.6.7",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "build": "babel src -d dist --copy-files",
@@ -1,551 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _lucideReact = require("lucide-react");
10
- var _auth = require("../utils/auth");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t5 in e) "default" !== _t5 && {}.hasOwnProperty.call(e, _t5) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t5)) && (i.get || i.set) ? o(f, _t5, i) : f[_t5] = e[_t5]); return f; })(e, t); }
13
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
16
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
17
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
- function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
19
- function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
20
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
21
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
22
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
23
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
24
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
25
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
26
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
27
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
28
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
29
- var BASE = '/activity-subscriptions';
30
- function parseJsonField(str, label, onError) {
31
- var t = (str || '').trim();
32
- if (!t) return {};
33
- try {
34
- var o = JSON.parse(t);
35
- if (_typeof(o) !== 'object' || Array.isArray(o)) {
36
- onError && onError("".concat(label, " must be a JSON object"));
37
- return null;
38
- }
39
- return o;
40
- } catch (_unused) {
41
- onError && onError("Invalid JSON in ".concat(label));
42
- return null;
43
- }
44
- }
45
- var PowrBaseActivitySubscriptionsAdmin = function PowrBaseActivitySubscriptionsAdmin(_ref) {
46
- var apiUrl = _ref.apiUrl,
47
- projectId = _ref.projectId,
48
- _ref$theme = _ref.theme,
49
- theme = _ref$theme === void 0 ? 'blue' : _ref$theme,
50
- _ref$onError = _ref.onError,
51
- onError = _ref$onError === void 0 ? function (m) {
52
- return alert(m);
53
- } : _ref$onError,
54
- _ref$onSuccess = _ref.onSuccess,
55
- onSuccess = _ref$onSuccess === void 0 ? function (m) {
56
- return alert(m);
57
- } : _ref$onSuccess;
58
- var _useState = (0, _react.useState)([]),
59
- _useState2 = _slicedToArray(_useState, 2),
60
- rows = _useState2[0],
61
- setRows = _useState2[1];
62
- var _useState3 = (0, _react.useState)(true),
63
- _useState4 = _slicedToArray(_useState3, 2),
64
- loading = _useState4[0],
65
- setLoading = _useState4[1];
66
- var _useState5 = (0, _react.useState)(false),
67
- _useState6 = _slicedToArray(_useState5, 2),
68
- modalOpen = _useState6[0],
69
- setModalOpen = _useState6[1];
70
- var _useState7 = (0, _react.useState)(null),
71
- _useState8 = _slicedToArray(_useState7, 2),
72
- editing = _useState8[0],
73
- setEditing = _useState8[1];
74
- var _useState9 = (0, _react.useState)(null),
75
- _useState0 = _slicedToArray(_useState9, 2),
76
- testingId = _useState0[0],
77
- setTestingId = _useState0[1];
78
- var _useState1 = (0, _react.useState)({
79
- name: '',
80
- url: '',
81
- enabled: true,
82
- secret: '',
83
- clearSecret: false,
84
- filtersText: '{}',
85
- configText: '{}'
86
- }),
87
- _useState10 = _slicedToArray(_useState1, 2),
88
- form = _useState10[0],
89
- setForm = _useState10[1];
90
- var isDark = theme === 'dark';
91
- var card = isDark ? 'bg-gray-800 border-gray-600 text-gray-100' : 'bg-white border-gray-200 text-gray-900';
92
- var muted = isDark ? 'text-gray-400' : 'text-gray-500';
93
- var load = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
94
- var _yield$apiCall, data, ok, _t;
95
- return _regenerator().w(function (_context) {
96
- while (1) switch (_context.n) {
97
- case 0:
98
- setLoading(true);
99
- _context.p = 1;
100
- _context.n = 2;
101
- return (0, _auth.apiCall)(apiUrl, BASE, projectId);
102
- case 2:
103
- _yield$apiCall = _context.v;
104
- data = _yield$apiCall.data;
105
- ok = _yield$apiCall.ok;
106
- if (ok && data.success) {
107
- setRows(data.data || []);
108
- } else {
109
- onError((data === null || data === void 0 ? void 0 : data.message) || 'Failed to load activity subscriptions');
110
- }
111
- _context.n = 4;
112
- break;
113
- case 3:
114
- _context.p = 3;
115
- _t = _context.v;
116
- console.error(_t);
117
- onError('Failed to load activity subscriptions');
118
- case 4:
119
- _context.p = 4;
120
- setLoading(false);
121
- return _context.f(4);
122
- case 5:
123
- return _context.a(2);
124
- }
125
- }, _callee, null, [[1, 3, 4, 5]]);
126
- })), [apiUrl, projectId, onError]);
127
- (0, _react.useEffect)(function () {
128
- load();
129
- }, [load]);
130
- var openCreate = function openCreate() {
131
- setEditing(null);
132
- setForm({
133
- name: '',
134
- url: '',
135
- enabled: true,
136
- secret: '',
137
- clearSecret: false,
138
- filtersText: '{}',
139
- configText: '{}'
140
- });
141
- setModalOpen(true);
142
- };
143
- var openEdit = function openEdit(row) {
144
- setEditing(row);
145
- setForm({
146
- name: row.name || '',
147
- url: row.url || '',
148
- enabled: row.enabled !== false,
149
- secret: '',
150
- clearSecret: false,
151
- filtersText: JSON.stringify(row.filters || {}, null, 2),
152
- configText: JSON.stringify(row.config || {}, null, 2)
153
- });
154
- setModalOpen(true);
155
- };
156
- var submit = /*#__PURE__*/function () {
157
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(e) {
158
- var filters, config, body, _yield$apiCall2, data, ok, _body, _yield$apiCall3, _data, _ok, _t2;
159
- return _regenerator().w(function (_context2) {
160
- while (1) switch (_context2.n) {
161
- case 0:
162
- e.preventDefault();
163
- filters = parseJsonField(form.filtersText, 'Filters', onError);
164
- config = parseJsonField(form.configText, 'Config', onError);
165
- if (!(filters === null || config === null)) {
166
- _context2.n = 1;
167
- break;
168
- }
169
- return _context2.a(2);
170
- case 1:
171
- _context2.p = 1;
172
- if (!editing) {
173
- _context2.n = 3;
174
- break;
175
- }
176
- body = {
177
- url: form.url.trim(),
178
- name: form.name.trim(),
179
- enabled: form.enabled,
180
- filters: filters,
181
- config: config
182
- };
183
- if (form.clearSecret) body.secret = '';else if (form.secret.trim()) body.secret = form.secret.trim();
184
- _context2.n = 2;
185
- return (0, _auth.apiCall)(apiUrl, "".concat(BASE, "/").concat(editing._id), projectId, {
186
- method: 'PATCH',
187
- body: body
188
- });
189
- case 2:
190
- _yield$apiCall2 = _context2.v;
191
- data = _yield$apiCall2.data;
192
- ok = _yield$apiCall2.ok;
193
- if (ok && data.success) {
194
- onSuccess('Subscription updated');
195
- setModalOpen(false);
196
- load();
197
- } else {
198
- onError((data === null || data === void 0 ? void 0 : data.message) || 'Update failed');
199
- }
200
- _context2.n = 5;
201
- break;
202
- case 3:
203
- _body = {
204
- url: form.url.trim(),
205
- name: form.name.trim(),
206
- enabled: form.enabled,
207
- filters: filters,
208
- config: config
209
- };
210
- if (form.secret.trim()) _body.secret = form.secret.trim();
211
- _context2.n = 4;
212
- return (0, _auth.apiCall)(apiUrl, BASE, projectId, {
213
- method: 'POST',
214
- body: _body
215
- });
216
- case 4:
217
- _yield$apiCall3 = _context2.v;
218
- _data = _yield$apiCall3.data;
219
- _ok = _yield$apiCall3.ok;
220
- if (_ok && _data.success) {
221
- onSuccess('Subscription created');
222
- setModalOpen(false);
223
- load();
224
- } else {
225
- onError((_data === null || _data === void 0 ? void 0 : _data.message) || 'Create failed');
226
- }
227
- case 5:
228
- _context2.n = 7;
229
- break;
230
- case 6:
231
- _context2.p = 6;
232
- _t2 = _context2.v;
233
- console.error(_t2);
234
- onError('Request failed');
235
- case 7:
236
- return _context2.a(2);
237
- }
238
- }, _callee2, null, [[1, 6]]);
239
- }));
240
- return function submit(_x) {
241
- return _ref3.apply(this, arguments);
242
- };
243
- }();
244
- var remove = /*#__PURE__*/function () {
245
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(id) {
246
- var _yield$apiCall4, data, ok, _t3;
247
- return _regenerator().w(function (_context3) {
248
- while (1) switch (_context3.n) {
249
- case 0:
250
- if (window.confirm('Delete this webhook subscription?')) {
251
- _context3.n = 1;
252
- break;
253
- }
254
- return _context3.a(2);
255
- case 1:
256
- _context3.p = 1;
257
- _context3.n = 2;
258
- return (0, _auth.apiCall)(apiUrl, "".concat(BASE, "/").concat(id), projectId, {
259
- method: 'DELETE'
260
- });
261
- case 2:
262
- _yield$apiCall4 = _context3.v;
263
- data = _yield$apiCall4.data;
264
- ok = _yield$apiCall4.ok;
265
- if (ok && data.success) {
266
- onSuccess('Deleted');
267
- load();
268
- } else {
269
- onError((data === null || data === void 0 ? void 0 : data.message) || 'Delete failed');
270
- }
271
- _context3.n = 4;
272
- break;
273
- case 3:
274
- _context3.p = 3;
275
- _t3 = _context3.v;
276
- onError('Delete failed');
277
- case 4:
278
- return _context3.a(2);
279
- }
280
- }, _callee3, null, [[1, 3]]);
281
- }));
282
- return function remove(_x2) {
283
- return _ref4.apply(this, arguments);
284
- };
285
- }();
286
- var testWebhook = /*#__PURE__*/function () {
287
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(id) {
288
- var _yield$apiCall5, data, ok, msg, extra, _t4;
289
- return _regenerator().w(function (_context4) {
290
- while (1) switch (_context4.n) {
291
- case 0:
292
- setTestingId(id);
293
- _context4.p = 1;
294
- _context4.n = 2;
295
- return (0, _auth.apiCall)(apiUrl, "".concat(BASE, "/").concat(id, "/test"), projectId, {
296
- method: 'POST',
297
- body: {}
298
- });
299
- case 2:
300
- _yield$apiCall5 = _context4.v;
301
- data = _yield$apiCall5.data;
302
- ok = _yield$apiCall5.ok;
303
- if (ok && data.success) {
304
- msg = data.delivered ? "Webhook OK \u2014 HTTP ".concat(data.statusCode) : "Webhook responded HTTP ".concat(data.statusCode, " (not 2xx)");
305
- extra = data.bodyPreview ? "\n\nResponse preview:\n".concat(data.bodyPreview) : '';
306
- onSuccess(msg + extra);
307
- } else {
308
- onError((data === null || data === void 0 ? void 0 : data.message) || 'Test failed');
309
- }
310
- _context4.n = 4;
311
- break;
312
- case 3:
313
- _context4.p = 3;
314
- _t4 = _context4.v;
315
- onError(_t4.message || 'Test failed');
316
- case 4:
317
- _context4.p = 4;
318
- setTestingId(null);
319
- return _context4.f(4);
320
- case 5:
321
- return _context4.a(2);
322
- }
323
- }, _callee4, null, [[1, 3, 4, 5]]);
324
- }));
325
- return function testWebhook(_x3) {
326
- return _ref5.apply(this, arguments);
327
- };
328
- }();
329
- if (loading) {
330
- return /*#__PURE__*/_react["default"].createElement("div", {
331
- className: "p-8 text-center ".concat(muted)
332
- }, "Loading activity webhooks\u2026");
333
- }
334
- return /*#__PURE__*/_react["default"].createElement("div", {
335
- className: "rounded-lg border shadow-sm ".concat(card)
336
- }, /*#__PURE__*/_react["default"].createElement("div", {
337
- className: "px-6 py-4 border-b flex flex-wrap justify-between gap-4 items-center ".concat(isDark ? 'border-gray-600' : 'border-gray-200')
338
- }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h3", {
339
- className: "text-lg font-semibold flex items-center gap-2"
340
- }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Webhook, {
341
- className: "w-5 h-5"
342
- }), "Activity webhooks"), /*#__PURE__*/_react["default"].createElement("p", {
343
- className: "text-sm mt-1 ".concat(muted)
344
- }, "POST JSON to your URL when Powr activities fire. Same UI on every app \u2014 point ", /*#__PURE__*/_react["default"].createElement("code", {
345
- className: "text-xs"
346
- }, "apiUrl"), " +", ' ', /*#__PURE__*/_react["default"].createElement("code", {
347
- className: "text-xs"
348
- }, "projectId"), " at your Powr API.")), /*#__PURE__*/_react["default"].createElement("button", {
349
- type: "button",
350
- onClick: openCreate,
351
- className: "inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium text-white bg-blue-600 hover:bg-blue-700"
352
- }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Plus, {
353
- size: 18
354
- }), "Add webhook")), /*#__PURE__*/_react["default"].createElement("div", {
355
- className: "overflow-x-auto"
356
- }, /*#__PURE__*/_react["default"].createElement("table", {
357
- className: "min-w-full text-sm"
358
- }, /*#__PURE__*/_react["default"].createElement("thead", {
359
- className: isDark ? 'bg-gray-900/50' : 'bg-gray-50'
360
- }, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", {
361
- className: "px-4 py-3 text-left font-medium"
362
- }, "Name"), /*#__PURE__*/_react["default"].createElement("th", {
363
- className: "px-4 py-3 text-left font-medium"
364
- }, "URL"), /*#__PURE__*/_react["default"].createElement("th", {
365
- className: "px-4 py-3 text-left font-medium"
366
- }, "Status"), /*#__PURE__*/_react["default"].createElement("th", {
367
- className: "px-4 py-3 text-left font-medium"
368
- }, "Secret"), /*#__PURE__*/_react["default"].createElement("th", {
369
- className: "px-4 py-3 text-right font-medium"
370
- }, "Actions"))), /*#__PURE__*/_react["default"].createElement("tbody", null, rows.length === 0 ? /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", {
371
- colSpan: 5,
372
- className: "px-4 py-8 text-center ".concat(muted)
373
- }, "No subscriptions yet. Add a webhook to receive activity payloads.")) : rows.map(function (row) {
374
- return /*#__PURE__*/_react["default"].createElement("tr", {
375
- key: row._id,
376
- className: isDark ? 'border-t border-gray-600' : 'border-t border-gray-100'
377
- }, /*#__PURE__*/_react["default"].createElement("td", {
378
- className: "px-4 py-3 font-medium"
379
- }, row.name || '—'), /*#__PURE__*/_react["default"].createElement("td", {
380
- className: "px-4 py-3 max-w-xs truncate font-mono text-xs"
381
- }, row.url), /*#__PURE__*/_react["default"].createElement("td", {
382
- className: "px-4 py-3"
383
- }, /*#__PURE__*/_react["default"].createElement("span", {
384
- className: row.enabled ? 'text-green-600 dark:text-green-400' : 'text-amber-600'
385
- }, row.enabled ? 'Enabled' : 'Disabled')), /*#__PURE__*/_react["default"].createElement("td", {
386
- className: "px-4 py-3"
387
- }, row.hasSecret ? /*#__PURE__*/_react["default"].createElement(_lucideReact.ShieldCheck, {
388
- className: "w-4 h-4 text-green-600 inline",
389
- title: "HMAC signing enabled"
390
- }) : /*#__PURE__*/_react["default"].createElement(_lucideReact.ShieldOff, {
391
- className: "w-4 h-4 inline ".concat(muted),
392
- title: "No secret"
393
- })), /*#__PURE__*/_react["default"].createElement("td", {
394
- className: "px-4 py-3 text-right whitespace-nowrap"
395
- }, /*#__PURE__*/_react["default"].createElement("button", {
396
- type: "button",
397
- onClick: function onClick() {
398
- return testWebhook(row._id);
399
- },
400
- disabled: testingId === row._id || !row.enabled,
401
- className: "text-blue-600 hover:text-blue-800 mr-3 disabled:opacity-40",
402
- title: "Send sample payload"
403
- }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Send, {
404
- size: 16,
405
- className: "inline"
406
- })), /*#__PURE__*/_react["default"].createElement("button", {
407
- type: "button",
408
- onClick: function onClick() {
409
- return openEdit(row);
410
- },
411
- className: "text-amber-600 hover:text-amber-800 mr-3"
412
- }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Edit, {
413
- size: 16,
414
- className: "inline"
415
- })), /*#__PURE__*/_react["default"].createElement("button", {
416
- type: "button",
417
- onClick: function onClick() {
418
- return remove(row._id);
419
- },
420
- className: "text-red-600 hover:text-red-800"
421
- }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Trash2, {
422
- size: 16,
423
- className: "inline"
424
- }))));
425
- })))), modalOpen && /*#__PURE__*/_react["default"].createElement("div", {
426
- className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50"
427
- }, /*#__PURE__*/_react["default"].createElement("div", {
428
- className: "w-full max-w-lg rounded-xl shadow-xl max-h-[90vh] overflow-y-auto ".concat(isDark ? 'bg-gray-800 text-gray-100' : 'bg-white text-gray-900')
429
- }, /*#__PURE__*/_react["default"].createElement("form", {
430
- onSubmit: submit,
431
- className: "p-6 space-y-4"
432
- }, /*#__PURE__*/_react["default"].createElement("h4", {
433
- className: "text-lg font-semibold"
434
- }, editing ? 'Edit webhook' : 'New webhook'), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
435
- className: "block text-sm font-medium mb-1"
436
- }, "Name"), /*#__PURE__*/_react["default"].createElement("input", {
437
- className: "w-full border rounded-md px-3 py-2 text-sm ".concat(isDark ? 'bg-gray-900 border-gray-600' : 'bg-white border-gray-300'),
438
- value: form.name,
439
- onChange: function onChange(e) {
440
- return setForm(function (f) {
441
- return _objectSpread(_objectSpread({}, f), {}, {
442
- name: e.target.value
443
- });
444
- });
445
- },
446
- placeholder: "e.g. Spriny prod"
447
- })), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
448
- className: "block text-sm font-medium mb-1"
449
- }, "Webhook URL *"), /*#__PURE__*/_react["default"].createElement("input", {
450
- required: true,
451
- className: "w-full border rounded-md px-3 py-2 text-sm font-mono ".concat(isDark ? 'bg-gray-900 border-gray-600' : 'bg-white border-gray-300'),
452
- value: form.url,
453
- onChange: function onChange(e) {
454
- return setForm(function (f) {
455
- return _objectSpread(_objectSpread({}, f), {}, {
456
- url: e.target.value
457
- });
458
- });
459
- },
460
- placeholder: "https://api.example.com/webhooks/powr"
461
- })), /*#__PURE__*/_react["default"].createElement("div", {
462
- className: "flex items-center gap-2"
463
- }, /*#__PURE__*/_react["default"].createElement("input", {
464
- id: "sub-enabled",
465
- type: "checkbox",
466
- checked: form.enabled,
467
- onChange: function onChange(e) {
468
- return setForm(function (f) {
469
- return _objectSpread(_objectSpread({}, f), {}, {
470
- enabled: e.target.checked
471
- });
472
- });
473
- }
474
- }), /*#__PURE__*/_react["default"].createElement("label", {
475
- htmlFor: "sub-enabled",
476
- className: "text-sm"
477
- }, "Enabled")), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
478
- className: "block text-sm font-medium mb-1"
479
- }, editing ? 'New secret (optional; leave empty to keep current)' : 'Secret (optional, HMAC SHA256 → X-Powr-Signature)'), /*#__PURE__*/_react["default"].createElement("input", {
480
- type: "password",
481
- autoComplete: "new-password",
482
- className: "w-full border rounded-md px-3 py-2 text-sm ".concat(isDark ? 'bg-gray-900 border-gray-600' : 'bg-white border-gray-300'),
483
- value: form.secret,
484
- onChange: function onChange(e) {
485
- return setForm(function (f) {
486
- return _objectSpread(_objectSpread({}, f), {}, {
487
- secret: e.target.value
488
- });
489
- });
490
- },
491
- placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022"
492
- }), editing && /*#__PURE__*/_react["default"].createElement("label", {
493
- className: "flex items-center gap-2 mt-2 text-sm"
494
- }, /*#__PURE__*/_react["default"].createElement("input", {
495
- type: "checkbox",
496
- checked: form.clearSecret,
497
- onChange: function onChange(e) {
498
- return setForm(function (f) {
499
- return _objectSpread(_objectSpread({}, f), {}, {
500
- clearSecret: e.target.checked,
501
- secret: e.target.checked ? '' : f.secret
502
- });
503
- });
504
- }
505
- }), "Clear stored secret")), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
506
- className: "block text-sm font-medium mb-1"
507
- }, "Filters (JSON object)"), /*#__PURE__*/_react["default"].createElement("textarea", {
508
- rows: 4,
509
- className: "w-full border rounded-md px-3 py-2 text-xs font-mono ".concat(isDark ? 'bg-gray-900 border-gray-600' : 'bg-white border-gray-300'),
510
- value: form.filtersText,
511
- onChange: function onChange(e) {
512
- return setForm(function (f) {
513
- return _objectSpread(_objectSpread({}, f), {}, {
514
- filtersText: e.target.value
515
- });
516
- });
517
- }
518
- })), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
519
- className: "block text-sm font-medium mb-1"
520
- }, "Config (JSON object)"), /*#__PURE__*/_react["default"].createElement("textarea", {
521
- rows: 3,
522
- className: "w-full border rounded-md px-3 py-2 text-xs font-mono ".concat(isDark ? 'bg-gray-900 border-gray-600' : 'bg-white border-gray-300'),
523
- value: form.configText,
524
- onChange: function onChange(e) {
525
- return setForm(function (f) {
526
- return _objectSpread(_objectSpread({}, f), {}, {
527
- configText: e.target.value
528
- });
529
- });
530
- }
531
- })), /*#__PURE__*/_react["default"].createElement("div", {
532
- className: "flex justify-end gap-2 pt-2"
533
- }, /*#__PURE__*/_react["default"].createElement("button", {
534
- type: "button",
535
- onClick: function onClick() {
536
- return setModalOpen(false);
537
- },
538
- className: "px-4 py-2 rounded-md text-sm ".concat(isDark ? 'bg-gray-700 hover:bg-gray-600' : 'bg-gray-100 hover:bg-gray-200')
539
- }, "Cancel"), /*#__PURE__*/_react["default"].createElement("button", {
540
- type: "submit",
541
- className: "px-4 py-2 rounded-md text-sm text-white bg-blue-600 hover:bg-blue-700"
542
- }, editing ? 'Save' : 'Create'))))));
543
- };
544
- PowrBaseActivitySubscriptionsAdmin.propTypes = {
545
- apiUrl: _propTypes["default"].string,
546
- projectId: _propTypes["default"].string,
547
- theme: _propTypes["default"].oneOf(['blue', 'dark']),
548
- onError: _propTypes["default"].func,
549
- onSuccess: _propTypes["default"].func
550
- };
551
- var _default = exports["default"] = PowrBaseActivitySubscriptionsAdmin;