powr-sdk-web 6.10.0 → 6.10.2

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.
@@ -36,6 +36,11 @@ var CORE_SECTION_LOADERS = exports.CORE_SECTION_LOADERS = {
36
36
  return _interopRequireWildcard(require('../forms/admin'));
37
37
  });
38
38
  },
39
+ feedbacks: function feedbacks() {
40
+ return Promise.resolve().then(function () {
41
+ return _interopRequireWildcard(require('../feedback/admin'));
42
+ });
43
+ },
39
44
  waitlist: function waitlist() {
40
45
  return Promise.resolve().then(function () {
41
46
  return _interopRequireWildcard(require('../waitlists/admin'));
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+
3
+ 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); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = PowrFeedbackAdmin;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _auth = require("../utils/auth");
10
+ var _config = require("../config");
11
+ var _session = require("../session");
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 _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
13
+ 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 }; })(); }
14
+ 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); }
15
+ 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); }
16
+ 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); }); }; }
17
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
18
+ 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."); }
19
+ 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; } }
20
+ 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; }
21
+ 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; } }
22
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
23
+ function when(value) {
24
+ var date = new Date(value);
25
+ if (Number.isNaN(date.getTime())) return "";
26
+ return date.toLocaleString();
27
+ }
28
+ function PowrFeedbackAdmin(_ref) {
29
+ var projectId = _ref.projectId,
30
+ apiUrl = _ref.apiUrl;
31
+ var session = (0, _session.usePowrSession)();
32
+ var _useState = (0, _react.useState)([]),
33
+ _useState2 = _slicedToArray(_useState, 2),
34
+ rows = _useState2[0],
35
+ setRows = _useState2[1];
36
+ var _useState3 = (0, _react.useState)(true),
37
+ _useState4 = _slicedToArray(_useState3, 2),
38
+ loading = _useState4[0],
39
+ setLoading = _useState4[1];
40
+ var _useState5 = (0, _react.useState)(""),
41
+ _useState6 = _slicedToArray(_useState5, 2),
42
+ error = _useState6[0],
43
+ setError = _useState6[1];
44
+ var _useState7 = (0, _react.useState)(""),
45
+ _useState8 = _slicedToArray(_useState7, 2),
46
+ busy = _useState8[0],
47
+ setBusy = _useState8[1];
48
+ var load = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
49
+ var host, headers, _yield$apiCall, data, ok;
50
+ return _regenerator().w(function (_context) {
51
+ while (1) switch (_context.n) {
52
+ case 0:
53
+ setLoading(true);
54
+ setError("");
55
+ host = apiUrl || _config.DEFAULT_POWR_API_URL;
56
+ headers = session !== null && session !== void 0 && session.token ? {
57
+ Authorization: "Bearer ".concat(session.token)
58
+ } : undefined;
59
+ _context.n = 1;
60
+ return (0, _auth.apiCall)(host, "/feedback", projectId, {
61
+ headers: headers
62
+ });
63
+ case 1:
64
+ _yield$apiCall = _context.v;
65
+ data = _yield$apiCall.data;
66
+ ok = _yield$apiCall.ok;
67
+ if (!ok || !(data !== null && data !== void 0 && data.success)) {
68
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Failed to load feedback.");
69
+ setRows([]);
70
+ } else {
71
+ setRows(Array.isArray(data.data) ? data.data : []);
72
+ }
73
+ setLoading(false);
74
+ case 2:
75
+ return _context.a(2);
76
+ }
77
+ }, _callee);
78
+ })), [apiUrl, projectId, session === null || session === void 0 ? void 0 : session.token]);
79
+ (0, _react.useEffect)(function () {
80
+ load()["catch"](function () {
81
+ setError("Failed to load feedback.");
82
+ setLoading(false);
83
+ });
84
+ }, [load]);
85
+ function markHandled(_x) {
86
+ return _markHandled.apply(this, arguments);
87
+ }
88
+ function _markHandled() {
89
+ _markHandled = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(id) {
90
+ var host, headers, _yield$apiCall2, data, ok;
91
+ return _regenerator().w(function (_context2) {
92
+ while (1) switch (_context2.p = _context2.n) {
93
+ case 0:
94
+ setBusy(id);
95
+ _context2.p = 1;
96
+ host = apiUrl || _config.DEFAULT_POWR_API_URL;
97
+ headers = session !== null && session !== void 0 && session.token ? {
98
+ Authorization: "Bearer ".concat(session.token)
99
+ } : undefined;
100
+ _context2.n = 2;
101
+ return (0, _auth.apiCall)(host, "/feedback/".concat(id), projectId, {
102
+ method: "PATCH",
103
+ headers: headers,
104
+ body: {
105
+ status: "handled"
106
+ }
107
+ });
108
+ case 2:
109
+ _yield$apiCall2 = _context2.v;
110
+ data = _yield$apiCall2.data;
111
+ ok = _yield$apiCall2.ok;
112
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
113
+ _context2.n = 3;
114
+ break;
115
+ }
116
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not update.");
117
+ return _context2.a(2);
118
+ case 3:
119
+ _context2.n = 4;
120
+ return load();
121
+ case 4:
122
+ _context2.p = 4;
123
+ setBusy("");
124
+ return _context2.f(4);
125
+ case 5:
126
+ return _context2.a(2);
127
+ }
128
+ }, _callee2, null, [[1,, 4, 5]]);
129
+ }));
130
+ return _markHandled.apply(this, arguments);
131
+ }
132
+ if (loading) return /*#__PURE__*/_react["default"].createElement("p", null, "Loading feedback\u2026");
133
+ if (error && !rows.length) return /*#__PURE__*/_react["default"].createElement("p", null, error);
134
+ if (!rows.length) return /*#__PURE__*/_react["default"].createElement("p", null, "No feedback yet.");
135
+ return /*#__PURE__*/_react["default"].createElement("div", null, error ? /*#__PURE__*/_react["default"].createElement("p", null, error) : null, /*#__PURE__*/_react["default"].createElement("table", {
136
+ style: {
137
+ width: "100%",
138
+ borderCollapse: "collapse",
139
+ fontSize: 14
140
+ }
141
+ }, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, ["When", "Who", "Kind", "Note", ""].map(function (label) {
142
+ return /*#__PURE__*/_react["default"].createElement("th", {
143
+ key: label || "action",
144
+ style: {
145
+ textAlign: "left",
146
+ padding: "8px 6px",
147
+ borderBottom: "1px solid #e5e7eb"
148
+ }
149
+ }, label);
150
+ }))), /*#__PURE__*/_react["default"].createElement("tbody", null, rows.map(function (row) {
151
+ return /*#__PURE__*/_react["default"].createElement("tr", {
152
+ key: row._id
153
+ }, /*#__PURE__*/_react["default"].createElement("td", {
154
+ style: {
155
+ padding: "8px 6px",
156
+ borderBottom: "1px solid #f3f4f6",
157
+ whiteSpace: "nowrap"
158
+ }
159
+ }, when(row.createdAt)), /*#__PURE__*/_react["default"].createElement("td", {
160
+ style: {
161
+ padding: "8px 6px",
162
+ borderBottom: "1px solid #f3f4f6"
163
+ }
164
+ }, row.createdByName || "—"), /*#__PURE__*/_react["default"].createElement("td", {
165
+ style: {
166
+ padding: "8px 6px",
167
+ borderBottom: "1px solid #f3f4f6"
168
+ }
169
+ }, row.kind === "other" ? "Domain" : "Tech", " \xB7 ", row.status), /*#__PURE__*/_react["default"].createElement("td", {
170
+ style: {
171
+ padding: "8px 6px",
172
+ borderBottom: "1px solid #f3f4f6"
173
+ }
174
+ }, /*#__PURE__*/_react["default"].createElement("div", {
175
+ style: {
176
+ fontWeight: 600
177
+ }
178
+ }, row.title), row.body ? /*#__PURE__*/_react["default"].createElement("div", {
179
+ style: {
180
+ color: "#4b5563",
181
+ whiteSpace: "pre-wrap"
182
+ }
183
+ }, row.body) : null), /*#__PURE__*/_react["default"].createElement("td", {
184
+ style: {
185
+ padding: "8px 6px",
186
+ borderBottom: "1px solid #f3f4f6"
187
+ }
188
+ }, row.status === "open" ? /*#__PURE__*/_react["default"].createElement("button", {
189
+ type: "button",
190
+ disabled: busy === row._id,
191
+ onClick: function onClick() {
192
+ return markHandled(row._id);
193
+ }
194
+ }, "Mark handled") : null));
195
+ }))));
196
+ }
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+
3
+ 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); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = PowrBaseFeedback;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _auth = require("../utils/auth");
10
+ var _config = require("../config");
11
+ 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 _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
12
+ 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; }
13
+ 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; }
14
+ 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; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16
+ 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); }
17
+ 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 }; })(); }
18
+ 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); }
19
+ 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); }
20
+ 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); }); }; }
21
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
22
+ 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."); }
23
+ 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; } }
24
+ 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; }
25
+ 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; } }
26
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
27
+ var fieldStyle = {
28
+ width: "100%",
29
+ padding: "10px 12px",
30
+ border: "1px solid #d1d5db",
31
+ borderRadius: 6,
32
+ fontSize: 15,
33
+ boxSizing: "border-box"
34
+ };
35
+ function PowrBaseFeedback(_ref) {
36
+ var projectId = _ref.projectId,
37
+ apiUrl = _ref.apiUrl,
38
+ _ref$showTitle = _ref.showTitle,
39
+ showTitle = _ref$showTitle === void 0 ? true : _ref$showTitle;
40
+ var _useState = (0, _react.useState)(""),
41
+ _useState2 = _slicedToArray(_useState, 2),
42
+ title = _useState2[0],
43
+ setTitle = _useState2[1];
44
+ var _useState3 = (0, _react.useState)(""),
45
+ _useState4 = _slicedToArray(_useState3, 2),
46
+ body = _useState4[0],
47
+ setBody = _useState4[1];
48
+ var _useState5 = (0, _react.useState)("app"),
49
+ _useState6 = _slicedToArray(_useState5, 2),
50
+ kind = _useState6[0],
51
+ setKind = _useState6[1];
52
+ var _useState7 = (0, _react.useState)([]),
53
+ _useState8 = _slicedToArray(_useState7, 2),
54
+ rows = _useState8[0],
55
+ setRows = _useState8[1];
56
+ var _useState9 = (0, _react.useState)(false),
57
+ _useState0 = _slicedToArray(_useState9, 2),
58
+ saving = _useState0[0],
59
+ setSaving = _useState0[1];
60
+ var _useState1 = (0, _react.useState)(""),
61
+ _useState10 = _slicedToArray(_useState1, 2),
62
+ error = _useState10[0],
63
+ setError = _useState10[1];
64
+ var _useState11 = (0, _react.useState)(""),
65
+ _useState12 = _slicedToArray(_useState11, 2),
66
+ sent = _useState12[0],
67
+ setSent = _useState12[1];
68
+ var load = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
69
+ var host, _yield$apiCall, data, ok;
70
+ return _regenerator().w(function (_context) {
71
+ while (1) switch (_context.n) {
72
+ case 0:
73
+ host = apiUrl || _config.DEFAULT_POWR_API_URL;
74
+ _context.n = 1;
75
+ return (0, _auth.apiCall)(host, "/feedback/mine", projectId);
76
+ case 1:
77
+ _yield$apiCall = _context.v;
78
+ data = _yield$apiCall.data;
79
+ ok = _yield$apiCall.ok;
80
+ if (ok && data !== null && data !== void 0 && data.success) setRows(Array.isArray(data.data) ? data.data : []);
81
+ case 2:
82
+ return _context.a(2);
83
+ }
84
+ }, _callee);
85
+ })), [apiUrl, projectId]);
86
+ (0, _react.useEffect)(function () {
87
+ load()["catch"](function () {});
88
+ }, [load]);
89
+ function submit(_x) {
90
+ return _submit.apply(this, arguments);
91
+ }
92
+ function _submit() {
93
+ _submit = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(event) {
94
+ var host, _yield$apiCall2, data, ok, _t;
95
+ return _regenerator().w(function (_context2) {
96
+ while (1) switch (_context2.p = _context2.n) {
97
+ case 0:
98
+ event.preventDefault();
99
+ setSaving(true);
100
+ setError("");
101
+ setSent("");
102
+ _context2.p = 1;
103
+ host = apiUrl || _config.DEFAULT_POWR_API_URL;
104
+ _context2.n = 2;
105
+ return (0, _auth.apiCall)(host, "/feedback", projectId, {
106
+ method: "POST",
107
+ body: {
108
+ title: title,
109
+ body: body,
110
+ kind: kind
111
+ }
112
+ });
113
+ case 2:
114
+ _yield$apiCall2 = _context2.v;
115
+ data = _yield$apiCall2.data;
116
+ ok = _yield$apiCall2.ok;
117
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
118
+ _context2.n = 3;
119
+ break;
120
+ }
121
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not send.");
122
+ return _context2.a(2);
123
+ case 3:
124
+ setTitle("");
125
+ setBody("");
126
+ setSent("Sent.");
127
+ _context2.n = 4;
128
+ return load();
129
+ case 4:
130
+ _context2.n = 6;
131
+ break;
132
+ case 5:
133
+ _context2.p = 5;
134
+ _t = _context2.v;
135
+ setError(_t.message || "Could not send.");
136
+ case 6:
137
+ _context2.p = 6;
138
+ setSaving(false);
139
+ return _context2.f(6);
140
+ case 7:
141
+ return _context2.a(2);
142
+ }
143
+ }, _callee2, null, [[1, 5, 6, 7]]);
144
+ }));
145
+ return _submit.apply(this, arguments);
146
+ }
147
+ return /*#__PURE__*/_react["default"].createElement("div", {
148
+ style: {
149
+ maxWidth: 640,
150
+ margin: "0 auto"
151
+ }
152
+ }, showTitle ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("h1", {
153
+ style: {
154
+ fontSize: 24,
155
+ fontWeight: 700,
156
+ marginBottom: 8
157
+ }
158
+ }, "Feedback"), /*#__PURE__*/_react["default"].createElement("p", {
159
+ style: {
160
+ color: "#6b7280",
161
+ marginTop: 0
162
+ }
163
+ }, "Tech or domain. You only see your own notes.")) : null, /*#__PURE__*/_react["default"].createElement("form", {
164
+ onSubmit: submit,
165
+ style: {
166
+ display: "grid",
167
+ gap: 12
168
+ }
169
+ }, /*#__PURE__*/_react["default"].createElement("label", null, "Kind", /*#__PURE__*/_react["default"].createElement("select", {
170
+ value: kind,
171
+ onChange: function onChange(event) {
172
+ return setKind(event.target.value);
173
+ },
174
+ style: _objectSpread(_objectSpread({}, fieldStyle), {}, {
175
+ marginTop: 4
176
+ })
177
+ }, /*#__PURE__*/_react["default"].createElement("option", {
178
+ value: "app"
179
+ }, "Tech \u2014 the app, a bug, or something to build"), /*#__PURE__*/_react["default"].createElement("option", {
180
+ value: "other"
181
+ }, "Domain \u2014 food, rider, class, shop, or the work itself"))), /*#__PURE__*/_react["default"].createElement("label", null, "Title", /*#__PURE__*/_react["default"].createElement("input", {
182
+ value: title,
183
+ maxLength: 140,
184
+ required: true,
185
+ onChange: function onChange(event) {
186
+ return setTitle(event.target.value);
187
+ },
188
+ style: _objectSpread(_objectSpread({}, fieldStyle), {}, {
189
+ marginTop: 4
190
+ })
191
+ })), /*#__PURE__*/_react["default"].createElement("label", null, "Note", /*#__PURE__*/_react["default"].createElement("textarea", {
192
+ value: body,
193
+ maxLength: 4000,
194
+ rows: 4,
195
+ onChange: function onChange(event) {
196
+ return setBody(event.target.value);
197
+ },
198
+ style: _objectSpread(_objectSpread({}, fieldStyle), {}, {
199
+ marginTop: 4
200
+ })
201
+ })), /*#__PURE__*/_react["default"].createElement("button", {
202
+ type: "submit",
203
+ disabled: saving,
204
+ style: {
205
+ justifySelf: "start",
206
+ padding: "8px 16px"
207
+ }
208
+ }, saving ? "Sending…" : "Send"), error ? /*#__PURE__*/_react["default"].createElement("p", {
209
+ style: {
210
+ color: "#b91c1c",
211
+ margin: 0
212
+ }
213
+ }, error) : null, sent ? /*#__PURE__*/_react["default"].createElement("p", {
214
+ style: {
215
+ color: "#15803d",
216
+ margin: 0
217
+ }
218
+ }, sent) : null), /*#__PURE__*/_react["default"].createElement("div", {
219
+ style: {
220
+ marginTop: 28,
221
+ display: "grid",
222
+ gap: 12
223
+ }
224
+ }, rows.map(function (row) {
225
+ return /*#__PURE__*/_react["default"].createElement("div", {
226
+ key: row._id,
227
+ style: {
228
+ borderBottom: "1px solid #e5e7eb",
229
+ paddingBottom: 10
230
+ }
231
+ }, /*#__PURE__*/_react["default"].createElement("div", {
232
+ style: {
233
+ fontWeight: 600
234
+ }
235
+ }, row.title), /*#__PURE__*/_react["default"].createElement("div", {
236
+ style: {
237
+ fontSize: 13,
238
+ color: "#6b7280"
239
+ }
240
+ }, row.kind === "other" ? "Domain" : "Tech", " \xB7 ", row.status), row.body ? /*#__PURE__*/_react["default"].createElement("div", {
241
+ style: {
242
+ whiteSpace: "pre-wrap"
243
+ }
244
+ }, row.body) : null);
245
+ })));
246
+ }
package/dist/index.js CHANGED
@@ -190,6 +190,12 @@ Object.defineProperty(exports, "PowrBaseFeed", {
190
190
  return _feeds["default"];
191
191
  }
192
192
  });
193
+ Object.defineProperty(exports, "PowrBaseFeedback", {
194
+ enumerable: true,
195
+ get: function get() {
196
+ return _feedback["default"];
197
+ }
198
+ });
193
199
  Object.defineProperty(exports, "PowrBaseForm", {
194
200
  enumerable: true,
195
201
  get: function get() {
@@ -672,6 +678,7 @@ var _likes = _interopRequireDefault(require("./likes"));
672
678
  var _auth = _interopRequireDefault(require("./auth"));
673
679
  var _sso = _interopRequireWildcard(require("./sso"));
674
680
  var _forms = _interopRequireDefault(require("./forms"));
681
+ var _feedback = _interopRequireDefault(require("./feedback"));
675
682
  var _chat = _interopRequireDefault(require("./chat"));
676
683
  var _feeds = _interopRequireDefault(require("./feeds"));
677
684
  var _thread = _interopRequireDefault(require("./thread"));
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
  "use client";
3
3
 
4
+ 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); }
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.AMPY_URL = exports.AMPY_PROJECT_ID = void 0;
8
9
  exports["default"] = AmpyHeaderDoor;
9
- var _react = require("react");
10
+ var _react = _interopRequireWildcard(require("react"));
10
11
  var _sso = require("../sso");
11
12
  var _session = require("../session");
12
13
  var _ampyMark = require("./ampyMark");
14
+ 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 _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
13
15
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
14
16
  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."); }
15
17
  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; } }
@@ -74,7 +76,7 @@ function AmpyHeaderDoor(_ref) {
74
76
  projectId: AMPY_PROJECT_ID
75
77
  });
76
78
  };
77
- return /*#__PURE__*/React.createElement("button", {
79
+ return /*#__PURE__*/_react["default"].createElement("button", {
78
80
  type: "button",
79
81
  onClick: open,
80
82
  onMouseEnter: function onMouseEnter() {
@@ -99,7 +101,7 @@ function AmpyHeaderDoor(_ref) {
99
101
  lineHeight: 1,
100
102
  textAlign: "left"
101
103
  }
102
- }, /*#__PURE__*/React.createElement("style", null, AMPY_DOOR_CSS), /*#__PURE__*/React.createElement("span", {
104
+ }, /*#__PURE__*/_react["default"].createElement("style", null, AMPY_DOOR_CSS), /*#__PURE__*/_react["default"].createElement("span", {
103
105
  className: "powr-ampy-door-kicker",
104
106
  style: {
105
107
  fontSize: 11,
@@ -107,13 +109,13 @@ function AmpyHeaderDoor(_ref) {
107
109
  color: colors.kicker,
108
110
  whiteSpace: "nowrap"
109
111
  }
110
- }, "Need help? Contact us on"), /*#__PURE__*/React.createElement("span", {
112
+ }, "Need help? Contact us on"), /*#__PURE__*/_react["default"].createElement("span", {
111
113
  style: {
112
114
  display: "flex",
113
115
  alignItems: "center",
114
116
  gap: 8
115
117
  }
116
- }, /*#__PURE__*/React.createElement("img", {
118
+ }, /*#__PURE__*/_react["default"].createElement("img", {
117
119
  src: _ampyMark.AMPY_MARK,
118
120
  alt: "",
119
121
  width: 32,
@@ -123,11 +125,11 @@ function AmpyHeaderDoor(_ref) {
123
125
  display: "block",
124
126
  flexShrink: 0
125
127
  }
126
- }), /*#__PURE__*/React.createElement("span", {
128
+ }), /*#__PURE__*/_react["default"].createElement("span", {
127
129
  style: {
128
130
  lineHeight: 1
129
131
  }
130
- }, /*#__PURE__*/React.createElement("span", {
132
+ }, /*#__PURE__*/_react["default"].createElement("span", {
131
133
  className: "powr-ampy-door-name",
132
134
  style: {
133
135
  display: "block",
@@ -136,7 +138,7 @@ function AmpyHeaderDoor(_ref) {
136
138
  color: colors.name,
137
139
  whiteSpace: "nowrap"
138
140
  }
139
- }, "Ampy"), /*#__PURE__*/React.createElement("span", {
141
+ }, "Ampy"), /*#__PURE__*/_react["default"].createElement("span", {
140
142
  className: "powr-ampy-door-tag",
141
143
  style: {
142
144
  display: "block",
@@ -21,15 +21,18 @@ var config = require('../config');
21
21
 
22
22
  // Get auth token from localStorage or other auth mechanism
23
23
  var getAuthToken = exports.getAuthToken = function getAuthToken() {
24
- if (typeof window !== 'undefined') {
25
- var authStore = localStorage.getItem('auth-store');
26
- if (authStore) {
24
+ if (typeof window === 'undefined') return null;
25
+ var authStore = localStorage.getItem('auth-store');
26
+ if (authStore) {
27
+ try {
27
28
  var _auth$state;
28
29
  var auth = JSON.parse(authStore);
29
- return (_auth$state = auth.state) === null || _auth$state === void 0 ? void 0 : _auth$state.token;
30
+ if ((_auth$state = auth.state) !== null && _auth$state !== void 0 && _auth$state.token) return auth.state.token;
31
+ } catch (_unused) {
32
+ /* plain token below */
30
33
  }
31
34
  }
32
- return null;
35
+ return localStorage.getItem('token');
33
36
  };
34
37
  var isFormDataBody = function isFormDataBody(body) {
35
38
  if (!body || _typeof(body) !== 'object') return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "6.10.0",
3
+ "version": "6.10.2",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"