powr-sdk-web 3.3.5 → 3.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/index.js +3 -0
- package/dist/feeds/admin.js +237 -0
- package/dist/feeds/components/CreatePost.js +296 -0
- package/dist/feeds/components/FeedPost.js +266 -0
- package/dist/feeds/index.js +242 -0
- package/dist/index.js +7 -0
- package/package.json +1 -1
package/dist/admin/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var _admin4 = _interopRequireDefault(require("../invoices/admin"));
|
|
|
14
14
|
var _admin5 = _interopRequireDefault(require("../slides/admin"));
|
|
15
15
|
var _admin6 = _interopRequireDefault(require("../forms/admin"));
|
|
16
16
|
var _admin7 = _interopRequireDefault(require("../waitlists/admin"));
|
|
17
|
+
var _admin8 = _interopRequireDefault(require("../feeds/admin"));
|
|
17
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
18
19
|
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); }
|
|
19
20
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
@@ -207,6 +208,8 @@ var AdminDashboard = function AdminDashboard(_ref) {
|
|
|
207
208
|
return /*#__PURE__*/_react["default"].createElement(_admin6["default"], sectionProps);
|
|
208
209
|
case 'waitlist':
|
|
209
210
|
return /*#__PURE__*/_react["default"].createElement(_admin7["default"], sectionProps);
|
|
211
|
+
case 'feeds':
|
|
212
|
+
return /*#__PURE__*/_react["default"].createElement(_admin8["default"], sectionProps);
|
|
210
213
|
default:
|
|
211
214
|
return null;
|
|
212
215
|
}
|
|
@@ -0,0 +1,237 @@
|
|
|
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 _auth = require("../utils/auth");
|
|
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 _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
|
|
11
|
+
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 }; })(); }
|
|
12
|
+
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); }
|
|
13
|
+
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); }
|
|
14
|
+
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); }); }; }
|
|
15
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
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."); }
|
|
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; } }
|
|
18
|
+
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; }
|
|
19
|
+
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; } }
|
|
20
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
21
|
+
var PowrBaseFeedsAdmin = function PowrBaseFeedsAdmin() {
|
|
22
|
+
var _useState = (0, _react.useState)([]),
|
|
23
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
24
|
+
posts = _useState2[0],
|
|
25
|
+
setPosts = _useState2[1];
|
|
26
|
+
var _useState3 = (0, _react.useState)(true),
|
|
27
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
28
|
+
loading = _useState4[0],
|
|
29
|
+
setLoading = _useState4[1];
|
|
30
|
+
var _useState5 = (0, _react.useState)(null),
|
|
31
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
32
|
+
selectedPost = _useState6[0],
|
|
33
|
+
setSelectedPost = _useState6[1];
|
|
34
|
+
var _useState7 = (0, _react.useState)(false),
|
|
35
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
36
|
+
showDeleteModal = _useState8[0],
|
|
37
|
+
setShowDeleteModal = _useState8[1];
|
|
38
|
+
(0, _react.useEffect)(function () {
|
|
39
|
+
fetchPosts();
|
|
40
|
+
}, []);
|
|
41
|
+
var fetchPosts = /*#__PURE__*/function () {
|
|
42
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
43
|
+
var _yield$apiCall, data, ok, _t;
|
|
44
|
+
return _regenerator().w(function (_context) {
|
|
45
|
+
while (1) switch (_context.n) {
|
|
46
|
+
case 0:
|
|
47
|
+
_context.p = 0;
|
|
48
|
+
_context.n = 1;
|
|
49
|
+
return (0, _auth.apiCall)(null, '/feeds?limit=100', null);
|
|
50
|
+
case 1:
|
|
51
|
+
_yield$apiCall = _context.v;
|
|
52
|
+
data = _yield$apiCall.data;
|
|
53
|
+
ok = _yield$apiCall.ok;
|
|
54
|
+
if (ok && data.success) {
|
|
55
|
+
setPosts(data.data);
|
|
56
|
+
}
|
|
57
|
+
_context.n = 3;
|
|
58
|
+
break;
|
|
59
|
+
case 2:
|
|
60
|
+
_context.p = 2;
|
|
61
|
+
_t = _context.v;
|
|
62
|
+
console.error('Error fetching posts:', _t);
|
|
63
|
+
case 3:
|
|
64
|
+
_context.p = 3;
|
|
65
|
+
setLoading(false);
|
|
66
|
+
return _context.f(3);
|
|
67
|
+
case 4:
|
|
68
|
+
return _context.a(2);
|
|
69
|
+
}
|
|
70
|
+
}, _callee, null, [[0, 2, 3, 4]]);
|
|
71
|
+
}));
|
|
72
|
+
return function fetchPosts() {
|
|
73
|
+
return _ref.apply(this, arguments);
|
|
74
|
+
};
|
|
75
|
+
}();
|
|
76
|
+
var handleDeletePost = /*#__PURE__*/function () {
|
|
77
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
78
|
+
var _yield$apiCall2, data, ok, _t2;
|
|
79
|
+
return _regenerator().w(function (_context2) {
|
|
80
|
+
while (1) switch (_context2.n) {
|
|
81
|
+
case 0:
|
|
82
|
+
if (selectedPost) {
|
|
83
|
+
_context2.n = 1;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
return _context2.a(2);
|
|
87
|
+
case 1:
|
|
88
|
+
_context2.p = 1;
|
|
89
|
+
_context2.n = 2;
|
|
90
|
+
return (0, _auth.apiCall)(null, "/feeds/".concat(selectedPost._id), null, {
|
|
91
|
+
method: 'DELETE'
|
|
92
|
+
});
|
|
93
|
+
case 2:
|
|
94
|
+
_yield$apiCall2 = _context2.v;
|
|
95
|
+
data = _yield$apiCall2.data;
|
|
96
|
+
ok = _yield$apiCall2.ok;
|
|
97
|
+
if (ok && data.success) {
|
|
98
|
+
setPosts(function (prev) {
|
|
99
|
+
return prev.filter(function (post) {
|
|
100
|
+
return post._id !== selectedPost._id;
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
setShowDeleteModal(false);
|
|
104
|
+
setSelectedPost(null);
|
|
105
|
+
}
|
|
106
|
+
_context2.n = 4;
|
|
107
|
+
break;
|
|
108
|
+
case 3:
|
|
109
|
+
_context2.p = 3;
|
|
110
|
+
_t2 = _context2.v;
|
|
111
|
+
console.error('Error deleting post:', _t2);
|
|
112
|
+
case 4:
|
|
113
|
+
return _context2.a(2);
|
|
114
|
+
}
|
|
115
|
+
}, _callee2, null, [[1, 3]]);
|
|
116
|
+
}));
|
|
117
|
+
return function handleDeletePost() {
|
|
118
|
+
return _ref2.apply(this, arguments);
|
|
119
|
+
};
|
|
120
|
+
}();
|
|
121
|
+
var formatDate = function formatDate(dateString) {
|
|
122
|
+
return new Date(dateString).toLocaleDateString() + ' ' + new Date(dateString).toLocaleTimeString();
|
|
123
|
+
};
|
|
124
|
+
var truncateText = function truncateText(text) {
|
|
125
|
+
var maxLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
|
|
126
|
+
if (text.length <= maxLength) return text;
|
|
127
|
+
return text.substring(0, maxLength) + '...';
|
|
128
|
+
};
|
|
129
|
+
if (loading) {
|
|
130
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
131
|
+
className: "flex items-center justify-center p-8"
|
|
132
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
133
|
+
className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
137
|
+
className: "space-y-6"
|
|
138
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
139
|
+
className: "flex items-center justify-between"
|
|
140
|
+
}, /*#__PURE__*/_react["default"].createElement("h2", {
|
|
141
|
+
className: "text-2xl font-bold text-gray-900"
|
|
142
|
+
}, "Feed Management"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
143
|
+
onClick: fetchPosts,
|
|
144
|
+
className: "px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700"
|
|
145
|
+
}, "Refresh")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
146
|
+
className: "bg-white rounded-lg shadow overflow-hidden"
|
|
147
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
148
|
+
className: "overflow-x-auto"
|
|
149
|
+
}, /*#__PURE__*/_react["default"].createElement("table", {
|
|
150
|
+
className: "min-w-full divide-y divide-gray-200"
|
|
151
|
+
}, /*#__PURE__*/_react["default"].createElement("thead", {
|
|
152
|
+
className: "bg-gray-50"
|
|
153
|
+
}, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", {
|
|
154
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
155
|
+
}, "Author"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
156
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
157
|
+
}, "Content"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
158
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
159
|
+
}, "Stats"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
160
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
161
|
+
}, "Created"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
162
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
163
|
+
}, "Status"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
164
|
+
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
165
|
+
}, "Actions"))), /*#__PURE__*/_react["default"].createElement("tbody", {
|
|
166
|
+
className: "bg-white divide-y divide-gray-200"
|
|
167
|
+
}, posts.map(function (post) {
|
|
168
|
+
var _post$author, _post$author2, _post$author3;
|
|
169
|
+
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
170
|
+
key: post._id,
|
|
171
|
+
className: "hover:bg-gray-50"
|
|
172
|
+
}, /*#__PURE__*/_react["default"].createElement("td", {
|
|
173
|
+
className: "px-6 py-4 whitespace-nowrap"
|
|
174
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
175
|
+
className: "flex items-center"
|
|
176
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
177
|
+
className: "w-8 h-8 bg-blue-500 rounded-full flex items-center justify-center text-white text-sm font-semibold"
|
|
178
|
+
}, ((_post$author = post.author) === null || _post$author === void 0 || (_post$author = _post$author.name) === null || _post$author === void 0 ? void 0 : _post$author.charAt(0)) || 'U'), /*#__PURE__*/_react["default"].createElement("div", {
|
|
179
|
+
className: "ml-3"
|
|
180
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
181
|
+
className: "text-sm font-medium text-gray-900"
|
|
182
|
+
}, ((_post$author2 = post.author) === null || _post$author2 === void 0 ? void 0 : _post$author2.name) || 'Unknown User'), /*#__PURE__*/_react["default"].createElement("div", {
|
|
183
|
+
className: "text-sm text-gray-500"
|
|
184
|
+
}, (_post$author3 = post.author) === null || _post$author3 === void 0 ? void 0 : _post$author3.email)))), /*#__PURE__*/_react["default"].createElement("td", {
|
|
185
|
+
className: "px-6 py-4"
|
|
186
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
187
|
+
className: "text-sm text-gray-900"
|
|
188
|
+
}, truncateText(post.content)), post.tags && post.tags.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
189
|
+
className: "mt-1 flex flex-wrap gap-1"
|
|
190
|
+
}, post.tags.slice(0, 3).map(function (tag, index) {
|
|
191
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
192
|
+
key: index,
|
|
193
|
+
className: "px-2 py-1 bg-blue-100 text-blue-800 text-xs rounded-full"
|
|
194
|
+
}, "#", tag);
|
|
195
|
+
}), post.tags.length > 3 && /*#__PURE__*/_react["default"].createElement("span", {
|
|
196
|
+
className: "text-xs text-gray-500"
|
|
197
|
+
}, "+", post.tags.length - 3, " more"))), /*#__PURE__*/_react["default"].createElement("td", {
|
|
198
|
+
className: "px-6 py-4 whitespace-nowrap text-sm text-gray-500"
|
|
199
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "\u2764\uFE0F ", post.likesCount || 0), /*#__PURE__*/_react["default"].createElement("div", null, "\uD83D\uDCAC ", post.commentsCount || 0), post.media && post.media.length > 0 && /*#__PURE__*/_react["default"].createElement("div", null, "\uD83D\uDCCE ", post.media.length)), /*#__PURE__*/_react["default"].createElement("td", {
|
|
200
|
+
className: "px-6 py-4 whitespace-nowrap text-sm text-gray-500"
|
|
201
|
+
}, formatDate(post.createdAt)), /*#__PURE__*/_react["default"].createElement("td", {
|
|
202
|
+
className: "px-6 py-4 whitespace-nowrap"
|
|
203
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
204
|
+
className: "inline-flex px-2 py-1 text-xs font-semibold rounded-full ".concat(post.isPublic ? 'bg-green-100 text-green-800' : 'bg-yellow-100 text-yellow-800')
|
|
205
|
+
}, post.isPublic ? 'Public' : 'Private')), /*#__PURE__*/_react["default"].createElement("td", {
|
|
206
|
+
className: "px-6 py-4 whitespace-nowrap text-sm font-medium"
|
|
207
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
208
|
+
onClick: function onClick() {
|
|
209
|
+
setSelectedPost(post);
|
|
210
|
+
setShowDeleteModal(true);
|
|
211
|
+
},
|
|
212
|
+
className: "text-red-600 hover:text-red-900"
|
|
213
|
+
}, "Delete")));
|
|
214
|
+
}))))), showDeleteModal && selectedPost && /*#__PURE__*/_react["default"].createElement("div", {
|
|
215
|
+
className: "fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full z-50"
|
|
216
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
217
|
+
className: "relative top-20 mx-auto p-5 border w-96 shadow-lg rounded-md bg-white"
|
|
218
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
219
|
+
className: "mt-3 text-center"
|
|
220
|
+
}, /*#__PURE__*/_react["default"].createElement("h3", {
|
|
221
|
+
className: "text-lg font-medium text-gray-900 mb-4"
|
|
222
|
+
}, "Delete Post"), /*#__PURE__*/_react["default"].createElement("p", {
|
|
223
|
+
className: "text-sm text-gray-500 mb-6"
|
|
224
|
+
}, "Are you sure you want to delete this post? This action cannot be undone."), /*#__PURE__*/_react["default"].createElement("div", {
|
|
225
|
+
className: "flex justify-center space-x-4"
|
|
226
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
227
|
+
onClick: function onClick() {
|
|
228
|
+
setShowDeleteModal(false);
|
|
229
|
+
setSelectedPost(null);
|
|
230
|
+
},
|
|
231
|
+
className: "px-4 py-2 bg-gray-300 text-gray-700 rounded-lg hover:bg-gray-400"
|
|
232
|
+
}, "Cancel"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
233
|
+
onClick: handleDeletePost,
|
|
234
|
+
className: "px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700"
|
|
235
|
+
}, "Delete"))))));
|
|
236
|
+
};
|
|
237
|
+
var _default = exports["default"] = PowrBaseFeedsAdmin;
|
|
@@ -0,0 +1,296 @@
|
|
|
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 _auth = require("../../utils/auth");
|
|
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 _t4 in e) "default" !== _t4 && {}.hasOwnProperty.call(e, _t4) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t4)) && (i.get || i.set) ? o(f, _t4, i) : f[_t4] = e[_t4]); return f; })(e, t); }
|
|
11
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
12
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
13
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
14
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
15
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
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 CreatePost = function CreatePost(_ref) {
|
|
27
|
+
var onPostCreated = _ref.onPostCreated,
|
|
28
|
+
onPostError = _ref.onPostError;
|
|
29
|
+
var _useState = (0, _react.useState)(''),
|
|
30
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
31
|
+
content = _useState2[0],
|
|
32
|
+
setContent = _useState2[1];
|
|
33
|
+
var _useState3 = (0, _react.useState)([]),
|
|
34
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
35
|
+
media = _useState4[0],
|
|
36
|
+
setMedia = _useState4[1];
|
|
37
|
+
var _useState5 = (0, _react.useState)(true),
|
|
38
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
39
|
+
isPublic = _useState6[0],
|
|
40
|
+
setIsPublic = _useState6[1];
|
|
41
|
+
var _useState7 = (0, _react.useState)(''),
|
|
42
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
43
|
+
tags = _useState8[0],
|
|
44
|
+
setTags = _useState8[1];
|
|
45
|
+
var _useState9 = (0, _react.useState)(false),
|
|
46
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
47
|
+
isSubmitting = _useState0[0],
|
|
48
|
+
setIsSubmitting = _useState0[1];
|
|
49
|
+
var _useState1 = (0, _react.useState)(false),
|
|
50
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
51
|
+
showMediaUpload = _useState10[0],
|
|
52
|
+
setShowMediaUpload = _useState10[1];
|
|
53
|
+
var handleSubmit = /*#__PURE__*/function () {
|
|
54
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
|
|
55
|
+
var postData, _yield$apiCall, data, ok, _t;
|
|
56
|
+
return _regenerator().w(function (_context) {
|
|
57
|
+
while (1) switch (_context.n) {
|
|
58
|
+
case 0:
|
|
59
|
+
e.preventDefault();
|
|
60
|
+
if (!(!content.trim() && media.length === 0)) {
|
|
61
|
+
_context.n = 1;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
if (onPostError) {
|
|
65
|
+
onPostError('Please add some content or media to your post');
|
|
66
|
+
}
|
|
67
|
+
return _context.a(2);
|
|
68
|
+
case 1:
|
|
69
|
+
setIsSubmitting(true);
|
|
70
|
+
_context.p = 2;
|
|
71
|
+
postData = {
|
|
72
|
+
content: content.trim(),
|
|
73
|
+
media: media,
|
|
74
|
+
isPublic: isPublic,
|
|
75
|
+
tags: tags.split(',').map(function (tag) {
|
|
76
|
+
return tag.trim();
|
|
77
|
+
}).filter(function (tag) {
|
|
78
|
+
return tag.length > 0;
|
|
79
|
+
})
|
|
80
|
+
};
|
|
81
|
+
_context.n = 3;
|
|
82
|
+
return (0, _auth.apiCall)(null, '/feeds', null, {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
body: postData
|
|
85
|
+
});
|
|
86
|
+
case 3:
|
|
87
|
+
_yield$apiCall = _context.v;
|
|
88
|
+
data = _yield$apiCall.data;
|
|
89
|
+
ok = _yield$apiCall.ok;
|
|
90
|
+
if (ok && data.success) {
|
|
91
|
+
setContent('');
|
|
92
|
+
setMedia([]);
|
|
93
|
+
setTags('');
|
|
94
|
+
setIsPublic(true);
|
|
95
|
+
if (onPostCreated) {
|
|
96
|
+
onPostCreated(data.data);
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
if (onPostError) {
|
|
100
|
+
onPostError(data.message || 'Failed to create post');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
_context.n = 5;
|
|
104
|
+
break;
|
|
105
|
+
case 4:
|
|
106
|
+
_context.p = 4;
|
|
107
|
+
_t = _context.v;
|
|
108
|
+
console.error('Error creating post:', _t);
|
|
109
|
+
if (onPostError) {
|
|
110
|
+
onPostError('Failed to create post');
|
|
111
|
+
}
|
|
112
|
+
case 5:
|
|
113
|
+
_context.p = 5;
|
|
114
|
+
setIsSubmitting(false);
|
|
115
|
+
return _context.f(5);
|
|
116
|
+
case 6:
|
|
117
|
+
return _context.a(2);
|
|
118
|
+
}
|
|
119
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
120
|
+
}));
|
|
121
|
+
return function handleSubmit(_x) {
|
|
122
|
+
return _ref2.apply(this, arguments);
|
|
123
|
+
};
|
|
124
|
+
}();
|
|
125
|
+
var handleFileUpload = /*#__PURE__*/function () {
|
|
126
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(files) {
|
|
127
|
+
var uploadedFiles, _iterator, _step, file, formData, _yield$apiCall2, data, ok, _t2, _t3;
|
|
128
|
+
return _regenerator().w(function (_context2) {
|
|
129
|
+
while (1) switch (_context2.n) {
|
|
130
|
+
case 0:
|
|
131
|
+
uploadedFiles = [];
|
|
132
|
+
_iterator = _createForOfIteratorHelper(files);
|
|
133
|
+
_context2.p = 1;
|
|
134
|
+
_iterator.s();
|
|
135
|
+
case 2:
|
|
136
|
+
if ((_step = _iterator.n()).done) {
|
|
137
|
+
_context2.n = 7;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
file = _step.value;
|
|
141
|
+
_context2.p = 3;
|
|
142
|
+
formData = new FormData();
|
|
143
|
+
formData.append('file', file);
|
|
144
|
+
formData.append('projectId', process.env.NEXT_PUBLIC_PROJECT_ID);
|
|
145
|
+
_context2.n = 4;
|
|
146
|
+
return (0, _auth.apiCall)(null, '/files/upload', null, {
|
|
147
|
+
method: 'POST',
|
|
148
|
+
body: formData
|
|
149
|
+
});
|
|
150
|
+
case 4:
|
|
151
|
+
_yield$apiCall2 = _context2.v;
|
|
152
|
+
data = _yield$apiCall2.data;
|
|
153
|
+
ok = _yield$apiCall2.ok;
|
|
154
|
+
if (ok && data.success) {
|
|
155
|
+
uploadedFiles.push({
|
|
156
|
+
url: data.data.url,
|
|
157
|
+
type: file.type.startsWith('image/') ? 'image' : 'document',
|
|
158
|
+
filename: file.name
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
_context2.n = 6;
|
|
162
|
+
break;
|
|
163
|
+
case 5:
|
|
164
|
+
_context2.p = 5;
|
|
165
|
+
_t2 = _context2.v;
|
|
166
|
+
console.error('Error uploading file:', _t2);
|
|
167
|
+
case 6:
|
|
168
|
+
_context2.n = 2;
|
|
169
|
+
break;
|
|
170
|
+
case 7:
|
|
171
|
+
_context2.n = 9;
|
|
172
|
+
break;
|
|
173
|
+
case 8:
|
|
174
|
+
_context2.p = 8;
|
|
175
|
+
_t3 = _context2.v;
|
|
176
|
+
_iterator.e(_t3);
|
|
177
|
+
case 9:
|
|
178
|
+
_context2.p = 9;
|
|
179
|
+
_iterator.f();
|
|
180
|
+
return _context2.f(9);
|
|
181
|
+
case 10:
|
|
182
|
+
setMedia(function (prev) {
|
|
183
|
+
return [].concat(_toConsumableArray(prev), uploadedFiles);
|
|
184
|
+
});
|
|
185
|
+
case 11:
|
|
186
|
+
return _context2.a(2);
|
|
187
|
+
}
|
|
188
|
+
}, _callee2, null, [[3, 5], [1, 8, 9, 10]]);
|
|
189
|
+
}));
|
|
190
|
+
return function handleFileUpload(_x2) {
|
|
191
|
+
return _ref3.apply(this, arguments);
|
|
192
|
+
};
|
|
193
|
+
}();
|
|
194
|
+
var handleFileChange = function handleFileChange(e) {
|
|
195
|
+
var files = Array.from(e.target.files);
|
|
196
|
+
handleFileUpload(files);
|
|
197
|
+
};
|
|
198
|
+
var removeMedia = function removeMedia(index) {
|
|
199
|
+
setMedia(function (prev) {
|
|
200
|
+
return prev.filter(function (_, i) {
|
|
201
|
+
return i !== index;
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
206
|
+
className: "bg-white rounded-lg shadow-sm border p-6"
|
|
207
|
+
}, /*#__PURE__*/_react["default"].createElement("form", {
|
|
208
|
+
onSubmit: handleSubmit
|
|
209
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
210
|
+
className: "mb-4"
|
|
211
|
+
}, /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
212
|
+
value: content,
|
|
213
|
+
onChange: function onChange(e) {
|
|
214
|
+
return setContent(e.target.value);
|
|
215
|
+
},
|
|
216
|
+
placeholder: "What's on your mind?",
|
|
217
|
+
className: "w-full p-3 border border-gray-300 rounded-lg resize-none focus:ring-2 focus:ring-blue-500 focus:border-transparent",
|
|
218
|
+
rows: 3,
|
|
219
|
+
disabled: isSubmitting
|
|
220
|
+
})), media.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
221
|
+
className: "mb-4"
|
|
222
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
223
|
+
className: "flex flex-wrap gap-2"
|
|
224
|
+
}, media.map(function (file, index) {
|
|
225
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
226
|
+
key: index,
|
|
227
|
+
className: "relative"
|
|
228
|
+
}, file.type === 'image' ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
229
|
+
src: file.url,
|
|
230
|
+
alt: file.filename,
|
|
231
|
+
className: "w-20 h-20 object-cover rounded-lg"
|
|
232
|
+
}) : /*#__PURE__*/_react["default"].createElement("div", {
|
|
233
|
+
className: "w-20 h-20 bg-gray-100 rounded-lg flex items-center justify-center"
|
|
234
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
235
|
+
className: "text-xs text-gray-500"
|
|
236
|
+
}, "\uD83D\uDCC4")), /*#__PURE__*/_react["default"].createElement("button", {
|
|
237
|
+
type: "button",
|
|
238
|
+
onClick: function onClick() {
|
|
239
|
+
return removeMedia(index);
|
|
240
|
+
},
|
|
241
|
+
className: "absolute -top-2 -right-2 bg-red-500 text-white rounded-full w-6 h-6 flex items-center justify-center text-xs hover:bg-red-600"
|
|
242
|
+
}, "\xD7"));
|
|
243
|
+
}))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
244
|
+
className: "mb-4"
|
|
245
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
246
|
+
type: "text",
|
|
247
|
+
value: tags,
|
|
248
|
+
onChange: function onChange(e) {
|
|
249
|
+
return setTags(e.target.value);
|
|
250
|
+
},
|
|
251
|
+
placeholder: "Tags (comma separated)",
|
|
252
|
+
className: "w-full p-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent",
|
|
253
|
+
disabled: isSubmitting
|
|
254
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
255
|
+
className: "flex items-center justify-between mb-4"
|
|
256
|
+
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
257
|
+
className: "flex items-center"
|
|
258
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
259
|
+
type: "checkbox",
|
|
260
|
+
checked: isPublic,
|
|
261
|
+
onChange: function onChange(e) {
|
|
262
|
+
return setIsPublic(e.target.checked);
|
|
263
|
+
},
|
|
264
|
+
className: "mr-2",
|
|
265
|
+
disabled: isSubmitting
|
|
266
|
+
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
267
|
+
className: "text-sm text-gray-600"
|
|
268
|
+
}, "Public post")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
269
|
+
className: "flex gap-2"
|
|
270
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
271
|
+
type: "button",
|
|
272
|
+
onClick: function onClick() {
|
|
273
|
+
return setShowMediaUpload(!showMediaUpload);
|
|
274
|
+
},
|
|
275
|
+
className: "px-3 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 disabled:opacity-50",
|
|
276
|
+
disabled: isSubmitting
|
|
277
|
+
}, "\uD83D\uDCCE Media"))), showMediaUpload && /*#__PURE__*/_react["default"].createElement("div", {
|
|
278
|
+
className: "mb-4 p-4 border border-gray-200 rounded-lg bg-gray-50"
|
|
279
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
280
|
+
type: "file",
|
|
281
|
+
multiple: true,
|
|
282
|
+
onChange: handleFileChange,
|
|
283
|
+
accept: "image/*,.pdf,.doc,.docx,.txt",
|
|
284
|
+
className: "w-full",
|
|
285
|
+
disabled: isSubmitting
|
|
286
|
+
}), /*#__PURE__*/_react["default"].createElement("p", {
|
|
287
|
+
className: "text-xs text-gray-500 mt-1"
|
|
288
|
+
}, "Supported: Images, PDF, DOC, DOCX, TXT")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
289
|
+
className: "flex justify-end"
|
|
290
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
291
|
+
type: "submit",
|
|
292
|
+
disabled: isSubmitting || !content.trim() && media.length === 0,
|
|
293
|
+
className: "px-6 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed"
|
|
294
|
+
}, isSubmitting ? 'Posting...' : 'Post'))));
|
|
295
|
+
};
|
|
296
|
+
var _default = exports["default"] = CreatePost;
|
|
@@ -0,0 +1,266 @@
|
|
|
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 _auth = require("../../utils/auth");
|
|
10
|
+
var _comments = _interopRequireDefault(require("../../comments"));
|
|
11
|
+
var _likes = _interopRequireDefault(require("../../likes"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
13
|
+
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 _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
|
|
14
|
+
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 }; })(); }
|
|
15
|
+
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); }
|
|
16
|
+
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; }
|
|
17
|
+
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; }
|
|
18
|
+
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; }
|
|
19
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
20
|
+
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); }
|
|
21
|
+
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); }
|
|
22
|
+
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); }); }; }
|
|
23
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
24
|
+
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."); }
|
|
25
|
+
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; } }
|
|
26
|
+
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; }
|
|
27
|
+
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; } }
|
|
28
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
29
|
+
var FeedPost = function FeedPost(_ref) {
|
|
30
|
+
var _post$author, _post$author2;
|
|
31
|
+
var post = _ref.post,
|
|
32
|
+
onDelete = _ref.onDelete,
|
|
33
|
+
onUpdate = _ref.onUpdate,
|
|
34
|
+
onLikeUpdate = _ref.onLikeUpdate,
|
|
35
|
+
onCommentUpdate = _ref.onCommentUpdate;
|
|
36
|
+
var _useState = (0, _react.useState)(false),
|
|
37
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
38
|
+
showComments = _useState2[0],
|
|
39
|
+
setShowComments = _useState2[1];
|
|
40
|
+
var _useState3 = (0, _react.useState)(false),
|
|
41
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
42
|
+
isEditing = _useState4[0],
|
|
43
|
+
setIsEditing = _useState4[1];
|
|
44
|
+
var _useState5 = (0, _react.useState)(post.content),
|
|
45
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
46
|
+
editContent = _useState6[0],
|
|
47
|
+
setEditContent = _useState6[1];
|
|
48
|
+
var _useState7 = (0, _react.useState)(false),
|
|
49
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
50
|
+
isSubmitting = _useState8[0],
|
|
51
|
+
setIsSubmitting = _useState8[1];
|
|
52
|
+
var formatDate = function formatDate(dateString) {
|
|
53
|
+
var date = new Date(dateString);
|
|
54
|
+
var now = new Date();
|
|
55
|
+
var diffInHours = (now - date) / (1000 * 60 * 60);
|
|
56
|
+
if (diffInHours < 1) {
|
|
57
|
+
var diffInMinutes = Math.floor((now - date) / (1000 * 60));
|
|
58
|
+
return "".concat(diffInMinutes, "m ago");
|
|
59
|
+
} else if (diffInHours < 24) {
|
|
60
|
+
return "".concat(Math.floor(diffInHours), "h ago");
|
|
61
|
+
} else {
|
|
62
|
+
return date.toLocaleDateString();
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
var handleEdit = /*#__PURE__*/function () {
|
|
66
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
67
|
+
var _yield$apiCall, data, ok, _t;
|
|
68
|
+
return _regenerator().w(function (_context) {
|
|
69
|
+
while (1) switch (_context.n) {
|
|
70
|
+
case 0:
|
|
71
|
+
if (editContent.trim()) {
|
|
72
|
+
_context.n = 1;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
return _context.a(2);
|
|
76
|
+
case 1:
|
|
77
|
+
setIsSubmitting(true);
|
|
78
|
+
_context.p = 2;
|
|
79
|
+
_context.n = 3;
|
|
80
|
+
return (0, _auth.apiCall)(null, "/feeds/".concat(post._id), null, {
|
|
81
|
+
method: 'PUT',
|
|
82
|
+
body: {
|
|
83
|
+
content: editContent.trim()
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
case 3:
|
|
87
|
+
_yield$apiCall = _context.v;
|
|
88
|
+
data = _yield$apiCall.data;
|
|
89
|
+
ok = _yield$apiCall.ok;
|
|
90
|
+
if (ok && data.success) {
|
|
91
|
+
onUpdate(_objectSpread(_objectSpread({}, post), {}, {
|
|
92
|
+
content: editContent.trim()
|
|
93
|
+
}));
|
|
94
|
+
setIsEditing(false);
|
|
95
|
+
}
|
|
96
|
+
_context.n = 5;
|
|
97
|
+
break;
|
|
98
|
+
case 4:
|
|
99
|
+
_context.p = 4;
|
|
100
|
+
_t = _context.v;
|
|
101
|
+
console.error('Error updating post:', _t);
|
|
102
|
+
case 5:
|
|
103
|
+
_context.p = 5;
|
|
104
|
+
setIsSubmitting(false);
|
|
105
|
+
return _context.f(5);
|
|
106
|
+
case 6:
|
|
107
|
+
return _context.a(2);
|
|
108
|
+
}
|
|
109
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
110
|
+
}));
|
|
111
|
+
return function handleEdit() {
|
|
112
|
+
return _ref2.apply(this, arguments);
|
|
113
|
+
};
|
|
114
|
+
}();
|
|
115
|
+
var handleDelete = /*#__PURE__*/function () {
|
|
116
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
117
|
+
var _yield$apiCall2, data, ok, _t2;
|
|
118
|
+
return _regenerator().w(function (_context2) {
|
|
119
|
+
while (1) switch (_context2.n) {
|
|
120
|
+
case 0:
|
|
121
|
+
if (confirm('Are you sure you want to delete this post?')) {
|
|
122
|
+
_context2.n = 1;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
return _context2.a(2);
|
|
126
|
+
case 1:
|
|
127
|
+
_context2.p = 1;
|
|
128
|
+
_context2.n = 2;
|
|
129
|
+
return (0, _auth.apiCall)(null, "/feeds/".concat(post._id), null, {
|
|
130
|
+
method: 'DELETE'
|
|
131
|
+
});
|
|
132
|
+
case 2:
|
|
133
|
+
_yield$apiCall2 = _context2.v;
|
|
134
|
+
data = _yield$apiCall2.data;
|
|
135
|
+
ok = _yield$apiCall2.ok;
|
|
136
|
+
if (ok && data.success) {
|
|
137
|
+
onDelete(post._id);
|
|
138
|
+
}
|
|
139
|
+
_context2.n = 4;
|
|
140
|
+
break;
|
|
141
|
+
case 3:
|
|
142
|
+
_context2.p = 3;
|
|
143
|
+
_t2 = _context2.v;
|
|
144
|
+
console.error('Error deleting post:', _t2);
|
|
145
|
+
case 4:
|
|
146
|
+
return _context2.a(2);
|
|
147
|
+
}
|
|
148
|
+
}, _callee2, null, [[1, 3]]);
|
|
149
|
+
}));
|
|
150
|
+
return function handleDelete() {
|
|
151
|
+
return _ref3.apply(this, arguments);
|
|
152
|
+
};
|
|
153
|
+
}();
|
|
154
|
+
var handleLikeChange = function handleLikeChange(newLikeCount) {
|
|
155
|
+
onLikeUpdate(post._id, newLikeCount);
|
|
156
|
+
};
|
|
157
|
+
var handleCommentChange = function handleCommentChange(newCommentCount) {
|
|
158
|
+
onCommentUpdate(post._id, newCommentCount);
|
|
159
|
+
};
|
|
160
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
161
|
+
className: "bg-white rounded-lg shadow-sm border p-6"
|
|
162
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
163
|
+
className: "flex items-center justify-between mb-4"
|
|
164
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
165
|
+
className: "flex items-center space-x-3"
|
|
166
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
167
|
+
className: "w-10 h-10 bg-blue-500 rounded-full flex items-center justify-center text-white font-semibold"
|
|
168
|
+
}, ((_post$author = post.author) === null || _post$author === void 0 || (_post$author = _post$author.name) === null || _post$author === void 0 ? void 0 : _post$author.charAt(0)) || 'U'), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
169
|
+
className: "font-semibold text-gray-900"
|
|
170
|
+
}, ((_post$author2 = post.author) === null || _post$author2 === void 0 ? void 0 : _post$author2.name) || 'Unknown User'), /*#__PURE__*/_react["default"].createElement("div", {
|
|
171
|
+
className: "text-sm text-gray-500"
|
|
172
|
+
}, formatDate(post.createdAt), !post.isPublic && /*#__PURE__*/_react["default"].createElement("span", {
|
|
173
|
+
className: "ml-2 text-blue-500"
|
|
174
|
+
}, "\uD83D\uDD12 Private")))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
175
|
+
className: "flex items-center space-x-2"
|
|
176
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
177
|
+
onClick: function onClick() {
|
|
178
|
+
return setIsEditing(!isEditing);
|
|
179
|
+
},
|
|
180
|
+
className: "text-gray-500 hover:text-gray-700 p-1"
|
|
181
|
+
}, "\u270F\uFE0F"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
182
|
+
onClick: handleDelete,
|
|
183
|
+
className: "text-gray-500 hover:text-red-500 p-1"
|
|
184
|
+
}, "\uD83D\uDDD1\uFE0F"))), isEditing ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
185
|
+
className: "mb-4"
|
|
186
|
+
}, /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
187
|
+
value: editContent,
|
|
188
|
+
onChange: function onChange(e) {
|
|
189
|
+
return setEditContent(e.target.value);
|
|
190
|
+
},
|
|
191
|
+
className: "w-full p-3 border border-gray-300 rounded-lg resize-none focus:ring-2 focus:ring-blue-500 focus:border-transparent",
|
|
192
|
+
rows: 3
|
|
193
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
194
|
+
className: "flex justify-end space-x-2 mt-2"
|
|
195
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
196
|
+
onClick: function onClick() {
|
|
197
|
+
return setIsEditing(false);
|
|
198
|
+
},
|
|
199
|
+
className: "px-3 py-1 text-sm bg-gray-200 text-gray-700 rounded hover:bg-gray-300"
|
|
200
|
+
}, "Cancel"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
201
|
+
onClick: handleEdit,
|
|
202
|
+
disabled: isSubmitting,
|
|
203
|
+
className: "px-3 py-1 text-sm bg-blue-600 text-white rounded hover:bg-blue-700 disabled:opacity-50"
|
|
204
|
+
}, isSubmitting ? 'Saving...' : 'Save'))) : /*#__PURE__*/_react["default"].createElement("div", {
|
|
205
|
+
className: "mb-4"
|
|
206
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
207
|
+
className: "text-gray-900 whitespace-pre-wrap"
|
|
208
|
+
}, post.content)), post.media && post.media.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
209
|
+
className: "mb-4"
|
|
210
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
211
|
+
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2"
|
|
212
|
+
}, post.media.map(function (file, index) {
|
|
213
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
214
|
+
key: index,
|
|
215
|
+
className: "relative"
|
|
216
|
+
}, file.type === 'image' ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
217
|
+
src: file.url,
|
|
218
|
+
alt: file.filename,
|
|
219
|
+
className: "w-full h-48 object-cover rounded-lg"
|
|
220
|
+
}) : /*#__PURE__*/_react["default"].createElement("div", {
|
|
221
|
+
className: "w-full h-48 bg-gray-100 rounded-lg flex items-center justify-center"
|
|
222
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
223
|
+
className: "text-center"
|
|
224
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
225
|
+
className: "text-3xl mb-2"
|
|
226
|
+
}, "\uD83D\uDCC4"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
227
|
+
className: "text-sm text-gray-600"
|
|
228
|
+
}, file.filename))));
|
|
229
|
+
}))), post.tags && post.tags.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
230
|
+
className: "mb-4"
|
|
231
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
232
|
+
className: "flex flex-wrap gap-1"
|
|
233
|
+
}, post.tags.map(function (tag, index) {
|
|
234
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
235
|
+
key: index,
|
|
236
|
+
className: "px-2 py-1 bg-blue-100 text-blue-800 text-xs rounded-full"
|
|
237
|
+
}, "#", tag);
|
|
238
|
+
}))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
239
|
+
className: "flex items-center justify-between mb-4 text-sm text-gray-500"
|
|
240
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
241
|
+
className: "flex items-center space-x-4"
|
|
242
|
+
}, /*#__PURE__*/_react["default"].createElement("span", null, post.likesCount || 0, " likes"), /*#__PURE__*/_react["default"].createElement("span", null, post.commentsCount || 0, " comments"))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
243
|
+
className: "flex items-center space-x-4 border-t pt-4"
|
|
244
|
+
}, /*#__PURE__*/_react["default"].createElement(_likes["default"], {
|
|
245
|
+
contentId: post._id,
|
|
246
|
+
onLikeChange: handleLikeChange
|
|
247
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
248
|
+
onClick: function onClick() {
|
|
249
|
+
return setShowComments(!showComments);
|
|
250
|
+
},
|
|
251
|
+
className: "flex items-center space-x-2 text-gray-500 hover:text-blue-600"
|
|
252
|
+
}, /*#__PURE__*/_react["default"].createElement("span", null, "\uD83D\uDCAC"), /*#__PURE__*/_react["default"].createElement("span", null, "Comment"))), showComments && /*#__PURE__*/_react["default"].createElement("div", {
|
|
253
|
+
className: "mt-4 border-t pt-4"
|
|
254
|
+
}, /*#__PURE__*/_react["default"].createElement(_comments["default"], {
|
|
255
|
+
contentId: post._id,
|
|
256
|
+
onCommentPosted: function onCommentPosted() {
|
|
257
|
+
var newCount = (post.commentsCount || 0) + 1;
|
|
258
|
+
handleCommentChange(newCount);
|
|
259
|
+
},
|
|
260
|
+
onCommentError: function onCommentError(error) {
|
|
261
|
+
return console.error('Comment error:', error);
|
|
262
|
+
},
|
|
263
|
+
maxComments: 10
|
|
264
|
+
})));
|
|
265
|
+
};
|
|
266
|
+
var _default = exports["default"] = FeedPost;
|
|
@@ -0,0 +1,242 @@
|
|
|
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 _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
+
var _auth = require("../utils/auth");
|
|
11
|
+
var _FeedPost = _interopRequireDefault(require("./components/FeedPost"));
|
|
12
|
+
var _CreatePost = _interopRequireDefault(require("./components/CreatePost"));
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
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 _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); }
|
|
15
|
+
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; }
|
|
16
|
+
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; }
|
|
17
|
+
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; }
|
|
18
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
19
|
+
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); }
|
|
20
|
+
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 }; })(); }
|
|
21
|
+
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); }
|
|
22
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
23
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
24
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
25
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
26
|
+
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); }
|
|
27
|
+
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); }); }; }
|
|
28
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
29
|
+
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."); }
|
|
30
|
+
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; } }
|
|
31
|
+
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; }
|
|
32
|
+
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; } }
|
|
33
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
34
|
+
var PowrBaseFeed = function PowrBaseFeed(_ref) {
|
|
35
|
+
var _ref$className = _ref.className,
|
|
36
|
+
className = _ref$className === void 0 ? '' : _ref$className,
|
|
37
|
+
_ref$style = _ref.style,
|
|
38
|
+
style = _ref$style === void 0 ? {} : _ref$style,
|
|
39
|
+
_ref$showCreatePost = _ref.showCreatePost,
|
|
40
|
+
showCreatePost = _ref$showCreatePost === void 0 ? true : _ref$showCreatePost,
|
|
41
|
+
_ref$maxPosts = _ref.maxPosts,
|
|
42
|
+
maxPosts = _ref$maxPosts === void 0 ? 20 : _ref$maxPosts,
|
|
43
|
+
_ref$autoRefresh = _ref.autoRefresh,
|
|
44
|
+
autoRefresh = _ref$autoRefresh === void 0 ? true : _ref$autoRefresh,
|
|
45
|
+
_ref$refreshInterval = _ref.refreshInterval,
|
|
46
|
+
refreshInterval = _ref$refreshInterval === void 0 ? 30000 : _ref$refreshInterval,
|
|
47
|
+
onPostCreated = _ref.onPostCreated,
|
|
48
|
+
onPostError = _ref.onPostError;
|
|
49
|
+
var _useState = (0, _react.useState)([]),
|
|
50
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
51
|
+
posts = _useState2[0],
|
|
52
|
+
setPosts = _useState2[1];
|
|
53
|
+
var _useState3 = (0, _react.useState)(true),
|
|
54
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
55
|
+
loading = _useState4[0],
|
|
56
|
+
setLoading = _useState4[1];
|
|
57
|
+
var _useState5 = (0, _react.useState)(true),
|
|
58
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
59
|
+
hasMore = _useState6[0],
|
|
60
|
+
setHasMore = _useState6[1];
|
|
61
|
+
var _useState7 = (0, _react.useState)(1),
|
|
62
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
63
|
+
page = _useState8[0],
|
|
64
|
+
setPage = _useState8[1];
|
|
65
|
+
var _useState9 = (0, _react.useState)(false),
|
|
66
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
67
|
+
refreshing = _useState0[0],
|
|
68
|
+
setRefreshing = _useState0[1];
|
|
69
|
+
var fetchPosts = /*#__PURE__*/function () {
|
|
70
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
71
|
+
var pageNum,
|
|
72
|
+
append,
|
|
73
|
+
_yield$apiCall,
|
|
74
|
+
data,
|
|
75
|
+
ok,
|
|
76
|
+
_args = arguments,
|
|
77
|
+
_t;
|
|
78
|
+
return _regenerator().w(function (_context) {
|
|
79
|
+
while (1) switch (_context.n) {
|
|
80
|
+
case 0:
|
|
81
|
+
pageNum = _args.length > 0 && _args[0] !== undefined ? _args[0] : 1;
|
|
82
|
+
append = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
|
|
83
|
+
_context.p = 1;
|
|
84
|
+
_context.n = 2;
|
|
85
|
+
return (0, _auth.apiCall)(null, "/feeds?page=".concat(pageNum, "&limit=").concat(maxPosts), null);
|
|
86
|
+
case 2:
|
|
87
|
+
_yield$apiCall = _context.v;
|
|
88
|
+
data = _yield$apiCall.data;
|
|
89
|
+
ok = _yield$apiCall.ok;
|
|
90
|
+
if (ok && data.success) {
|
|
91
|
+
if (append) {
|
|
92
|
+
setPosts(function (prev) {
|
|
93
|
+
return [].concat(_toConsumableArray(prev), _toConsumableArray(data.data));
|
|
94
|
+
});
|
|
95
|
+
} else {
|
|
96
|
+
setPosts(data.data);
|
|
97
|
+
}
|
|
98
|
+
setHasMore(data.pagination.page < data.pagination.pages);
|
|
99
|
+
setPage(data.pagination.page);
|
|
100
|
+
}
|
|
101
|
+
_context.n = 4;
|
|
102
|
+
break;
|
|
103
|
+
case 3:
|
|
104
|
+
_context.p = 3;
|
|
105
|
+
_t = _context.v;
|
|
106
|
+
console.error('Error fetching posts:', _t);
|
|
107
|
+
case 4:
|
|
108
|
+
_context.p = 4;
|
|
109
|
+
setLoading(false);
|
|
110
|
+
setRefreshing(false);
|
|
111
|
+
return _context.f(4);
|
|
112
|
+
case 5:
|
|
113
|
+
return _context.a(2);
|
|
114
|
+
}
|
|
115
|
+
}, _callee, null, [[1, 3, 4, 5]]);
|
|
116
|
+
}));
|
|
117
|
+
return function fetchPosts() {
|
|
118
|
+
return _ref2.apply(this, arguments);
|
|
119
|
+
};
|
|
120
|
+
}();
|
|
121
|
+
(0, _react.useEffect)(function () {
|
|
122
|
+
fetchPosts();
|
|
123
|
+
}, []);
|
|
124
|
+
(0, _react.useEffect)(function () {
|
|
125
|
+
if (!autoRefresh) return;
|
|
126
|
+
var interval = setInterval(function () {
|
|
127
|
+
setRefreshing(true);
|
|
128
|
+
fetchPosts();
|
|
129
|
+
}, refreshInterval);
|
|
130
|
+
return function () {
|
|
131
|
+
return clearInterval(interval);
|
|
132
|
+
};
|
|
133
|
+
}, [autoRefresh, refreshInterval]);
|
|
134
|
+
var handleLoadMore = function handleLoadMore() {
|
|
135
|
+
if (!hasMore || loading) return;
|
|
136
|
+
fetchPosts(page + 1, true);
|
|
137
|
+
};
|
|
138
|
+
var handlePostCreated = /*#__PURE__*/function () {
|
|
139
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(newPost) {
|
|
140
|
+
return _regenerator().w(function (_context2) {
|
|
141
|
+
while (1) switch (_context2.n) {
|
|
142
|
+
case 0:
|
|
143
|
+
setPosts(function (prev) {
|
|
144
|
+
return [newPost].concat(_toConsumableArray(prev));
|
|
145
|
+
});
|
|
146
|
+
if (onPostCreated) {
|
|
147
|
+
onPostCreated(newPost);
|
|
148
|
+
}
|
|
149
|
+
case 1:
|
|
150
|
+
return _context2.a(2);
|
|
151
|
+
}
|
|
152
|
+
}, _callee2);
|
|
153
|
+
}));
|
|
154
|
+
return function handlePostCreated(_x) {
|
|
155
|
+
return _ref3.apply(this, arguments);
|
|
156
|
+
};
|
|
157
|
+
}();
|
|
158
|
+
var handlePostDeleted = function handlePostDeleted(postId) {
|
|
159
|
+
setPosts(function (prev) {
|
|
160
|
+
return prev.filter(function (post) {
|
|
161
|
+
return post._id !== postId;
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
var handlePostUpdated = function handlePostUpdated(updatedPost) {
|
|
166
|
+
setPosts(function (prev) {
|
|
167
|
+
return prev.map(function (post) {
|
|
168
|
+
return post._id === updatedPost._id ? updatedPost : post;
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
var handleLikeUpdate = function handleLikeUpdate(postId, newLikeCount) {
|
|
173
|
+
setPosts(function (prev) {
|
|
174
|
+
return prev.map(function (post) {
|
|
175
|
+
return post._id === postId ? _objectSpread(_objectSpread({}, post), {}, {
|
|
176
|
+
likesCount: newLikeCount
|
|
177
|
+
}) : post;
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
var handleCommentUpdate = function handleCommentUpdate(postId, newCommentCount) {
|
|
182
|
+
setPosts(function (prev) {
|
|
183
|
+
return prev.map(function (post) {
|
|
184
|
+
return post._id === postId ? _objectSpread(_objectSpread({}, post), {}, {
|
|
185
|
+
commentsCount: newCommentCount
|
|
186
|
+
}) : post;
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
if (loading && posts.length === 0) {
|
|
191
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
192
|
+
className: "powrbase-feed ".concat(className),
|
|
193
|
+
style: style
|
|
194
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
195
|
+
className: "flex items-center justify-center p-8"
|
|
196
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
197
|
+
className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"
|
|
198
|
+
})));
|
|
199
|
+
}
|
|
200
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
201
|
+
className: "powrbase-feed ".concat(className),
|
|
202
|
+
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
203
|
+
maxWidth: '100%',
|
|
204
|
+
margin: '0 auto'
|
|
205
|
+
})
|
|
206
|
+
}, showCreatePost && /*#__PURE__*/_react["default"].createElement("div", {
|
|
207
|
+
className: "mb-6"
|
|
208
|
+
}, /*#__PURE__*/_react["default"].createElement(_CreatePost["default"], {
|
|
209
|
+
onPostCreated: handlePostCreated,
|
|
210
|
+
onPostError: onPostError
|
|
211
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
212
|
+
className: "space-y-6"
|
|
213
|
+
}, posts.map(function (post) {
|
|
214
|
+
return /*#__PURE__*/_react["default"].createElement(_FeedPost["default"], {
|
|
215
|
+
key: post._id,
|
|
216
|
+
post: post,
|
|
217
|
+
onDelete: handlePostDeleted,
|
|
218
|
+
onUpdate: handlePostUpdated,
|
|
219
|
+
onLikeUpdate: handleLikeUpdate,
|
|
220
|
+
onCommentUpdate: handleCommentUpdate
|
|
221
|
+
});
|
|
222
|
+
})), hasMore && /*#__PURE__*/_react["default"].createElement("div", {
|
|
223
|
+
className: "mt-6 text-center"
|
|
224
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
225
|
+
onClick: handleLoadMore,
|
|
226
|
+
disabled: loading,
|
|
227
|
+
className: "px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50"
|
|
228
|
+
}, loading ? 'Loading...' : 'Load More')), refreshing && /*#__PURE__*/_react["default"].createElement("div", {
|
|
229
|
+
className: "fixed top-4 right-4 bg-green-500 text-white px-3 py-1 rounded-full text-sm"
|
|
230
|
+
}, "Refreshing..."));
|
|
231
|
+
};
|
|
232
|
+
PowrBaseFeed.propTypes = {
|
|
233
|
+
className: _propTypes["default"].string,
|
|
234
|
+
style: _propTypes["default"].object,
|
|
235
|
+
showCreatePost: _propTypes["default"].bool,
|
|
236
|
+
maxPosts: _propTypes["default"].number,
|
|
237
|
+
autoRefresh: _propTypes["default"].bool,
|
|
238
|
+
refreshInterval: _propTypes["default"].number,
|
|
239
|
+
onPostCreated: _propTypes["default"].func,
|
|
240
|
+
onPostError: _propTypes["default"].func
|
|
241
|
+
};
|
|
242
|
+
var _default = exports["default"] = PowrBaseFeed;
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "PowrBaseComments", {
|
|
|
33
33
|
return _comments["default"];
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "PowrBaseFeed", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _feeds["default"];
|
|
40
|
+
}
|
|
41
|
+
});
|
|
36
42
|
Object.defineProperty(exports, "PowrBaseForm", {
|
|
37
43
|
enumerable: true,
|
|
38
44
|
get: function get() {
|
|
@@ -100,5 +106,6 @@ var _likes = _interopRequireDefault(require("./likes"));
|
|
|
100
106
|
var _auth = _interopRequireDefault(require("./auth"));
|
|
101
107
|
var _forms = _interopRequireDefault(require("./forms"));
|
|
102
108
|
var _chat = _interopRequireDefault(require("./chat"));
|
|
109
|
+
var _feeds = _interopRequireDefault(require("./feeds"));
|
|
103
110
|
var _admin = _interopRequireDefault(require("./admin"));
|
|
104
111
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|