powr-sdk-web 6.13.2 → 6.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/coreSectionLoaders.js +10 -0
- package/dist/index.js +0 -7
- package/dist/posts/List.js +66 -0
- package/dist/posts/Post.js +48 -0
- package/dist/posts/Writer.js +330 -0
- package/dist/posts/admin.js +373 -0
- package/dist/posts/server.js +185 -0
- package/package.json +1 -1
- package/dist/blogs/BlogCard.js +0 -44
- package/dist/blogs/index.js +0 -112
|
@@ -41,6 +41,16 @@ var CORE_SECTION_LOADERS = exports.CORE_SECTION_LOADERS = {
|
|
|
41
41
|
return _interopRequireWildcard(require('../feedback/admin'));
|
|
42
42
|
});
|
|
43
43
|
},
|
|
44
|
+
posts: function posts() {
|
|
45
|
+
return Promise.resolve().then(function () {
|
|
46
|
+
return _interopRequireWildcard(require('../posts/admin'));
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
blogs: function blogs() {
|
|
50
|
+
return Promise.resolve().then(function () {
|
|
51
|
+
return _interopRequireWildcard(require('../posts/admin'));
|
|
52
|
+
});
|
|
53
|
+
},
|
|
44
54
|
waitlist: function waitlist() {
|
|
45
55
|
return Promise.resolve().then(function () {
|
|
46
56
|
return _interopRequireWildcard(require('../waitlists/admin'));
|
package/dist/index.js
CHANGED
|
@@ -183,12 +183,6 @@ Object.defineProperty(exports, "PowrBaseAppWrapper", {
|
|
|
183
183
|
return _shell.PowrBaseAppWrapper;
|
|
184
184
|
}
|
|
185
185
|
});
|
|
186
|
-
Object.defineProperty(exports, "PowrBaseBlogs", {
|
|
187
|
-
enumerable: true,
|
|
188
|
-
get: function get() {
|
|
189
|
-
return _blogs["default"];
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
186
|
Object.defineProperty(exports, "PowrBaseChat", {
|
|
193
187
|
enumerable: true,
|
|
194
188
|
get: function get() {
|
|
@@ -715,7 +709,6 @@ var _payments = _interopRequireDefault(require("./payments"));
|
|
|
715
709
|
var _waitlists = _interopRequireDefault(require("./waitlists"));
|
|
716
710
|
var _activities = _interopRequireDefault(require("./activities"));
|
|
717
711
|
var _calendar = _interopRequireDefault(require("./calendar"));
|
|
718
|
-
var _blogs = _interopRequireDefault(require("./blogs"));
|
|
719
712
|
var _likes = _interopRequireDefault(require("./likes"));
|
|
720
713
|
var _auth = _interopRequireDefault(require("./auth"));
|
|
721
714
|
var _sso = _interopRequireWildcard(require("./sso"));
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = PowrPostList;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
|
+
function hrefOf(post, hrefFor) {
|
|
10
|
+
if (typeof hrefFor === "function") return hrefFor(post);
|
|
11
|
+
return "/blog/".concat(post.slug);
|
|
12
|
+
}
|
|
13
|
+
function PowrPostList(_ref) {
|
|
14
|
+
var posts = _ref.posts,
|
|
15
|
+
Link = _ref.Link,
|
|
16
|
+
hrefFor = _ref.hrefFor,
|
|
17
|
+
empty = _ref.empty;
|
|
18
|
+
var items = Array.isArray(posts) ? posts : [];
|
|
19
|
+
if (!items.length) return /*#__PURE__*/_react["default"].createElement("p", null, empty || "No posts yet.");
|
|
20
|
+
var A = Link || "a";
|
|
21
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
22
|
+
style: {
|
|
23
|
+
display: "grid",
|
|
24
|
+
gap: 16
|
|
25
|
+
}
|
|
26
|
+
}, items.map(function (post) {
|
|
27
|
+
return /*#__PURE__*/_react["default"].createElement(A, {
|
|
28
|
+
key: post._id || post.slug,
|
|
29
|
+
href: hrefOf(post, hrefFor),
|
|
30
|
+
style: {
|
|
31
|
+
color: "inherit",
|
|
32
|
+
textDecoration: "none"
|
|
33
|
+
}
|
|
34
|
+
}, /*#__PURE__*/_react["default"].createElement("article", {
|
|
35
|
+
style: {
|
|
36
|
+
borderBottom: "1px solid #e5e7eb",
|
|
37
|
+
paddingBottom: 16
|
|
38
|
+
}
|
|
39
|
+
}, post.coverUrl ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
40
|
+
src: post.coverUrl,
|
|
41
|
+
alt: "",
|
|
42
|
+
style: {
|
|
43
|
+
width: "100%",
|
|
44
|
+
maxHeight: 220,
|
|
45
|
+
objectFit: "cover",
|
|
46
|
+
borderRadius: 8
|
|
47
|
+
}
|
|
48
|
+
}) : null, /*#__PURE__*/_react["default"].createElement("h2", {
|
|
49
|
+
style: {
|
|
50
|
+
margin: "8px 0 4px",
|
|
51
|
+
fontSize: 22
|
|
52
|
+
}
|
|
53
|
+
}, post.title), post.description ? /*#__PURE__*/_react["default"].createElement("p", {
|
|
54
|
+
style: {
|
|
55
|
+
margin: 0,
|
|
56
|
+
color: "#4b5563"
|
|
57
|
+
}
|
|
58
|
+
}, post.description) : null, /*#__PURE__*/_react["default"].createElement("p", {
|
|
59
|
+
style: {
|
|
60
|
+
margin: "6px 0 0",
|
|
61
|
+
fontSize: 13,
|
|
62
|
+
color: "#6b7280"
|
|
63
|
+
}
|
|
64
|
+
}, [post.author && post.author.displayName, post.readMinutes ? "".concat(post.readMinutes, " min") : ""].filter(Boolean).join(" · "))));
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = PowrPost;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactMarkdown = _interopRequireDefault(require("react-markdown"));
|
|
9
|
+
var _remarkGfm = _interopRequireDefault(require("remark-gfm"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
+
function PowrPost(_ref) {
|
|
12
|
+
var post = _ref.post,
|
|
13
|
+
cta = _ref.cta;
|
|
14
|
+
if (!post) return null;
|
|
15
|
+
var when = post.publishedAt ? new Date(post.publishedAt).toLocaleDateString() : "";
|
|
16
|
+
return /*#__PURE__*/_react["default"].createElement("article", {
|
|
17
|
+
style: {
|
|
18
|
+
maxWidth: 720
|
|
19
|
+
}
|
|
20
|
+
}, post.coverUrl ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
21
|
+
src: post.coverUrl,
|
|
22
|
+
alt: "",
|
|
23
|
+
style: {
|
|
24
|
+
width: "100%",
|
|
25
|
+
maxHeight: 360,
|
|
26
|
+
objectFit: "cover",
|
|
27
|
+
borderRadius: 8
|
|
28
|
+
}
|
|
29
|
+
}) : null, /*#__PURE__*/_react["default"].createElement("h1", {
|
|
30
|
+
style: {
|
|
31
|
+
marginBottom: 4
|
|
32
|
+
}
|
|
33
|
+
}, post.title), /*#__PURE__*/_react["default"].createElement("p", {
|
|
34
|
+
style: {
|
|
35
|
+
marginTop: 0,
|
|
36
|
+
color: "#6b7280",
|
|
37
|
+
fontSize: 14
|
|
38
|
+
}
|
|
39
|
+
}, [post.author && post.author.displayName, when, post.readMinutes ? "".concat(post.readMinutes, " min") : ""].filter(Boolean).join(" · ")), post.description ? /*#__PURE__*/_react["default"].createElement("p", {
|
|
40
|
+
style: {
|
|
41
|
+
fontSize: 18
|
|
42
|
+
}
|
|
43
|
+
}, post.description) : null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
44
|
+
className: "powr-post-body"
|
|
45
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactMarkdown["default"], {
|
|
46
|
+
remarkPlugins: [_remarkGfm["default"]]
|
|
47
|
+
}, post.bodyMd || "")), cta || null);
|
|
48
|
+
}
|
|
@@ -0,0 +1,330 @@
|
|
|
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"] = PowrPostWriter;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _auth = require("../utils/auth");
|
|
10
|
+
var _session = require("../session");
|
|
11
|
+
var _uploader = _interopRequireDefault(require("../uploader"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
13
|
+
var cache;
|
|
14
|
+
function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, "default": e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
|
|
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, e) { if ("object" != _typeof(t) || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? 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 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); }
|
|
23
|
+
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); }); }; }
|
|
24
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
25
|
+
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."); }
|
|
26
|
+
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; } }
|
|
27
|
+
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; }
|
|
28
|
+
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; } }
|
|
29
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
30
|
+
var field = {
|
|
31
|
+
display: "block",
|
|
32
|
+
width: "100%",
|
|
33
|
+
marginTop: 4,
|
|
34
|
+
marginBottom: 12,
|
|
35
|
+
padding: 8
|
|
36
|
+
};
|
|
37
|
+
function PowrPostWriter(_ref) {
|
|
38
|
+
var projectId = _ref.projectId,
|
|
39
|
+
apiUrl = _ref.apiUrl;
|
|
40
|
+
var session = (0, _session.usePowrSession)();
|
|
41
|
+
var _useState = (0, _react.useState)([]),
|
|
42
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
43
|
+
rows = _useState2[0],
|
|
44
|
+
setRows = _useState2[1];
|
|
45
|
+
var _useState3 = (0, _react.useState)(null),
|
|
46
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
47
|
+
current = _useState4[0],
|
|
48
|
+
setCurrent = _useState4[1];
|
|
49
|
+
var _useState5 = (0, _react.useState)(""),
|
|
50
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
51
|
+
error = _useState6[0],
|
|
52
|
+
setError = _useState6[1];
|
|
53
|
+
var _useState7 = (0, _react.useState)(""),
|
|
54
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
55
|
+
notice = _useState8[0],
|
|
56
|
+
setNotice = _useState8[1];
|
|
57
|
+
var _useState9 = (0, _react.useState)(true),
|
|
58
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
59
|
+
loading = _useState0[0],
|
|
60
|
+
setLoading = _useState0[1];
|
|
61
|
+
var headers = session !== null && session !== void 0 && session.token ? {
|
|
62
|
+
Authorization: "Bearer ".concat(session.token)
|
|
63
|
+
} : undefined;
|
|
64
|
+
var load = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
65
|
+
var _yield$apiCall, data, ok, response;
|
|
66
|
+
return _regenerator().w(function (_context) {
|
|
67
|
+
while (1) switch (_context.n) {
|
|
68
|
+
case 0:
|
|
69
|
+
setLoading(true);
|
|
70
|
+
setError("");
|
|
71
|
+
_context.n = 1;
|
|
72
|
+
return (0, _auth.apiCall)(apiUrl, "/posts/mine", projectId, {
|
|
73
|
+
headers: headers
|
|
74
|
+
});
|
|
75
|
+
case 1:
|
|
76
|
+
_yield$apiCall = _context.v;
|
|
77
|
+
data = _yield$apiCall.data;
|
|
78
|
+
ok = _yield$apiCall.ok;
|
|
79
|
+
response = _yield$apiCall.response;
|
|
80
|
+
if (response && response.status === 403) {
|
|
81
|
+
setError("Ask an admin to add you as a writer.");
|
|
82
|
+
setRows([]);
|
|
83
|
+
} else if (!ok || !(data !== null && data !== void 0 && data.success)) {
|
|
84
|
+
setError((data === null || data === void 0 ? void 0 : data.message) || "Could not load your posts.");
|
|
85
|
+
} else {
|
|
86
|
+
setRows(Array.isArray(data.data) ? data.data : []);
|
|
87
|
+
}
|
|
88
|
+
setLoading(false);
|
|
89
|
+
case 2:
|
|
90
|
+
return _context.a(2);
|
|
91
|
+
}
|
|
92
|
+
}, _callee);
|
|
93
|
+
})), [apiUrl, projectId, session === null || session === void 0 ? void 0 : session.token]);
|
|
94
|
+
(0, _react.useEffect)(function () {
|
|
95
|
+
load()["catch"](function () {
|
|
96
|
+
setError("Could not load your posts.");
|
|
97
|
+
setLoading(false);
|
|
98
|
+
});
|
|
99
|
+
}, [load]);
|
|
100
|
+
function blank() {
|
|
101
|
+
setCurrent({
|
|
102
|
+
title: "",
|
|
103
|
+
description: "",
|
|
104
|
+
tags: "",
|
|
105
|
+
coverUrl: "",
|
|
106
|
+
bodyMd: "",
|
|
107
|
+
status: "draft"
|
|
108
|
+
});
|
|
109
|
+
setNotice("");
|
|
110
|
+
}
|
|
111
|
+
function open(row) {
|
|
112
|
+
setCurrent({
|
|
113
|
+
_id: row._id,
|
|
114
|
+
title: row.title || "",
|
|
115
|
+
description: row.description || "",
|
|
116
|
+
tags: (row.tags || []).join(", "),
|
|
117
|
+
coverUrl: row.coverUrl || "",
|
|
118
|
+
bodyMd: row.bodyMd || "",
|
|
119
|
+
status: row.status,
|
|
120
|
+
slug: row.slug,
|
|
121
|
+
slugLocked: row.slugLocked
|
|
122
|
+
});
|
|
123
|
+
setNotice("");
|
|
124
|
+
}
|
|
125
|
+
function setField(key, value) {
|
|
126
|
+
setCurrent(function (prev) {
|
|
127
|
+
return _objectSpread(_objectSpread({}, prev || {}), {}, _defineProperty({}, key, value));
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function save() {
|
|
131
|
+
return _save.apply(this, arguments);
|
|
132
|
+
}
|
|
133
|
+
function _save() {
|
|
134
|
+
_save = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
135
|
+
var body, path, _yield$apiCall2, data, ok;
|
|
136
|
+
return _regenerator().w(function (_context2) {
|
|
137
|
+
while (1) switch (_context2.n) {
|
|
138
|
+
case 0:
|
|
139
|
+
if (current) {
|
|
140
|
+
_context2.n = 1;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
return _context2.a(2);
|
|
144
|
+
case 1:
|
|
145
|
+
setError("");
|
|
146
|
+
setNotice("");
|
|
147
|
+
body = {
|
|
148
|
+
title: current.title,
|
|
149
|
+
description: current.description,
|
|
150
|
+
bodyMd: current.bodyMd,
|
|
151
|
+
coverUrl: current.coverUrl,
|
|
152
|
+
tags: current.tags
|
|
153
|
+
};
|
|
154
|
+
path = current._id ? "/posts/".concat(current._id) : "/posts";
|
|
155
|
+
_context2.n = 2;
|
|
156
|
+
return (0, _auth.apiCall)(apiUrl, path, projectId, {
|
|
157
|
+
method: current._id ? "PATCH" : "POST",
|
|
158
|
+
headers: headers,
|
|
159
|
+
body: body
|
|
160
|
+
});
|
|
161
|
+
case 2:
|
|
162
|
+
_yield$apiCall2 = _context2.v;
|
|
163
|
+
data = _yield$apiCall2.data;
|
|
164
|
+
ok = _yield$apiCall2.ok;
|
|
165
|
+
if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
|
|
166
|
+
_context2.n = 3;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
setError((data === null || data === void 0 ? void 0 : data.message) || "Could not save.");
|
|
170
|
+
return _context2.a(2);
|
|
171
|
+
case 3:
|
|
172
|
+
setNotice("Saved.");
|
|
173
|
+
open(data.data);
|
|
174
|
+
_context2.n = 4;
|
|
175
|
+
return load();
|
|
176
|
+
case 4:
|
|
177
|
+
return _context2.a(2);
|
|
178
|
+
}
|
|
179
|
+
}, _callee2);
|
|
180
|
+
}));
|
|
181
|
+
return _save.apply(this, arguments);
|
|
182
|
+
}
|
|
183
|
+
function submit() {
|
|
184
|
+
return _submit.apply(this, arguments);
|
|
185
|
+
}
|
|
186
|
+
function _submit() {
|
|
187
|
+
_submit = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
188
|
+
var _yield$apiCall3, data, ok;
|
|
189
|
+
return _regenerator().w(function (_context3) {
|
|
190
|
+
while (1) switch (_context3.n) {
|
|
191
|
+
case 0:
|
|
192
|
+
if (current !== null && current !== void 0 && current._id) {
|
|
193
|
+
_context3.n = 1;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
setError("Save the draft first.");
|
|
197
|
+
return _context3.a(2);
|
|
198
|
+
case 1:
|
|
199
|
+
_context3.n = 2;
|
|
200
|
+
return (0, _auth.apiCall)(apiUrl, "/posts/".concat(current._id, "/submit"), projectId, {
|
|
201
|
+
method: "POST",
|
|
202
|
+
headers: headers
|
|
203
|
+
});
|
|
204
|
+
case 2:
|
|
205
|
+
_yield$apiCall3 = _context3.v;
|
|
206
|
+
data = _yield$apiCall3.data;
|
|
207
|
+
ok = _yield$apiCall3.ok;
|
|
208
|
+
if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
|
|
209
|
+
_context3.n = 3;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
setError((data === null || data === void 0 ? void 0 : data.message) || "Could not send it.");
|
|
213
|
+
return _context3.a(2);
|
|
214
|
+
case 3:
|
|
215
|
+
setNotice("Sent for review.");
|
|
216
|
+
open(data.data);
|
|
217
|
+
_context3.n = 4;
|
|
218
|
+
return load();
|
|
219
|
+
case 4:
|
|
220
|
+
return _context3.a(2);
|
|
221
|
+
}
|
|
222
|
+
}, _callee3);
|
|
223
|
+
}));
|
|
224
|
+
return _submit.apply(this, arguments);
|
|
225
|
+
}
|
|
226
|
+
if (loading) return /*#__PURE__*/_react["default"].createElement("p", null, "Loading your posts\u2026");
|
|
227
|
+
if (error && !rows.length && !current) return /*#__PURE__*/_react["default"].createElement("p", null, error);
|
|
228
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
229
|
+
style: {
|
|
230
|
+
display: "grid",
|
|
231
|
+
gridTemplateColumns: "240px 1fr",
|
|
232
|
+
gap: 24
|
|
233
|
+
}
|
|
234
|
+
}, /*#__PURE__*/_react["default"].createElement("aside", null, /*#__PURE__*/_react["default"].createElement("button", {
|
|
235
|
+
type: "button",
|
|
236
|
+
onClick: blank
|
|
237
|
+
}, "New post"), /*#__PURE__*/_react["default"].createElement("ul", {
|
|
238
|
+
style: {
|
|
239
|
+
listStyle: "none",
|
|
240
|
+
padding: 0
|
|
241
|
+
}
|
|
242
|
+
}, rows.map(function (row) {
|
|
243
|
+
return /*#__PURE__*/_react["default"].createElement("li", {
|
|
244
|
+
key: row._id,
|
|
245
|
+
style: {
|
|
246
|
+
marginTop: 8
|
|
247
|
+
}
|
|
248
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
249
|
+
type: "button",
|
|
250
|
+
onClick: function onClick() {
|
|
251
|
+
return open(row);
|
|
252
|
+
},
|
|
253
|
+
style: {
|
|
254
|
+
textAlign: "left"
|
|
255
|
+
}
|
|
256
|
+
}, row.title || "Untitled", /*#__PURE__*/_react["default"].createElement("div", {
|
|
257
|
+
style: {
|
|
258
|
+
fontSize: 12,
|
|
259
|
+
color: "#6b7280"
|
|
260
|
+
}
|
|
261
|
+
}, row.status)));
|
|
262
|
+
}))), current ? /*#__PURE__*/_react["default"].createElement("form", {
|
|
263
|
+
onSubmit: function onSubmit(event) {
|
|
264
|
+
event.preventDefault();
|
|
265
|
+
save();
|
|
266
|
+
}
|
|
267
|
+
}, error ? /*#__PURE__*/_react["default"].createElement("p", null, error) : null, notice ? /*#__PURE__*/_react["default"].createElement("p", null, notice) : null, /*#__PURE__*/_react["default"].createElement("label", null, "Title", /*#__PURE__*/_react["default"].createElement("input", {
|
|
268
|
+
style: field,
|
|
269
|
+
value: current.title,
|
|
270
|
+
onChange: function onChange(event) {
|
|
271
|
+
return setField("title", event.target.value);
|
|
272
|
+
}
|
|
273
|
+
})), /*#__PURE__*/_react["default"].createElement("label", null, "Short description", /*#__PURE__*/_react["default"].createElement("input", {
|
|
274
|
+
style: field,
|
|
275
|
+
value: current.description,
|
|
276
|
+
onChange: function onChange(event) {
|
|
277
|
+
return setField("description", event.target.value);
|
|
278
|
+
}
|
|
279
|
+
})), /*#__PURE__*/_react["default"].createElement("label", null, "Tags", /*#__PURE__*/_react["default"].createElement("input", {
|
|
280
|
+
style: field,
|
|
281
|
+
value: current.tags,
|
|
282
|
+
onChange: function onChange(event) {
|
|
283
|
+
return setField("tags", event.target.value);
|
|
284
|
+
},
|
|
285
|
+
placeholder: "vibe, cursor"
|
|
286
|
+
})), /*#__PURE__*/_react["default"].createElement("label", null, "Cover image link", /*#__PURE__*/_react["default"].createElement("input", {
|
|
287
|
+
style: field,
|
|
288
|
+
value: current.coverUrl,
|
|
289
|
+
onChange: function onChange(event) {
|
|
290
|
+
return setField("coverUrl", event.target.value);
|
|
291
|
+
}
|
|
292
|
+
})), /*#__PURE__*/_react["default"].createElement(_uploader["default"], {
|
|
293
|
+
apiUrl: apiUrl,
|
|
294
|
+
projectId: projectId,
|
|
295
|
+
maxFiles: 1,
|
|
296
|
+
acceptedFileTypes: "image/*",
|
|
297
|
+
onUploadComplete: function onUploadComplete(files) {
|
|
298
|
+
var last = files && files[files.length - 1];
|
|
299
|
+
if (!last || !last.url) return;
|
|
300
|
+
setCurrent(function (prev) {
|
|
301
|
+
return _objectSpread(_objectSpread({}, prev || {}), {}, {
|
|
302
|
+
bodyMd: "".concat(prev && prev.bodyMd || "", "\n\n.concat(last.url, ")\n"),
|
|
303
|
+
coverUrl: prev && prev.coverUrl || last.url
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}), /*#__PURE__*/_react["default"].createElement("label", null, "Article", /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
308
|
+
style: _objectSpread(_objectSpread({}, field), {}, {
|
|
309
|
+
minHeight: 280,
|
|
310
|
+
fontFamily: "inherit"
|
|
311
|
+
}),
|
|
312
|
+
value: current.bodyMd,
|
|
313
|
+
onChange: function onChange(event) {
|
|
314
|
+
return setField("bodyMd", event.target.value);
|
|
315
|
+
}
|
|
316
|
+
})), /*#__PURE__*/_react["default"].createElement("button", {
|
|
317
|
+
type: "submit"
|
|
318
|
+
}, "Save draft"), current._id && current.status === "draft" ? /*#__PURE__*/_react["default"].createElement("button", {
|
|
319
|
+
type: "button",
|
|
320
|
+
onClick: submit,
|
|
321
|
+
style: {
|
|
322
|
+
marginLeft: 8
|
|
323
|
+
}
|
|
324
|
+
}, "Send for review") : null, current.slug ? /*#__PURE__*/_react["default"].createElement("p", {
|
|
325
|
+
style: {
|
|
326
|
+
fontSize: 13,
|
|
327
|
+
color: "#6b7280"
|
|
328
|
+
}
|
|
329
|
+
}, "Link: /blog/", current.slug) : null) : /*#__PURE__*/_react["default"].createElement("p", null, "Pick a post, or start a new one."));
|
|
330
|
+
}
|
|
@@ -0,0 +1,373 @@
|
|
|
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"] = PowrPostsAdmin;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _auth = require("../utils/auth");
|
|
10
|
+
var _session = require("../session");
|
|
11
|
+
var cache;
|
|
12
|
+
function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, "default": e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
|
|
13
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
16
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
17
|
+
function _toPrimitive(t, e) { if ("object" != _typeof(t) || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
|
|
18
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
19
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
20
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
21
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
22
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
23
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
24
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
25
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
26
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
27
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
28
|
+
var input = {
|
|
29
|
+
marginRight: 8,
|
|
30
|
+
marginBottom: 8,
|
|
31
|
+
padding: 6
|
|
32
|
+
};
|
|
33
|
+
function PowrPostsAdmin(_ref) {
|
|
34
|
+
var projectId = _ref.projectId,
|
|
35
|
+
apiUrl = _ref.apiUrl;
|
|
36
|
+
var session = (0, _session.usePowrSession)();
|
|
37
|
+
var _useState = (0, _react.useState)("posts"),
|
|
38
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
39
|
+
tab = _useState2[0],
|
|
40
|
+
setTab = _useState2[1];
|
|
41
|
+
var _useState3 = (0, _react.useState)([]),
|
|
42
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
43
|
+
rows = _useState4[0],
|
|
44
|
+
setRows = _useState4[1];
|
|
45
|
+
var _useState5 = (0, _react.useState)([]),
|
|
46
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
47
|
+
authors = _useState6[0],
|
|
48
|
+
setAuthors = _useState6[1];
|
|
49
|
+
var _useState7 = (0, _react.useState)(""),
|
|
50
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
51
|
+
status = _useState8[0],
|
|
52
|
+
setStatus = _useState8[1];
|
|
53
|
+
var _useState9 = (0, _react.useState)(""),
|
|
54
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
55
|
+
error = _useState0[0],
|
|
56
|
+
setError = _useState0[1];
|
|
57
|
+
var _useState1 = (0, _react.useState)(true),
|
|
58
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
59
|
+
loading = _useState10[0],
|
|
60
|
+
setLoading = _useState10[1];
|
|
61
|
+
var _useState11 = (0, _react.useState)({
|
|
62
|
+
displayName: "",
|
|
63
|
+
phone: "",
|
|
64
|
+
role: "writer"
|
|
65
|
+
}),
|
|
66
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
67
|
+
form = _useState12[0],
|
|
68
|
+
setForm = _useState12[1];
|
|
69
|
+
var headers = session !== null && session !== void 0 && session.token ? {
|
|
70
|
+
Authorization: "Bearer ".concat(session.token)
|
|
71
|
+
} : undefined;
|
|
72
|
+
var loadPosts = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
73
|
+
var path, _yield$apiCall, data, ok;
|
|
74
|
+
return _regenerator().w(function (_context) {
|
|
75
|
+
while (1) switch (_context.n) {
|
|
76
|
+
case 0:
|
|
77
|
+
path = status ? "/posts/all?status=".concat(encodeURIComponent(status)) : "/posts/all";
|
|
78
|
+
_context.n = 1;
|
|
79
|
+
return (0, _auth.apiCall)(apiUrl, path, projectId, {
|
|
80
|
+
headers: headers
|
|
81
|
+
});
|
|
82
|
+
case 1:
|
|
83
|
+
_yield$apiCall = _context.v;
|
|
84
|
+
data = _yield$apiCall.data;
|
|
85
|
+
ok = _yield$apiCall.ok;
|
|
86
|
+
if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
|
|
87
|
+
_context.n = 2;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
setError((data === null || data === void 0 ? void 0 : data.message) || "Could not load posts.");
|
|
91
|
+
setRows([]);
|
|
92
|
+
return _context.a(2);
|
|
93
|
+
case 2:
|
|
94
|
+
setRows(Array.isArray(data.data) ? data.data : []);
|
|
95
|
+
case 3:
|
|
96
|
+
return _context.a(2);
|
|
97
|
+
}
|
|
98
|
+
}, _callee);
|
|
99
|
+
})), [apiUrl, projectId, session === null || session === void 0 ? void 0 : session.token, status]);
|
|
100
|
+
var loadAuthors = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
101
|
+
var _yield$apiCall2, data, ok;
|
|
102
|
+
return _regenerator().w(function (_context2) {
|
|
103
|
+
while (1) switch (_context2.n) {
|
|
104
|
+
case 0:
|
|
105
|
+
_context2.n = 1;
|
|
106
|
+
return (0, _auth.apiCall)(apiUrl, "/posts/authors", projectId, {
|
|
107
|
+
headers: headers
|
|
108
|
+
});
|
|
109
|
+
case 1:
|
|
110
|
+
_yield$apiCall2 = _context2.v;
|
|
111
|
+
data = _yield$apiCall2.data;
|
|
112
|
+
ok = _yield$apiCall2.ok;
|
|
113
|
+
if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
|
|
114
|
+
_context2.n = 2;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
setError((data === null || data === void 0 ? void 0 : data.message) || "Could not load writers.");
|
|
118
|
+
setAuthors([]);
|
|
119
|
+
return _context2.a(2);
|
|
120
|
+
case 2:
|
|
121
|
+
setAuthors(Array.isArray(data.data) ? data.data : []);
|
|
122
|
+
case 3:
|
|
123
|
+
return _context2.a(2);
|
|
124
|
+
}
|
|
125
|
+
}, _callee2);
|
|
126
|
+
})), [apiUrl, projectId, session === null || session === void 0 ? void 0 : session.token]);
|
|
127
|
+
(0, _react.useEffect)(function () {
|
|
128
|
+
setLoading(true);
|
|
129
|
+
setError("");
|
|
130
|
+
var job = tab === "posts" ? loadPosts() : loadAuthors();
|
|
131
|
+
job["catch"](function () {
|
|
132
|
+
return setError("Could not load.");
|
|
133
|
+
})["finally"](function () {
|
|
134
|
+
return setLoading(false);
|
|
135
|
+
});
|
|
136
|
+
}, [tab, loadPosts, loadAuthors]);
|
|
137
|
+
function act(_x, _x2) {
|
|
138
|
+
return _act.apply(this, arguments);
|
|
139
|
+
}
|
|
140
|
+
function _act() {
|
|
141
|
+
_act = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(id, action) {
|
|
142
|
+
var _yield$apiCall3, data, ok;
|
|
143
|
+
return _regenerator().w(function (_context3) {
|
|
144
|
+
while (1) switch (_context3.n) {
|
|
145
|
+
case 0:
|
|
146
|
+
setError("");
|
|
147
|
+
_context3.n = 1;
|
|
148
|
+
return (0, _auth.apiCall)(apiUrl, "/posts/".concat(id, "/").concat(action), projectId, {
|
|
149
|
+
method: "POST",
|
|
150
|
+
headers: headers
|
|
151
|
+
});
|
|
152
|
+
case 1:
|
|
153
|
+
_yield$apiCall3 = _context3.v;
|
|
154
|
+
data = _yield$apiCall3.data;
|
|
155
|
+
ok = _yield$apiCall3.ok;
|
|
156
|
+
if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
|
|
157
|
+
_context3.n = 2;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
setError((data === null || data === void 0 ? void 0 : data.message) || "Could not update.");
|
|
161
|
+
return _context3.a(2);
|
|
162
|
+
case 2:
|
|
163
|
+
_context3.n = 3;
|
|
164
|
+
return loadPosts();
|
|
165
|
+
case 3:
|
|
166
|
+
return _context3.a(2);
|
|
167
|
+
}
|
|
168
|
+
}, _callee3);
|
|
169
|
+
}));
|
|
170
|
+
return _act.apply(this, arguments);
|
|
171
|
+
}
|
|
172
|
+
function addAuthor(_x3) {
|
|
173
|
+
return _addAuthor.apply(this, arguments);
|
|
174
|
+
}
|
|
175
|
+
function _addAuthor() {
|
|
176
|
+
_addAuthor = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(event) {
|
|
177
|
+
var _yield$apiCall4, data, ok;
|
|
178
|
+
return _regenerator().w(function (_context4) {
|
|
179
|
+
while (1) switch (_context4.n) {
|
|
180
|
+
case 0:
|
|
181
|
+
event.preventDefault();
|
|
182
|
+
setError("");
|
|
183
|
+
_context4.n = 1;
|
|
184
|
+
return (0, _auth.apiCall)(apiUrl, "/posts/authors", projectId, {
|
|
185
|
+
method: "POST",
|
|
186
|
+
headers: headers,
|
|
187
|
+
body: form
|
|
188
|
+
});
|
|
189
|
+
case 1:
|
|
190
|
+
_yield$apiCall4 = _context4.v;
|
|
191
|
+
data = _yield$apiCall4.data;
|
|
192
|
+
ok = _yield$apiCall4.ok;
|
|
193
|
+
if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
|
|
194
|
+
_context4.n = 2;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
setError((data === null || data === void 0 ? void 0 : data.message) || "Could not add that writer.");
|
|
198
|
+
return _context4.a(2);
|
|
199
|
+
case 2:
|
|
200
|
+
setForm({
|
|
201
|
+
displayName: "",
|
|
202
|
+
phone: "",
|
|
203
|
+
role: "writer"
|
|
204
|
+
});
|
|
205
|
+
_context4.n = 3;
|
|
206
|
+
return loadAuthors();
|
|
207
|
+
case 3:
|
|
208
|
+
return _context4.a(2);
|
|
209
|
+
}
|
|
210
|
+
}, _callee4);
|
|
211
|
+
}));
|
|
212
|
+
return _addAuthor.apply(this, arguments);
|
|
213
|
+
}
|
|
214
|
+
function removeAuthor(_x4) {
|
|
215
|
+
return _removeAuthor.apply(this, arguments);
|
|
216
|
+
}
|
|
217
|
+
function _removeAuthor() {
|
|
218
|
+
_removeAuthor = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(id) {
|
|
219
|
+
var _yield$apiCall5, data, ok;
|
|
220
|
+
return _regenerator().w(function (_context5) {
|
|
221
|
+
while (1) switch (_context5.n) {
|
|
222
|
+
case 0:
|
|
223
|
+
setError("");
|
|
224
|
+
_context5.n = 1;
|
|
225
|
+
return (0, _auth.apiCall)(apiUrl, "/posts/authors/".concat(id), projectId, {
|
|
226
|
+
method: "DELETE",
|
|
227
|
+
headers: headers
|
|
228
|
+
});
|
|
229
|
+
case 1:
|
|
230
|
+
_yield$apiCall5 = _context5.v;
|
|
231
|
+
data = _yield$apiCall5.data;
|
|
232
|
+
ok = _yield$apiCall5.ok;
|
|
233
|
+
if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
|
|
234
|
+
_context5.n = 2;
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
setError((data === null || data === void 0 ? void 0 : data.message) || "Could not remove.");
|
|
238
|
+
return _context5.a(2);
|
|
239
|
+
case 2:
|
|
240
|
+
_context5.n = 3;
|
|
241
|
+
return loadAuthors();
|
|
242
|
+
case 3:
|
|
243
|
+
return _context5.a(2);
|
|
244
|
+
}
|
|
245
|
+
}, _callee5);
|
|
246
|
+
}));
|
|
247
|
+
return _removeAuthor.apply(this, arguments);
|
|
248
|
+
}
|
|
249
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
250
|
+
style: {
|
|
251
|
+
marginBottom: 12
|
|
252
|
+
}
|
|
253
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
254
|
+
type: "button",
|
|
255
|
+
onClick: function onClick() {
|
|
256
|
+
return setTab("posts");
|
|
257
|
+
}
|
|
258
|
+
}, "Posts"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
259
|
+
type: "button",
|
|
260
|
+
onClick: function onClick() {
|
|
261
|
+
return setTab("authors");
|
|
262
|
+
},
|
|
263
|
+
style: {
|
|
264
|
+
marginLeft: 8
|
|
265
|
+
}
|
|
266
|
+
}, "Writers")), error ? /*#__PURE__*/_react["default"].createElement("p", null, error) : null, loading ? /*#__PURE__*/_react["default"].createElement("p", null, "Loading\u2026") : null, tab === "posts" && !loading ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("select", {
|
|
267
|
+
style: input,
|
|
268
|
+
value: status,
|
|
269
|
+
onChange: function onChange(event) {
|
|
270
|
+
return setStatus(event.target.value);
|
|
271
|
+
}
|
|
272
|
+
}, /*#__PURE__*/_react["default"].createElement("option", {
|
|
273
|
+
value: ""
|
|
274
|
+
}, "All"), /*#__PURE__*/_react["default"].createElement("option", {
|
|
275
|
+
value: "draft"
|
|
276
|
+
}, "Draft"), /*#__PURE__*/_react["default"].createElement("option", {
|
|
277
|
+
value: "in_review"
|
|
278
|
+
}, "In review"), /*#__PURE__*/_react["default"].createElement("option", {
|
|
279
|
+
value: "published"
|
|
280
|
+
}, "Published"), /*#__PURE__*/_react["default"].createElement("option", {
|
|
281
|
+
value: "archived"
|
|
282
|
+
}, "Archived")), !rows.length ? /*#__PURE__*/_react["default"].createElement("p", null, "No posts.") : null, /*#__PURE__*/_react["default"].createElement("table", {
|
|
283
|
+
style: {
|
|
284
|
+
width: "100%",
|
|
285
|
+
borderCollapse: "collapse",
|
|
286
|
+
fontSize: 14
|
|
287
|
+
}
|
|
288
|
+
}, /*#__PURE__*/_react["default"].createElement("tbody", null, rows.map(function (row) {
|
|
289
|
+
var _row$author;
|
|
290
|
+
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
291
|
+
key: row._id
|
|
292
|
+
}, /*#__PURE__*/_react["default"].createElement("td", {
|
|
293
|
+
style: {
|
|
294
|
+
padding: 8,
|
|
295
|
+
borderBottom: "1px solid #e5e7eb"
|
|
296
|
+
}
|
|
297
|
+
}, /*#__PURE__*/_react["default"].createElement("strong", null, row.title), /*#__PURE__*/_react["default"].createElement("div", {
|
|
298
|
+
style: {
|
|
299
|
+
color: "#6b7280"
|
|
300
|
+
}
|
|
301
|
+
}, row.status, " \xB7 ", ((_row$author = row.author) === null || _row$author === void 0 ? void 0 : _row$author.displayName) || "No name")), /*#__PURE__*/_react["default"].createElement("td", {
|
|
302
|
+
style: {
|
|
303
|
+
padding: 8,
|
|
304
|
+
borderBottom: "1px solid #e5e7eb",
|
|
305
|
+
whiteSpace: "nowrap"
|
|
306
|
+
}
|
|
307
|
+
}, row.status !== "published" ? /*#__PURE__*/_react["default"].createElement("button", {
|
|
308
|
+
type: "button",
|
|
309
|
+
onClick: function onClick() {
|
|
310
|
+
return act(row._id, "publish");
|
|
311
|
+
}
|
|
312
|
+
}, "Publish") : /*#__PURE__*/_react["default"].createElement("button", {
|
|
313
|
+
type: "button",
|
|
314
|
+
onClick: function onClick() {
|
|
315
|
+
return act(row._id, "unpublish");
|
|
316
|
+
}
|
|
317
|
+
}, "Take down"), row.status !== "archived" ? /*#__PURE__*/_react["default"].createElement("button", {
|
|
318
|
+
type: "button",
|
|
319
|
+
onClick: function onClick() {
|
|
320
|
+
return act(row._id, "archive");
|
|
321
|
+
},
|
|
322
|
+
style: {
|
|
323
|
+
marginLeft: 8
|
|
324
|
+
}
|
|
325
|
+
}, "Archive") : null));
|
|
326
|
+
})))) : null, tab === "authors" && !loading ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("form", {
|
|
327
|
+
onSubmit: addAuthor
|
|
328
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
329
|
+
style: input,
|
|
330
|
+
placeholder: "Name",
|
|
331
|
+
value: form.displayName,
|
|
332
|
+
onChange: function onChange(event) {
|
|
333
|
+
return setForm(_objectSpread(_objectSpread({}, form), {}, {
|
|
334
|
+
displayName: event.target.value
|
|
335
|
+
}));
|
|
336
|
+
}
|
|
337
|
+
}), /*#__PURE__*/_react["default"].createElement("input", {
|
|
338
|
+
style: input,
|
|
339
|
+
placeholder: "Phone",
|
|
340
|
+
value: form.phone,
|
|
341
|
+
onChange: function onChange(event) {
|
|
342
|
+
return setForm(_objectSpread(_objectSpread({}, form), {}, {
|
|
343
|
+
phone: event.target.value
|
|
344
|
+
}));
|
|
345
|
+
}
|
|
346
|
+
}), /*#__PURE__*/_react["default"].createElement("select", {
|
|
347
|
+
style: input,
|
|
348
|
+
value: form.role,
|
|
349
|
+
onChange: function onChange(event) {
|
|
350
|
+
return setForm(_objectSpread(_objectSpread({}, form), {}, {
|
|
351
|
+
role: event.target.value
|
|
352
|
+
}));
|
|
353
|
+
}
|
|
354
|
+
}, /*#__PURE__*/_react["default"].createElement("option", {
|
|
355
|
+
value: "writer"
|
|
356
|
+
}, "Writer"), /*#__PURE__*/_react["default"].createElement("option", {
|
|
357
|
+
value: "editor"
|
|
358
|
+
}, "Editor")), /*#__PURE__*/_react["default"].createElement("button", {
|
|
359
|
+
type: "submit"
|
|
360
|
+
}, "Add writer")), /*#__PURE__*/_react["default"].createElement("ul", null, authors.map(function (author) {
|
|
361
|
+
return /*#__PURE__*/_react["default"].createElement("li", {
|
|
362
|
+
key: author._id
|
|
363
|
+
}, author.displayName, " \xB7 ", author.handle, " \xB7 ", author.role, /*#__PURE__*/_react["default"].createElement("button", {
|
|
364
|
+
type: "button",
|
|
365
|
+
onClick: function onClick() {
|
|
366
|
+
return removeAuthor(author._id);
|
|
367
|
+
},
|
|
368
|
+
style: {
|
|
369
|
+
marginLeft: 8
|
|
370
|
+
}
|
|
371
|
+
}, "Remove"));
|
|
372
|
+
}))) : null);
|
|
373
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
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 }; })(); }
|
|
4
|
+
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); }
|
|
5
|
+
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); }
|
|
6
|
+
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); }); }; }
|
|
7
|
+
var _require = require("../config"),
|
|
8
|
+
resolvePowrApiUrl = _require.resolvePowrApiUrl;
|
|
9
|
+
function readJson(_x) {
|
|
10
|
+
return _readJson.apply(this, arguments);
|
|
11
|
+
}
|
|
12
|
+
function _readJson() {
|
|
13
|
+
_readJson = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(url) {
|
|
14
|
+
var response, data, _t;
|
|
15
|
+
return _regenerator().w(function (_context) {
|
|
16
|
+
while (1) switch (_context.p = _context.n) {
|
|
17
|
+
case 0:
|
|
18
|
+
_context.n = 1;
|
|
19
|
+
return fetch(url);
|
|
20
|
+
case 1:
|
|
21
|
+
response = _context.v;
|
|
22
|
+
data = null;
|
|
23
|
+
_context.p = 2;
|
|
24
|
+
_context.n = 3;
|
|
25
|
+
return response.json();
|
|
26
|
+
case 3:
|
|
27
|
+
data = _context.v;
|
|
28
|
+
_context.n = 5;
|
|
29
|
+
break;
|
|
30
|
+
case 4:
|
|
31
|
+
_context.p = 4;
|
|
32
|
+
_t = _context.v;
|
|
33
|
+
data = null;
|
|
34
|
+
case 5:
|
|
35
|
+
return _context.a(2, {
|
|
36
|
+
ok: response.ok,
|
|
37
|
+
status: response.status,
|
|
38
|
+
data: data
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}, _callee, null, [[2, 4]]);
|
|
42
|
+
}));
|
|
43
|
+
return _readJson.apply(this, arguments);
|
|
44
|
+
}
|
|
45
|
+
function hostFor(apiUrl, projectId, path, query) {
|
|
46
|
+
var host = resolvePowrApiUrl(apiUrl);
|
|
47
|
+
var params = new URLSearchParams();
|
|
48
|
+
if (projectId) params.set("projectId", String(projectId));
|
|
49
|
+
Object.keys(query || {}).forEach(function (key) {
|
|
50
|
+
var value = query[key];
|
|
51
|
+
if (value !== undefined && value !== null && value !== "") params.set(key, String(value));
|
|
52
|
+
});
|
|
53
|
+
var qs = params.toString();
|
|
54
|
+
return "".concat(host).concat(path).concat(qs ? "?".concat(qs) : "");
|
|
55
|
+
}
|
|
56
|
+
function fetchPosts() {
|
|
57
|
+
return _fetchPosts.apply(this, arguments);
|
|
58
|
+
}
|
|
59
|
+
function _fetchPosts() {
|
|
60
|
+
_fetchPosts = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
61
|
+
var _ref,
|
|
62
|
+
projectId,
|
|
63
|
+
apiUrl,
|
|
64
|
+
tag,
|
|
65
|
+
author,
|
|
66
|
+
page,
|
|
67
|
+
limit,
|
|
68
|
+
_yield$readJson,
|
|
69
|
+
ok,
|
|
70
|
+
data,
|
|
71
|
+
_args2 = arguments;
|
|
72
|
+
return _regenerator().w(function (_context2) {
|
|
73
|
+
while (1) switch (_context2.n) {
|
|
74
|
+
case 0:
|
|
75
|
+
_ref = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, projectId = _ref.projectId, apiUrl = _ref.apiUrl, tag = _ref.tag, author = _ref.author, page = _ref.page, limit = _ref.limit;
|
|
76
|
+
_context2.n = 1;
|
|
77
|
+
return readJson(hostFor(apiUrl, projectId, "/posts", {
|
|
78
|
+
tag: tag,
|
|
79
|
+
author: author,
|
|
80
|
+
page: page,
|
|
81
|
+
limit: limit
|
|
82
|
+
}));
|
|
83
|
+
case 1:
|
|
84
|
+
_yield$readJson = _context2.v;
|
|
85
|
+
ok = _yield$readJson.ok;
|
|
86
|
+
data = _yield$readJson.data;
|
|
87
|
+
if (!(!ok || !data || !data.success)) {
|
|
88
|
+
_context2.n = 2;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
return _context2.a(2, []);
|
|
92
|
+
case 2:
|
|
93
|
+
return _context2.a(2, Array.isArray(data.data) ? data.data : []);
|
|
94
|
+
}
|
|
95
|
+
}, _callee2);
|
|
96
|
+
}));
|
|
97
|
+
return _fetchPosts.apply(this, arguments);
|
|
98
|
+
}
|
|
99
|
+
function fetchPost() {
|
|
100
|
+
return _fetchPost.apply(this, arguments);
|
|
101
|
+
}
|
|
102
|
+
function _fetchPost() {
|
|
103
|
+
_fetchPost = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
104
|
+
var _ref2,
|
|
105
|
+
projectId,
|
|
106
|
+
apiUrl,
|
|
107
|
+
slug,
|
|
108
|
+
_yield$readJson2,
|
|
109
|
+
ok,
|
|
110
|
+
data,
|
|
111
|
+
_args3 = arguments;
|
|
112
|
+
return _regenerator().w(function (_context3) {
|
|
113
|
+
while (1) switch (_context3.n) {
|
|
114
|
+
case 0:
|
|
115
|
+
_ref2 = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}, projectId = _ref2.projectId, apiUrl = _ref2.apiUrl, slug = _ref2.slug;
|
|
116
|
+
if (slug) {
|
|
117
|
+
_context3.n = 1;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
return _context3.a(2, null);
|
|
121
|
+
case 1:
|
|
122
|
+
_context3.n = 2;
|
|
123
|
+
return readJson(hostFor(apiUrl, projectId, "/posts/".concat(encodeURIComponent(slug))));
|
|
124
|
+
case 2:
|
|
125
|
+
_yield$readJson2 = _context3.v;
|
|
126
|
+
ok = _yield$readJson2.ok;
|
|
127
|
+
data = _yield$readJson2.data;
|
|
128
|
+
if (!(!ok || !data || !data.success)) {
|
|
129
|
+
_context3.n = 3;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
return _context3.a(2, null);
|
|
133
|
+
case 3:
|
|
134
|
+
return _context3.a(2, data.data || null);
|
|
135
|
+
}
|
|
136
|
+
}, _callee3);
|
|
137
|
+
}));
|
|
138
|
+
return _fetchPost.apply(this, arguments);
|
|
139
|
+
}
|
|
140
|
+
function fetchAuthor() {
|
|
141
|
+
return _fetchAuthor.apply(this, arguments);
|
|
142
|
+
}
|
|
143
|
+
function _fetchAuthor() {
|
|
144
|
+
_fetchAuthor = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
|
|
145
|
+
var _ref3,
|
|
146
|
+
projectId,
|
|
147
|
+
apiUrl,
|
|
148
|
+
handle,
|
|
149
|
+
_yield$readJson3,
|
|
150
|
+
ok,
|
|
151
|
+
data,
|
|
152
|
+
_args4 = arguments;
|
|
153
|
+
return _regenerator().w(function (_context4) {
|
|
154
|
+
while (1) switch (_context4.n) {
|
|
155
|
+
case 0:
|
|
156
|
+
_ref3 = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {}, projectId = _ref3.projectId, apiUrl = _ref3.apiUrl, handle = _ref3.handle;
|
|
157
|
+
if (handle) {
|
|
158
|
+
_context4.n = 1;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
return _context4.a(2, null);
|
|
162
|
+
case 1:
|
|
163
|
+
_context4.n = 2;
|
|
164
|
+
return readJson(hostFor(apiUrl, projectId, "/posts/authors/".concat(encodeURIComponent(handle))));
|
|
165
|
+
case 2:
|
|
166
|
+
_yield$readJson3 = _context4.v;
|
|
167
|
+
ok = _yield$readJson3.ok;
|
|
168
|
+
data = _yield$readJson3.data;
|
|
169
|
+
if (!(!ok || !data || !data.success)) {
|
|
170
|
+
_context4.n = 3;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
return _context4.a(2, null);
|
|
174
|
+
case 3:
|
|
175
|
+
return _context4.a(2, data.data || null);
|
|
176
|
+
}
|
|
177
|
+
}, _callee4);
|
|
178
|
+
}));
|
|
179
|
+
return _fetchAuthor.apply(this, arguments);
|
|
180
|
+
}
|
|
181
|
+
module.exports = {
|
|
182
|
+
fetchPosts: fetchPosts,
|
|
183
|
+
fetchPost: fetchPost,
|
|
184
|
+
fetchAuthor: fetchAuthor
|
|
185
|
+
};
|
package/package.json
CHANGED
package/dist/blogs/BlogCard.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _react = _interopRequireDefault(require("react"));
|
|
8
|
-
var _likes = _interopRequireDefault(require("../likes"));
|
|
9
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
10
|
-
var BlogCard = function BlogCard(_ref) {
|
|
11
|
-
var imageUrl = _ref.imageUrl,
|
|
12
|
-
tags = _ref.tags,
|
|
13
|
-
title = _ref.title,
|
|
14
|
-
description = _ref.description,
|
|
15
|
-
author = _ref.author,
|
|
16
|
-
date = _ref.date,
|
|
17
|
-
projectId = _ref.projectId,
|
|
18
|
-
userId = _ref.userId,
|
|
19
|
-
contentId = _ref.contentId;
|
|
20
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
21
|
-
className: "bg-white rounded-2xl shadow-lg overflow-hidden flex flex-col transition-transform hover:scale-105 duration-200 w-full"
|
|
22
|
-
}, /*#__PURE__*/_react["default"].createElement("img", {
|
|
23
|
-
src: imageUrl || "https://tse3.mm.bing.net/th/id/OIP.rlpNF9-6aK12Vm8dSRAGjgHaHa?pid=Api&P=0&h=220",
|
|
24
|
-
alt: title,
|
|
25
|
-
className: "w-full h-48 object-cover object-center"
|
|
26
|
-
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
27
|
-
className: "p-6 flex flex-col flex-1"
|
|
28
|
-
}, /*#__PURE__*/_react["default"].createElement("h3", {
|
|
29
|
-
className: "text-xl font-bold mb-2 text-gray-900"
|
|
30
|
-
}, title), /*#__PURE__*/_react["default"].createElement("p", {
|
|
31
|
-
className: "text-gray-600 text-sm flex-1 mb-4"
|
|
32
|
-
}, description), /*#__PURE__*/_react["default"].createElement("div", {
|
|
33
|
-
className: "flex items-center justify-between mt-auto pt-2"
|
|
34
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
35
|
-
className: "font-semibold text-sm text-gray-800"
|
|
36
|
-
}, author || 'Unknown'), /*#__PURE__*/_react["default"].createElement("div", {
|
|
37
|
-
className: "text-xs text-gray-500"
|
|
38
|
-
}, date)), /*#__PURE__*/_react["default"].createElement(_likes["default"], {
|
|
39
|
-
userId: userId,
|
|
40
|
-
projectId: projectId,
|
|
41
|
-
contentId: contentId
|
|
42
|
-
}))));
|
|
43
|
-
};
|
|
44
|
-
var _default = exports["default"] = BlogCard;
|
package/dist/blogs/index.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _BlogCard = _interopRequireDefault(require("./BlogCard"));
|
|
9
|
-
var _auth = require("../utils/auth");
|
|
10
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
-
var cache;
|
|
12
|
-
function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, "default": e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
|
|
13
|
-
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
14
|
-
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
15
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
16
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
17
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
18
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
19
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
20
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
21
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
22
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
23
|
-
var PowrBaseBlogs = function PowrBaseBlogs(_ref) {
|
|
24
|
-
var projectId = _ref.projectId,
|
|
25
|
-
userId = _ref.userId,
|
|
26
|
-
apiUrl = _ref.apiUrl;
|
|
27
|
-
var _useState = (0, _react.useState)([]),
|
|
28
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
29
|
-
blogs = _useState2[0],
|
|
30
|
-
setBlogs = _useState2[1];
|
|
31
|
-
var _useState3 = (0, _react.useState)(true),
|
|
32
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
33
|
-
loading = _useState4[0],
|
|
34
|
-
setLoading = _useState4[1];
|
|
35
|
-
var _useState5 = (0, _react.useState)(null),
|
|
36
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
37
|
-
error = _useState6[0],
|
|
38
|
-
setError = _useState6[1];
|
|
39
|
-
(0, _react.useEffect)(function () {
|
|
40
|
-
var fetchBlogs = /*#__PURE__*/function () {
|
|
41
|
-
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
42
|
-
var _yield$apiCall, data, ok, _t;
|
|
43
|
-
return _regenerator().w(function (_context) {
|
|
44
|
-
while (1) switch (_context.p = _context.n) {
|
|
45
|
-
case 0:
|
|
46
|
-
_context.p = 0;
|
|
47
|
-
_context.n = 1;
|
|
48
|
-
return (0, _auth.apiCall)(apiUrl, "/blogs", projectId);
|
|
49
|
-
case 1:
|
|
50
|
-
_yield$apiCall = _context.v;
|
|
51
|
-
data = _yield$apiCall.data;
|
|
52
|
-
ok = _yield$apiCall.ok;
|
|
53
|
-
setBlogs((data === null || data === void 0 ? void 0 : data.blogs) || []);
|
|
54
|
-
_context.n = 3;
|
|
55
|
-
break;
|
|
56
|
-
case 2:
|
|
57
|
-
_context.p = 2;
|
|
58
|
-
_t = _context.v;
|
|
59
|
-
setError(_t.message);
|
|
60
|
-
case 3:
|
|
61
|
-
_context.p = 3;
|
|
62
|
-
setLoading(false);
|
|
63
|
-
return _context.f(3);
|
|
64
|
-
case 4:
|
|
65
|
-
return _context.a(2);
|
|
66
|
-
}
|
|
67
|
-
}, _callee, null, [[0, 2, 3, 4]]);
|
|
68
|
-
}));
|
|
69
|
-
return function fetchBlogs() {
|
|
70
|
-
return _ref2.apply(this, arguments);
|
|
71
|
-
};
|
|
72
|
-
}();
|
|
73
|
-
fetchBlogs();
|
|
74
|
-
}, [projectId]);
|
|
75
|
-
if (loading) return /*#__PURE__*/_react["default"].createElement("div", {
|
|
76
|
-
className: "text-center py-10"
|
|
77
|
-
}, "Loading blogs...");
|
|
78
|
-
if (error) return /*#__PURE__*/_react["default"].createElement("div", {
|
|
79
|
-
className: "text-center text-red-500 py-10"
|
|
80
|
-
}, error);
|
|
81
|
-
if (!blogs.length) return /*#__PURE__*/_react["default"].createElement("div", {
|
|
82
|
-
className: "text-center py-10"
|
|
83
|
-
}, "No blogs found.");
|
|
84
|
-
var formatDate = function formatDate(dateStr) {
|
|
85
|
-
if (!dateStr) return "";
|
|
86
|
-
var date = new Date(dateStr);
|
|
87
|
-
return date.toLocaleDateString(undefined, {
|
|
88
|
-
year: 'numeric',
|
|
89
|
-
month: 'short',
|
|
90
|
-
day: 'numeric'
|
|
91
|
-
});
|
|
92
|
-
};
|
|
93
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
94
|
-
className: "py-10 px-4 flex justify-center"
|
|
95
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
96
|
-
className: "w-full max-w-lg flex flex-col gap-8 items-center"
|
|
97
|
-
}, blogs.map(function (blog) {
|
|
98
|
-
return /*#__PURE__*/_react["default"].createElement(_BlogCard["default"], {
|
|
99
|
-
key: blog._id,
|
|
100
|
-
imageUrl: blog.imageUrl,
|
|
101
|
-
tags: blog.tags,
|
|
102
|
-
title: blog.title,
|
|
103
|
-
description: blog.description,
|
|
104
|
-
author: blog.author,
|
|
105
|
-
date: formatDate(blog.date || blog.createdAt),
|
|
106
|
-
projectId: projectId,
|
|
107
|
-
userId: userId,
|
|
108
|
-
contentId: blog._id
|
|
109
|
-
});
|
|
110
|
-
})));
|
|
111
|
-
};
|
|
112
|
-
var _default = exports["default"] = PowrBaseBlogs;
|