powr-sdk-web 4.4.7 → 5.3.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.
@@ -88,7 +88,7 @@ var PowrBaseComments = function PowrBaseComments(_ref) {
88
88
  }, [contentId, projectId]);
89
89
  var fetchComments = /*#__PURE__*/function () {
90
90
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
91
- var timestamp, _yield$apiCall, data, ok, sortedComments, _t;
91
+ var _yield$apiCall, data, ok, sortedComments, _t;
92
92
  return _regenerator().w(function (_context) {
93
93
  while (1) switch (_context.p = _context.n) {
94
94
  case 0:
@@ -100,24 +100,19 @@ var PowrBaseComments = function PowrBaseComments(_ref) {
100
100
  case 1:
101
101
  setIsLoading(true);
102
102
  _context.p = 2;
103
- // Add cache busting to prevent 304 responses
104
- timestamp = new Date().getTime();
105
103
  _context.n = 3;
106
- return (0, _auth.apiCall)(apiUrl, "/comments?contentId=".concat(contentId, "&_t=").concat(timestamp), projectId);
104
+ return (0, _auth.apiCall)(apiUrl, "/comments?contentId=".concat(contentId), projectId);
107
105
  case 3:
108
106
  _yield$apiCall = _context.v;
109
107
  data = _yield$apiCall.data;
110
108
  ok = _yield$apiCall.ok;
111
- console.log('Fetched comments data............:', data);
112
109
  if (ok && data !== null && data !== void 0 && data.success) {
113
110
  if (Array.isArray(data === null || data === void 0 ? void 0 : data.data)) {
114
111
  sortedComments = data.data.sort(function (a, b) {
115
112
  return new Date(a.createdAt) - new Date(b.createdAt);
116
113
  });
117
- console.log('Setting comments:', sortedComments);
118
114
  setComments(sortedComments);
119
115
  } else {
120
- console.log('No comments array found, setting empty');
121
116
  setComments([]);
122
117
  }
123
118
  } else {
@@ -282,7 +277,6 @@ var PowrBaseComments = function PowrBaseComments(_ref) {
282
277
  };
283
278
  var groupedComments = comments.reduce(function (acc, comment) {
284
279
  if (!comment || _typeof(comment) !== 'object' || comment === null || !comment._id || !comment.createdAt) {
285
- console.log('Skipping invalid comment:', comment);
286
280
  return acc;
287
281
  }
288
282
  var _formatDate = formatDate(comment.createdAt),
@@ -296,8 +290,6 @@ var PowrBaseComments = function PowrBaseComments(_ref) {
296
290
  }));
297
291
  return acc;
298
292
  }, {});
299
- console.log('Current comments state:', comments);
300
- console.log('Grouped comments:', groupedComments);
301
293
  var dateGroups = Object.keys(groupedComments).sort(function (a, b) {
302
294
  return new Date(groupedComments[a][0].createdAt) - new Date(groupedComments[b][0].createdAt);
303
295
  }).map(function (date) {
@@ -306,7 +298,6 @@ var PowrBaseComments = function PowrBaseComments(_ref) {
306
298
  comments: groupedComments[date]
307
299
  };
308
300
  });
309
- console.log('Final dateGroups:', dateGroups);
310
301
  var handleUploadComplete = function handleUploadComplete(uploadedFiles) {
311
302
  setSelectedFiles(uploadedFiles);
312
303
  console.log('Upload complete. Closing modal.');
package/dist/index.js CHANGED
@@ -93,6 +93,12 @@ Object.defineProperty(exports, "PowrBaseUploader", {
93
93
  return _uploader["default"];
94
94
  }
95
95
  });
96
+ Object.defineProperty(exports, "PowrBaseVerify", {
97
+ enumerable: true,
98
+ get: function get() {
99
+ return _powrVerify["default"];
100
+ }
101
+ });
96
102
  Object.defineProperty(exports, "PowrBaseWaitlist", {
97
103
  enumerable: true,
98
104
  get: function get() {
@@ -122,4 +128,5 @@ var _feeds = _interopRequireDefault(require("./feeds"));
122
128
  var _admin = _interopRequireDefault(require("./admin"));
123
129
  var _tools = _interopRequireDefault(require("./tools"));
124
130
  var _tasks = _interopRequireDefault(require("./tasks"));
131
+ var _powrVerify = _interopRequireDefault(require("./powrVerify"));
125
132
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -0,0 +1,337 @@
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"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _firebase = require("../utils/firebase");
10
+ 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); }
11
+ 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; }
12
+ 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; }
13
+ 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; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
15
+ 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); }
16
+ 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 }; })(); }
17
+ 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); }
18
+ 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); }
19
+ 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); }); }; }
20
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
21
+ 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."); }
22
+ 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; } }
23
+ 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; }
24
+ 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; } }
25
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
26
+ var PowrVerify = function PowrVerify(_ref) {
27
+ var onVerified = _ref.onVerified,
28
+ _ref$defaultCountryCo = _ref.defaultCountryCode,
29
+ defaultCountryCode = _ref$defaultCountryCo === void 0 ? '91' : _ref$defaultCountryCo,
30
+ _ref$appName = _ref.appName,
31
+ appName = _ref$appName === void 0 ? 'App' : _ref$appName;
32
+ var _useState = (0, _react.useState)(''),
33
+ _useState2 = _slicedToArray(_useState, 2),
34
+ phone = _useState2[0],
35
+ setPhone = _useState2[1];
36
+ var _useState3 = (0, _react.useState)(''),
37
+ _useState4 = _slicedToArray(_useState3, 2),
38
+ otp = _useState4[0],
39
+ setOtp = _useState4[1];
40
+ var _useState5 = (0, _react.useState)(false),
41
+ _useState6 = _slicedToArray(_useState5, 2),
42
+ loading = _useState6[0],
43
+ setLoading = _useState6[1];
44
+ var _useState7 = (0, _react.useState)(false),
45
+ _useState8 = _slicedToArray(_useState7, 2),
46
+ otpSent = _useState8[0],
47
+ setOtpSent = _useState8[1];
48
+ var _useState9 = (0, _react.useState)(null),
49
+ _useState0 = _slicedToArray(_useState9, 2),
50
+ confirmationResult = _useState0[0],
51
+ setConfirmationResult = _useState0[1];
52
+ var _useState1 = (0, _react.useState)(''),
53
+ _useState10 = _slicedToArray(_useState1, 2),
54
+ error = _useState10[0],
55
+ setError = _useState10[1];
56
+ var _useState11 = (0, _react.useState)(''),
57
+ _useState12 = _slicedToArray(_useState11, 2),
58
+ success = _useState12[0],
59
+ setSuccess = _useState12[1];
60
+ var formatPhone = function formatPhone(p) {
61
+ var clean = (p || '').replace(/\D/g, '');
62
+ if (!clean) return '';
63
+ if (!clean.startsWith(defaultCountryCode)) {
64
+ clean = defaultCountryCode + clean;
65
+ }
66
+ return '+' + clean;
67
+ };
68
+ var clearRecaptcha = function clearRecaptcha() {
69
+ if (window.recaptchaVerifier) {
70
+ try {
71
+ window.recaptchaVerifier.clear();
72
+ } catch (e) {
73
+ // ignore
74
+ }
75
+ window.recaptchaVerifier = null;
76
+ }
77
+ };
78
+ var sendOtp = /*#__PURE__*/function () {
79
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
80
+ var phoneNumber, appVerifier, confirmation, _t, _t2;
81
+ return _regenerator().w(function (_context) {
82
+ while (1) switch (_context.p = _context.n) {
83
+ case 0:
84
+ setLoading(true);
85
+ setError('');
86
+ setSuccess('');
87
+ _context.p = 1;
88
+ phoneNumber = formatPhone(phone);
89
+ if (phoneNumber) {
90
+ _context.n = 2;
91
+ break;
92
+ }
93
+ setError('Please enter a valid phone number');
94
+ setLoading(false);
95
+ return _context.a(2);
96
+ case 2:
97
+ // clear existing
98
+ clearRecaptcha();
99
+ window.recaptchaVerifier = new _firebase.RecaptchaVerifier(_firebase.auth, 'recaptcha-container-powrbase', {
100
+ size: 'invisible',
101
+ callback: function callback() {}
102
+ });
103
+ _context.p = 3;
104
+ _context.n = 4;
105
+ return window.recaptchaVerifier.render();
106
+ case 4:
107
+ _context.n = 6;
108
+ break;
109
+ case 5:
110
+ _context.p = 5;
111
+ _t = _context.v;
112
+ case 6:
113
+ appVerifier = window.recaptchaVerifier;
114
+ _context.n = 7;
115
+ return (0, _firebase.signInWithPhoneNumber)(_firebase.auth, phoneNumber, appVerifier);
116
+ case 7:
117
+ confirmation = _context.v;
118
+ setConfirmationResult(confirmation);
119
+ setOtpSent(true);
120
+ setSuccess('OTP sent to ' + phoneNumber);
121
+ _context.n = 9;
122
+ break;
123
+ case 8:
124
+ _context.p = 8;
125
+ _t2 = _context.v;
126
+ console.error('sendOtp error', _t2);
127
+ setError((_t2 === null || _t2 === void 0 ? void 0 : _t2.message) || 'Failed to send OTP.');
128
+ clearRecaptcha();
129
+ case 9:
130
+ _context.p = 9;
131
+ setLoading(false);
132
+ return _context.f(9);
133
+ case 10:
134
+ return _context.a(2);
135
+ }
136
+ }, _callee, null, [[3, 5], [1, 8, 9, 10]]);
137
+ }));
138
+ return function sendOtp() {
139
+ return _ref2.apply(this, arguments);
140
+ };
141
+ }();
142
+ var verifyOtp = /*#__PURE__*/function () {
143
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
144
+ var result, token, _t3, _t4;
145
+ return _regenerator().w(function (_context2) {
146
+ while (1) switch (_context2.p = _context2.n) {
147
+ case 0:
148
+ setLoading(true);
149
+ setError('');
150
+ setSuccess('');
151
+ _context2.p = 1;
152
+ if (confirmationResult) {
153
+ _context2.n = 2;
154
+ break;
155
+ }
156
+ setError('OTP not requested yet');
157
+ setLoading(false);
158
+ return _context2.a(2);
159
+ case 2:
160
+ _context2.n = 3;
161
+ return confirmationResult.confirm(otp);
162
+ case 3:
163
+ result = _context2.v;
164
+ _context2.n = 4;
165
+ return result.user.getIdToken();
166
+ case 4:
167
+ token = _context2.v;
168
+ _context2.p = 5;
169
+ _context2.n = 6;
170
+ return (0, _firebase.signOut)(_firebase.auth);
171
+ case 6:
172
+ _context2.n = 8;
173
+ break;
174
+ case 7:
175
+ _context2.p = 7;
176
+ _t3 = _context2.v;
177
+ case 8:
178
+ setSuccess('Phone verified');
179
+ setOtp('');
180
+ setOtpSent(false);
181
+ setConfirmationResult(null);
182
+ clearRecaptcha();
183
+ if (typeof onVerified === 'function') {
184
+ onVerified(token);
185
+ }
186
+ _context2.n = 10;
187
+ break;
188
+ case 9:
189
+ _context2.p = 9;
190
+ _t4 = _context2.v;
191
+ console.error('verifyOtp error', _t4);
192
+ setError((_t4 === null || _t4 === void 0 ? void 0 : _t4.message) || 'Invalid OTP');
193
+ case 10:
194
+ _context2.p = 10;
195
+ setLoading(false);
196
+ return _context2.f(10);
197
+ case 11:
198
+ return _context2.a(2);
199
+ }
200
+ }, _callee2, null, [[5, 7], [1, 9, 10, 11]]);
201
+ }));
202
+ return function verifyOtp() {
203
+ return _ref3.apply(this, arguments);
204
+ };
205
+ }();
206
+ return /*#__PURE__*/_react["default"].createElement("div", {
207
+ style: containerStyle
208
+ }, /*#__PURE__*/_react["default"].createElement("div", {
209
+ style: cardStyle
210
+ }, /*#__PURE__*/_react["default"].createElement("h2", {
211
+ style: {
212
+ margin: 0,
213
+ marginBottom: 12
214
+ }
215
+ }, appName, " \u2014 Verify Phone"), /*#__PURE__*/_react["default"].createElement("p", {
216
+ style: {
217
+ marginTop: 0,
218
+ marginBottom: 16,
219
+ color: '#666'
220
+ }
221
+ }, "Enter your phone number and verify OTP. Only phone input is required."), /*#__PURE__*/_react["default"].createElement("label", {
222
+ style: labelStyle
223
+ }, "Phone number"), /*#__PURE__*/_react["default"].createElement("input", {
224
+ type: "text",
225
+ value: phone,
226
+ onChange: function onChange(e) {
227
+ return setPhone(e.target.value);
228
+ },
229
+ placeholder: "e.g. 9876543210",
230
+ style: inputStyle,
231
+ disabled: otpSent
232
+ }), !otpSent && /*#__PURE__*/_react["default"].createElement("button", {
233
+ onClick: sendOtp,
234
+ style: buttonStyle,
235
+ disabled: loading
236
+ }, loading ? 'Sending...' : 'Send OTP'), otpSent && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("label", {
237
+ style: _objectSpread(_objectSpread({}, labelStyle), {}, {
238
+ marginTop: 12
239
+ })
240
+ }, "Enter OTP"), /*#__PURE__*/_react["default"].createElement("input", {
241
+ type: "text",
242
+ value: otp,
243
+ onChange: function onChange(e) {
244
+ return setOtp(e.target.value);
245
+ },
246
+ placeholder: "6-digit code",
247
+ style: inputStyle,
248
+ maxLength: 6
249
+ }), /*#__PURE__*/_react["default"].createElement("div", {
250
+ style: {
251
+ display: 'flex',
252
+ gap: 8
253
+ }
254
+ }, /*#__PURE__*/_react["default"].createElement("button", {
255
+ onClick: verifyOtp,
256
+ style: _objectSpread(_objectSpread({}, buttonStyle), {}, {
257
+ flex: 1
258
+ }),
259
+ disabled: loading || otp.length < 4
260
+ }, loading ? 'Verifying...' : 'Verify OTP'), /*#__PURE__*/_react["default"].createElement("button", {
261
+ onClick: function onClick() {
262
+ setOtpSent(false);
263
+ setConfirmationResult(null);
264
+ clearRecaptcha();
265
+ setOtp('');
266
+ },
267
+ style: _objectSpread({}, secondaryButtonStyle),
268
+ disabled: loading
269
+ }, "Cancel"))), error && /*#__PURE__*/_react["default"].createElement("div", {
270
+ style: errorStyle
271
+ }, error), success && /*#__PURE__*/_react["default"].createElement("div", {
272
+ style: successStyle
273
+ }, success), /*#__PURE__*/_react["default"].createElement("div", {
274
+ id: "recaptcha-container-powrbase"
275
+ })));
276
+ };
277
+ var containerStyle = {
278
+ fontFamily: 'system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial',
279
+ padding: 20,
280
+ display: 'flex',
281
+ justifyContent: 'center'
282
+ };
283
+ var cardStyle = {
284
+ width: 360,
285
+ padding: 20,
286
+ borderRadius: 12,
287
+ boxShadow: '0 6px 18px rgba(0,0,0,0.08)',
288
+ background: 'white'
289
+ };
290
+ var labelStyle = {
291
+ fontSize: 13,
292
+ fontWeight: 600,
293
+ marginBottom: 6
294
+ };
295
+ var inputStyle = {
296
+ width: '100%',
297
+ padding: 10,
298
+ borderRadius: 8,
299
+ border: '1px solid #e5e7eb',
300
+ marginBottom: 12,
301
+ boxSizing: 'border-box'
302
+ };
303
+ var buttonStyle = {
304
+ width: '100%',
305
+ padding: 12,
306
+ background: '#ff6b35',
307
+ color: 'white',
308
+ border: 'none',
309
+ borderRadius: 8,
310
+ cursor: 'pointer',
311
+ fontWeight: 600,
312
+ marginBottom: 8
313
+ };
314
+ var secondaryButtonStyle = {
315
+ padding: 12,
316
+ background: '#f3f4f6',
317
+ color: '#111827',
318
+ border: 'none',
319
+ borderRadius: 8,
320
+ cursor: 'pointer',
321
+ fontWeight: 600
322
+ };
323
+ var errorStyle = {
324
+ marginTop: 8,
325
+ color: '#dc2626',
326
+ background: '#fff1f2',
327
+ padding: 8,
328
+ borderRadius: 6
329
+ };
330
+ var successStyle = {
331
+ marginTop: 8,
332
+ color: '#166534',
333
+ background: '#f0fdf4',
334
+ padding: 8,
335
+ borderRadius: 6
336
+ };
337
+ var _default = exports["default"] = PowrVerify;
@@ -69,15 +69,12 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
69
69
  var fileInputRef = (0, _react.useRef)(null);
70
70
  var uploadFile = /*#__PURE__*/function () {
71
71
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(file) {
72
- var formData, _yield$apiCall, data, ok, response, normalized, _t;
72
+ var formData, _yield$apiCall, data, ok, _t;
73
73
  return _regenerator().w(function (_context) {
74
74
  while (1) switch (_context.p = _context.n) {
75
75
  case 0:
76
76
  formData = new FormData();
77
77
  formData.append('file', file);
78
-
79
- // Avoid interpolating apiUrl directly (it may be undefined). Log intent instead.
80
- console.log(' Uploading file:', file.name, 'to files endpoint');
81
78
  _context.p = 1;
82
79
  _context.n = 2;
83
80
  return (0, _auth.apiCall)(apiUrl, "/files", projectId, {
@@ -88,42 +85,17 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
88
85
  _yield$apiCall = _context.v;
89
86
  data = _yield$apiCall.data;
90
87
  ok = _yield$apiCall.ok;
91
- response = _yield$apiCall.response;
92
- console.log('📤 Upload response status:', response.status);
93
- console.log('📦 Upload response raw data............:', data);
94
88
  if (ok) {
95
89
  _context.n = 3;
96
90
  break;
97
91
  }
98
- console.error('Upload failed with status:', response.status, 'data:', data);
99
- throw new Error("Upload failed with status: ".concat(response.status));
92
+ throw new Error('Upload failed');
100
93
  case 3:
101
- // Normalize server response to a consistent object shape.
102
- normalized = null;
103
- if (typeof data === 'string') {
104
- // backend returned plain URL string
105
- normalized = {
106
- url: data
107
- };
108
- } else if (data && data.url) {
109
- // expected shape
110
- normalized = data;
111
- } else if (data && data.file && (data.file.url || data.file.path)) {
112
- // grouped under `file`
113
- normalized = data.file;
114
- } else if (data && data.fileUrl) {
115
- normalized = {
116
- url: data.fileUrl
117
- };
118
- } else {
119
- normalized = data || {};
120
- }
121
- console.log('🔍 Normalized upload response keys:', Object.keys(normalized || {}));
122
- return _context.a(2, normalized);
94
+ return _context.a(2, data);
123
95
  case 4:
124
96
  _context.p = 4;
125
97
  _t = _context.v;
126
- console.error(' Error uploading file:', _t);
98
+ console.error('Error uploading file:', _t);
127
99
  throw _t;
128
100
  case 5:
129
101
  return _context.a(2);
@@ -144,10 +116,8 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
144
116
  _context3.n = 1;
145
117
  break;
146
118
  }
147
- console.log(' Upload blocked - no files or already uploading');
148
119
  return _context3.a(2);
149
120
  case 1:
150
- console.log(' Starting file upload process for', filesList.length, 'files');
151
121
  setIsUploading(true);
152
122
  setUploadProgress(0);
153
123
  _context3.p = 2;
@@ -163,7 +133,6 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
163
133
  isUploading: true
164
134
  };
165
135
  });
166
- console.log(' Created placeholder files:', placeholderFiles);
167
136
  setFiles(function (prev) {
168
137
  return [].concat(_toConsumableArray(prev), _toConsumableArray(placeholderFiles));
169
138
  });
@@ -173,29 +142,17 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
173
142
  while (1) switch (_context2.n) {
174
143
  case 0:
175
144
  file = filesList[i];
176
- console.log(" Processing file ".concat(i + 1, "/").concat(totalFiles, ":"), file.name);
177
145
  _context2.n = 1;
178
146
  return uploadFile(file);
179
147
  case 1:
180
148
  data = _context2.v;
181
- console.log(' Upload successful, received data:', data);
182
149
  uploadedFile = {
183
- url: (data === null || data === void 0 ? void 0 : data.url) || (data === null || data === void 0 ? void 0 : data.fileUrl) || (data === null || data === void 0 ? void 0 : data.path) || (data === null || data === void 0 ? void 0 : data.location) || URL.createObjectURL(file),
184
- name: (data === null || data === void 0 ? void 0 : data.originalname) || (data === null || data === void 0 ? void 0 : data.name) || (data === null || data === void 0 ? void 0 : data.filename) || file.name,
185
- type: (data === null || data === void 0 ? void 0 : data.mimetype) || (data === null || data === void 0 ? void 0 : data.type) || (data === null || data === void 0 ? void 0 : data.contentType) || file.type,
186
- size: (data === null || data === void 0 ? void 0 : data.size) || file.size,
150
+ url: data.url,
151
+ name: data.originalname || file.name,
152
+ type: data.mimetype || file.type,
153
+ size: data.size || file.size,
187
154
  isUploading: false
188
- };
189
- console.log(' Uploaded file URL check:', {
190
- 'data?.url': data === null || data === void 0 ? void 0 : data.url,
191
- 'data?.fileUrl': data === null || data === void 0 ? void 0 : data.fileUrl,
192
- 'data?.path': data === null || data === void 0 ? void 0 : data.path,
193
- 'data?.location': data === null || data === void 0 ? void 0 : data.location,
194
- 'final url': uploadedFile.url
195
- });
196
- console.log(' Created uploaded file object:', uploadedFile);
197
-
198
- // Replace the placeholder with the actual file
155
+ }; // Replace the placeholder with the actual file
199
156
  setFiles(function (prev) {
200
157
  return prev.map(function (f, index) {
201
158
  return index === prev.length - filesList.length + i ? uploadedFile : f;
@@ -204,7 +161,6 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
204
161
  uploadedFiles.push(uploadedFile);
205
162
  completedFiles++;
206
163
  setUploadProgress(completedFiles / totalFiles * 100);
207
- console.log("Progress: ".concat(completedFiles, "/").concat(totalFiles, " (").concat(Math.round(completedFiles / totalFiles * 100), "%)"));
208
164
  case 2:
209
165
  return _context2.a(2);
210
166
  }
@@ -225,7 +181,6 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
225
181
  updatedFiles = [].concat(_toConsumableArray(files.filter(function (f) {
226
182
  return !f.isUploading;
227
183
  })), uploadedFiles);
228
- console.log(' All files uploaded successfully. Final files array:', updatedFiles);
229
184
  setFiles(updatedFiles);
230
185
  onUploadComplete === null || onUploadComplete === void 0 || onUploadComplete(updatedFiles);
231
186
  _context3.n = 7;
@@ -233,7 +188,7 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
233
188
  case 6:
234
189
  _context3.p = 6;
235
190
  _t2 = _context3.v;
236
- console.error(' Error uploading files:', _t2);
191
+ console.error('Error uploading files:', _t2);
237
192
  onUploadError === null || onUploadError === void 0 || onUploadError(_t2);
238
193
 
239
194
  // Remove failed uploads
@@ -244,7 +199,6 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
244
199
  });
245
200
  case 7:
246
201
  _context3.p = 7;
247
- console.log(' Upload process finished');
248
202
  setIsUploading(false);
249
203
  setTimeout(function () {
250
204
  return setUploadProgress(0);
@@ -294,14 +248,10 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
294
248
  return /*#__PURE__*/_react["default"].createElement("div", {
295
249
  key: index,
296
250
  className: "group relative aspect-square bg-muted/50 rounded-md overflow-hidden border border-border hover:border-primary transition-colors"
297
- }, isImage && showPreview && file.url ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("img", {
251
+ }, isImage && showPreview ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("img", {
298
252
  src: file.url,
299
253
  alt: file.name,
300
- className: "w-full h-full object-cover ".concat(file.isUploading ? 'opacity-50' : ''),
301
- onError: function onError(e) {
302
- console.error('❌ Image load error for:', file.url);
303
- e.target.style.display = 'none';
304
- }
254
+ className: "w-full h-full object-cover ".concat(file.isUploading ? 'opacity-50' : '')
305
255
  }), file.isUploading && /*#__PURE__*/_react["default"].createElement("div", {
306
256
  className: "absolute inset-0 flex items-center justify-center bg-background/20"
307
257
  }, /*#__PURE__*/_react["default"].createElement("div", {
@@ -314,7 +264,7 @@ var PowrBaseUploader = function PowrBaseUploader(_ref) {
314
264
  className: "text-2xl text-muted-foreground mb-1"
315
265
  }, fileIcon), /*#__PURE__*/_react["default"].createElement("div", {
316
266
  className: "text-[10px] text-muted-foreground text-center truncate w-full"
317
- }, file.name))), !file.isUploading && file.url && /*#__PURE__*/_react["default"].createElement("div", {
267
+ }, file.name))), !file.isUploading && /*#__PURE__*/_react["default"].createElement("div", {
318
268
  className: "absolute inset-0 bg-black/60 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2"
319
269
  }, /*#__PURE__*/_react["default"].createElement("a", {
320
270
  href: file.url,
@@ -32,15 +32,12 @@ var getAuthToken = exports.getAuthToken = function getAuthToken() {
32
32
  // Create headers with authentication
33
33
  var createAuthHeaders = exports.createAuthHeaders = function createAuthHeaders() {
34
34
  var additionalHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
35
- var isFormData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
36
35
  var token = getAuthToken();
37
- var headers = _objectSpread(_objectSpread({}, token && {
36
+ return _objectSpread(_objectSpread({
37
+ 'Content-Type': 'application/json'
38
+ }, token && {
38
39
  'Authorization': "Bearer ".concat(token)
39
40
  }), additionalHeaders);
40
- if (!isFormData) {
41
- headers['Content-Type'] = 'application/json';
42
- }
43
- return headers;
44
41
  };
45
42
 
46
43
  // API helper function with authentication
@@ -49,7 +46,6 @@ var apiCall = exports.apiCall = /*#__PURE__*/function () {
49
46
  var options,
50
47
  url,
51
48
  separator,
52
- isFormData,
53
49
  requestConfig,
54
50
  response,
55
51
  data,
@@ -70,16 +66,10 @@ var apiCall = exports.apiCall = /*#__PURE__*/function () {
70
66
  url = "".concat(url).concat(separator, "projectId=").concat(projectId);
71
67
  }
72
68
  console.log('url', url);
73
- isFormData = options.body instanceof FormData;
74
69
  requestConfig = _objectSpread({
75
- headers: createAuthHeaders(options.headers, isFormData)
76
- }, options); // Add cache control for fresh data
77
- if (requestConfig.method === 'GET' || !requestConfig.method) {
78
- requestConfig.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate';
79
- requestConfig.headers['Pragma'] = 'no-cache';
80
- requestConfig.headers['Expires'] = '0';
81
- }
82
- if (requestConfig.body && _typeof(requestConfig.body) === 'object' && !isFormData) {
70
+ headers: createAuthHeaders(options.headers)
71
+ }, options); // If body is provided and is an object, stringify it
72
+ if (requestConfig.body && _typeof(requestConfig.body) === 'object' && !(requestConfig.body instanceof FormData)) {
83
73
  requestConfig.body = JSON.stringify(requestConfig.body);
84
74
  }
85
75
  _context.n = 1;
@@ -35,13 +35,24 @@ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present,
35
35
  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); }
36
36
  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); }
37
37
  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); }); }; }
38
+ // const firebaseConfig = {
39
+ // apiKey: "AIzaSyCX-BOzLTVstWa7Ps4pLgB3gdMny83-AGY",
40
+ // authDomain: "excelrs-da4f4.firebaseapp.com",
41
+ // projectId: "excelrs-da4f4",
42
+ // storageBucket: "excelrs-da4f4.firebasestorage.app",
43
+ // messagingSenderId: "1069037816864",
44
+ // appId: "1:1069037816864:web:28c988b1f6bb49eac50045"
45
+ // };
46
+
38
47
  var firebaseConfig = {
39
- apiKey: "AIzaSyCX-BOzLTVstWa7Ps4pLgB3gdMny83-AGY",
40
- authDomain: "excelrs-da4f4.firebaseapp.com",
41
- projectId: "excelrs-da4f4",
42
- storageBucket: "excelrs-da4f4.firebasestorage.app",
43
- messagingSenderId: "1069037816864",
44
- appId: "1:1069037816864:web:28c988b1f6bb49eac50045"
48
+ apiKey: process.env.REACT_APP_FIREBASE_API_KEY || "AIzaSyAYsrxbOH6-qHvaDVa_JBf52lFzfriJzf8",
49
+ authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN || "powrapp-f19f4.firebaseapp.com",
50
+ projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID || "powrapp-f19f4",
51
+ storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET || "powrapp-f19f4.firebasestorage.app",
52
+ messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID || "594348480000",
53
+ appId: process.env.REACT_APP_FIREBASE_APP_ID || "1:594348480000:web:c8dfee7db251523b99aae5",
54
+ measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID || "G-VGMYP6B1QL",
55
+ databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL || undefined
45
56
  };
46
57
  var app = exports.app = (0, _app.initializeApp)(firebaseConfig);
47
58
  var functions = exports.functions = (0, _functions.getFunctions)(app);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "4.4.7",
3
+ "version": "5.3.0",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "build": "babel src -d dist --copy-files",