@openedx/plugin-sample 0.0.0 → 3.0.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/index.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CourseList", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _plugin["default"];
10
+ }
11
+ });
12
+ var _plugin = _interopRequireDefault(require("./plugin"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_plugin","_interopRequireDefault","require","e","__esModule"],"sources":["../src/index.jsx"],"sourcesContent":["import CourseList from './plugin'\n\n/* If we want to add more plugins, we would import them above and then add them to the list of exports below. */\nexport {CourseList}\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAiC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,gBAAAA,CAAA","ignoreList":[]}
package/dist/plugin.js ADDED
@@ -0,0 +1,327 @@
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 _frontendPlatform = require("@edx/frontend-platform");
10
+ var _auth = require("@edx/frontend-platform/auth");
11
+ var _paragon = require("@openedx/paragon");
12
+ var _icons = require("@openedx/paragon/icons");
13
+ var _jsxRuntime = require("react/jsx-runtime");
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 _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); }
15
+ 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 }; })(); }
16
+ 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); }
17
+ 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); }
18
+ 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); }); }; }
19
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
20
+ 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."); }
21
+ 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; } }
22
+ 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; }
23
+ 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; } }
24
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
25
+ var CourseList = function CourseList(_ref) {
26
+ var courseListData = _ref.courseListData;
27
+ var _useState = (0, _react.useState)(new Set()),
28
+ _useState2 = _slicedToArray(_useState, 2),
29
+ archivedCourses = _useState2[0],
30
+ setArchivedCourses = _useState2[1];
31
+ var _useState3 = (0, _react.useState)(new Map()),
32
+ _useState4 = _slicedToArray(_useState3, 2),
33
+ loadingStates = _useState4[0],
34
+ setLoadingStates = _useState4[1];
35
+
36
+ // Safety check for courseListData
37
+ if (!courseListData || !courseListData.visibleList) {
38
+ console.log("DEBUG: courseListData not available yet");
39
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
40
+ children: "Loading courses..."
41
+ });
42
+ }
43
+
44
+ // Extract the "visibleList"
45
+ var courses = courseListData.visibleList;
46
+
47
+ // Log the full course data structure for debugging
48
+ console.log("DEBUG: Full courseListData structure:", courseListData);
49
+ console.log("DEBUG: First course data object:", courses === null || courses === void 0 ? void 0 : courses[0]);
50
+ (0, _react.useEffect)(function () {
51
+ var fetchArchivedCourses = /*#__PURE__*/function () {
52
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
53
+ var client, lmsBaseUrl, response, archivedCourseIds, _t;
54
+ return _regenerator().w(function (_context) {
55
+ while (1) switch (_context.p = _context.n) {
56
+ case 0:
57
+ _context.p = 0;
58
+ client = (0, _auth.getAuthenticatedHttpClient)();
59
+ lmsBaseUrl = (0, _frontendPlatform.getConfig)().LMS_BASE_URL;
60
+ console.log("DEBUG: Fetching archived courses from:", "".concat(lmsBaseUrl, "/sample-plugin/api/v1/course-archive-status/"));
61
+ _context.n = 1;
62
+ return client.get("".concat(lmsBaseUrl, "/sample-plugin/api/v1/course-archive-status/"), {
63
+ params: {
64
+ is_archived: true
65
+ }
66
+ });
67
+ case 1:
68
+ response = _context.v;
69
+ console.log("DEBUG: Archived courses API response:", response.data);
70
+ archivedCourseIds = new Set(response.data.results.map(function (item) {
71
+ return item.course_id;
72
+ }));
73
+ console.log("DEBUG: Archived course IDs from API:", Array.from(archivedCourseIds));
74
+ setArchivedCourses(archivedCourseIds);
75
+ _context.n = 3;
76
+ break;
77
+ case 2:
78
+ _context.p = 2;
79
+ _t = _context.v;
80
+ console.error("Failed to fetch archived courses:", _t);
81
+ case 3:
82
+ return _context.a(2);
83
+ }
84
+ }, _callee, null, [[0, 2]]);
85
+ }));
86
+ return function fetchArchivedCourses() {
87
+ return _ref2.apply(this, arguments);
88
+ };
89
+ }();
90
+ fetchArchivedCourses();
91
+ }, []);
92
+
93
+ // Log course IDs we're trying to match against
94
+ console.log("DEBUG: Course IDs from course data:");
95
+ courses.forEach(function (courseData, index) {
96
+ var _courseData$courseRun;
97
+ console.log("Course ".concat(index, ":"), {
98
+ cardId: courseData.cardId,
99
+ "courseRun.courseId": (_courseData$courseRun = courseData.courseRun) === null || _courseData$courseRun === void 0 ? void 0 : _courseData$courseRun.courseId,
100
+ "courseRun object keys": Object.keys(courseData.courseRun || {}),
101
+ "full courseRun object": courseData.courseRun
102
+ });
103
+ });
104
+ console.log("DEBUG: Archived course IDs to match:", Array.from(archivedCourses));
105
+
106
+ // Separate courses into active and archived
107
+ var activeCourses = courses.filter(function (courseData) {
108
+ var _courseData$courseRun2, _courseData$course;
109
+ var courseId = (_courseData$courseRun2 = courseData.courseRun) === null || _courseData$courseRun2 === void 0 ? void 0 : _courseData$courseRun2.courseId;
110
+ var isArchived = archivedCourses.has(courseId);
111
+ console.log("DEBUG: Course \"".concat((_courseData$course = courseData.course) === null || _courseData$course === void 0 ? void 0 : _courseData$course.courseName, "\" (ID: ").concat(courseId, ") - archived: ").concat(isArchived));
112
+ return !isArchived;
113
+ });
114
+ var archivedCoursesList = courses.filter(function (courseData) {
115
+ var _courseData$courseRun3;
116
+ var courseId = (_courseData$courseRun3 = courseData.courseRun) === null || _courseData$courseRun3 === void 0 ? void 0 : _courseData$courseRun3.courseId;
117
+ return archivedCourses.has(courseId);
118
+ });
119
+ console.log("DEBUG: Active courses count:", activeCourses.length);
120
+ console.log("DEBUG: Archived courses count:", archivedCoursesList.length);
121
+ var handleArchiveToggle = /*#__PURE__*/function () {
122
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(courseId, isCurrentlyArchived) {
123
+ var client, lmsBaseUrl, url, listResponse, existingRecord, _listResponse, _existingRecord, createResponse, _error$response, _error$response2, _error$response3, _t2;
124
+ return _regenerator().w(function (_context2) {
125
+ while (1) switch (_context2.p = _context2.n) {
126
+ case 0:
127
+ console.log("DEBUG: Toggling archive for course ".concat(courseId, ", currently archived: ").concat(isCurrentlyArchived));
128
+ setLoadingStates(function (prev) {
129
+ return new Map(prev).set(courseId, true);
130
+ });
131
+ _context2.p = 1;
132
+ client = (0, _auth.getAuthenticatedHttpClient)();
133
+ lmsBaseUrl = (0, _frontendPlatform.getConfig)().LMS_BASE_URL;
134
+ url = "".concat(lmsBaseUrl, "/sample-plugin/api/v1/course-archive-status/");
135
+ if (!isCurrentlyArchived) {
136
+ _context2.n = 4;
137
+ break;
138
+ }
139
+ _context2.n = 2;
140
+ return client.get(url, {
141
+ params: {
142
+ course_id: courseId
143
+ }
144
+ });
145
+ case 2:
146
+ listResponse = _context2.v;
147
+ if (!(listResponse.data.results.length > 0)) {
148
+ _context2.n = 3;
149
+ break;
150
+ }
151
+ existingRecord = listResponse.data.results[0];
152
+ _context2.n = 3;
153
+ return client.patch("".concat(url).concat(existingRecord.id, "/"), {
154
+ course_id: courseId,
155
+ is_archived: false
156
+ });
157
+ case 3:
158
+ // Update local state
159
+ setArchivedCourses(function (prev) {
160
+ var newSet = new Set(prev);
161
+ newSet["delete"](courseId);
162
+ return newSet;
163
+ });
164
+ _context2.n = 10;
165
+ break;
166
+ case 4:
167
+ _context2.n = 5;
168
+ return client.get(url, {
169
+ params: {
170
+ course_id: courseId
171
+ }
172
+ });
173
+ case 5:
174
+ _listResponse = _context2.v;
175
+ if (!(_listResponse.data.results.length > 0)) {
176
+ _context2.n = 7;
177
+ break;
178
+ }
179
+ // Update existing record
180
+ _existingRecord = _listResponse.data.results[0];
181
+ _context2.n = 6;
182
+ return client.patch("".concat(url).concat(_existingRecord.id, "/"), {
183
+ is_archived: true
184
+ });
185
+ case 6:
186
+ _context2.n = 9;
187
+ break;
188
+ case 7:
189
+ // Create new record
190
+ console.log("DEBUG: Creating new archive record for course ".concat(courseId));
191
+ _context2.n = 8;
192
+ return client.post(url, {
193
+ course_id: courseId,
194
+ is_archived: true
195
+ });
196
+ case 8:
197
+ createResponse = _context2.v;
198
+ console.log("DEBUG: Create response:", createResponse.data);
199
+ case 9:
200
+ // Update local state
201
+ console.log("DEBUG: Adding course ".concat(courseId, " to archived set"));
202
+ setArchivedCourses(function (prev) {
203
+ var newSet = new Set(prev).add(courseId);
204
+ console.log("DEBUG: New archived courses set:", Array.from(newSet));
205
+ return newSet;
206
+ });
207
+ case 10:
208
+ console.log("DEBUG: Successfully ".concat(isCurrentlyArchived ? "unarchived" : "archived", " course ").concat(courseId));
209
+ _context2.n = 12;
210
+ break;
211
+ case 11:
212
+ _context2.p = 11;
213
+ _t2 = _context2.v;
214
+ console.error("Failed to ".concat(isCurrentlyArchived ? "unarchive" : "archive", " course:"), _t2);
215
+ console.error("Error details:", {
216
+ status: (_error$response = _t2.response) === null || _error$response === void 0 ? void 0 : _error$response.status,
217
+ statusText: (_error$response2 = _t2.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.statusText,
218
+ data: (_error$response3 = _t2.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data,
219
+ message: _t2.message
220
+ });
221
+ // Could add toast notification here
222
+ case 12:
223
+ _context2.p = 12;
224
+ setLoadingStates(function (prev) {
225
+ var newMap = new Map(prev);
226
+ newMap["delete"](courseId);
227
+ return newMap;
228
+ });
229
+ return _context2.f(12);
230
+ case 13:
231
+ return _context2.a(2);
232
+ }
233
+ }, _callee2, null, [[1, 11, 12, 13]]);
234
+ }));
235
+ return function handleArchiveToggle(_x, _x2) {
236
+ return _ref3.apply(this, arguments);
237
+ };
238
+ }();
239
+ var renderCourse = function renderCourse(courseData) {
240
+ var _courseData$courseRun4, _courseData$courseRun5, _courseData$courseRun6;
241
+ var isArchived = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
242
+ var courseId = (_courseData$courseRun4 = courseData.courseRun) === null || _courseData$courseRun4 === void 0 ? void 0 : _courseData$courseRun4.courseId;
243
+ var isLoading = loadingStates.get(courseId);
244
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Col, {
245
+ xs: 12,
246
+ sm: 6,
247
+ md: 4,
248
+ lg: 3,
249
+ className: "mb-4",
250
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Card, {
251
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
252
+ href: ((_courseData$courseRun5 = courseData.courseRun) === null || _courseData$courseRun5 === void 0 ? void 0 : _courseData$courseRun5.homeUrl) || '#',
253
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Card.ImageCap, {
254
+ src: (0, _frontendPlatform.getConfig)().LMS_BASE_URL + courseData.course.bannerImgSrc,
255
+ alt: courseData.course.courseName
256
+ })
257
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Card.Header, {
258
+ title: /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
259
+ href: ((_courseData$courseRun6 = courseData.courseRun) === null || _courseData$courseRun6 === void 0 ? void 0 : _courseData$courseRun6.homeUrl) || '#',
260
+ children: courseData.course.courseName
261
+ }),
262
+ subtitle: courseData.course.courseNumber,
263
+ actions: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
264
+ children: [isArchived && /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Badge, {
265
+ variant: "secondary",
266
+ className: "me-2",
267
+ children: "Archived"
268
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Dropdown, {
269
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Dropdown.Toggle, {
270
+ id: "course-menu-".concat(courseData.cardId),
271
+ as: _paragon.IconButton,
272
+ src: _icons.MoreVert,
273
+ iconAs: _paragon.Icon,
274
+ variant: "primary",
275
+ "aria-label": "More actions"
276
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Dropdown.Menu, {
277
+ children: courseData.course.socialShareUrl && /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Dropdown.Item, {
278
+ href: courseData.course.socialShareUrl,
279
+ target: "_blank",
280
+ rel: "noopener noreferrer",
281
+ children: "View Course About Page"
282
+ })
283
+ })]
284
+ })]
285
+ })
286
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Card.Section, {
287
+ children: courseData.course.shortDescription && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
288
+ className: "text-muted small",
289
+ children: courseData.course.shortDescription
290
+ })
291
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Card.Footer, {
292
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
293
+ variant: isArchived ? "outline-primary" : "outline-secondary",
294
+ size: "sm",
295
+ disabled: isLoading,
296
+ onClick: function onClick() {
297
+ return handleArchiveToggle(courseId, isArchived);
298
+ },
299
+ iconBefore: isLoading ? _paragon.Spinner : isArchived ? _icons.Unarchive : _icons.Archive,
300
+ children: isLoading ? "Processing..." : isArchived ? "Unarchive" : "Archive"
301
+ })
302
+ })]
303
+ })
304
+ }, courseData.cardId);
305
+ };
306
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Container, {
307
+ fluid: true,
308
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Row, {
309
+ children: activeCourses.map(function (courseData) {
310
+ return renderCourse(courseData, false);
311
+ })
312
+ }), archivedCoursesList.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
313
+ className: "mt-5",
314
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Collapsible, {
315
+ title: "Archived Courses (".concat(archivedCoursesList.length, ")"),
316
+ defaultOpen: false,
317
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Row, {
318
+ children: archivedCoursesList.map(function (courseData) {
319
+ return renderCourse(courseData, true);
320
+ })
321
+ })
322
+ })
323
+ })]
324
+ });
325
+ };
326
+ var _default = exports["default"] = CourseList;
327
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","names":["_react","_interopRequireWildcard","require","_frontendPlatform","_auth","_paragon","_icons","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t3","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_regenerator","Symbol","iterator","toStringTag","c","prototype","Generator","u","create","_regeneratorDefine2","p","y","G","v","a","d","bind","length","l","TypeError","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","displayName","w","m","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","next","push","isArray","CourseList","_ref","courseListData","_useState","useState","Set","_useState2","archivedCourses","setArchivedCourses","_useState3","Map","_useState4","loadingStates","setLoadingStates","visibleList","console","log","jsx","children","courses","useEffect","fetchArchivedCourses","_ref2","_callee","client","lmsBaseUrl","response","archivedCourseIds","_t","_context","getAuthenticatedHttpClient","getConfig","LMS_BASE_URL","concat","params","is_archived","data","results","map","item","course_id","error","forEach","courseData","index","_courseData$courseRun","cardId","courseRun","courseId","keys","activeCourses","filter","_courseData$courseRun2","_courseData$course","isArchived","course","courseName","archivedCoursesList","_courseData$courseRun3","handleArchiveToggle","_ref3","_callee2","isCurrentlyArchived","url","listResponse","existingRecord","_listResponse","_existingRecord","createResponse","_error$response","_error$response2","_error$response3","_t2","_context2","prev","patch","id","newSet","post","add","status","statusText","message","newMap","_x","_x2","renderCourse","_courseData$courseRun4","_courseData$courseRun5","_courseData$courseRun6","undefined","isLoading","Col","xs","sm","md","lg","className","jsxs","Card","href","homeUrl","ImageCap","src","bannerImgSrc","alt","Header","title","subtitle","courseNumber","actions","Fragment","Badge","variant","Dropdown","Toggle","as","IconButton","MoreVert","iconAs","Icon","Menu","socialShareUrl","Item","target","rel","Section","shortDescription","Footer","Button","size","disabled","onClick","iconBefore","Spinner","Unarchive","Archive","Container","fluid","Row","Collapsible","defaultOpen","_default","exports"],"sources":["../src/plugin.jsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { getConfig } from \"@edx/frontend-platform\";\nimport { getAuthenticatedHttpClient } from \"@edx/frontend-platform/auth\";\nimport {\n Card,\n Container,\n Row,\n Col,\n Badge,\n Collapsible,\n Button,\n Spinner,\n Dropdown,\n IconButton,\n Icon,\n} from \"@openedx/paragon\";\nimport { Archive, Unarchive, MoreVert } from \"@openedx/paragon/icons\";\n\nconst CourseList = ({ courseListData }) => {\n const [archivedCourses, setArchivedCourses] = useState(new Set());\n const [loadingStates, setLoadingStates] = useState(new Map());\n\n // Safety check for courseListData\n if (!courseListData || !courseListData.visibleList) {\n console.log(\"DEBUG: courseListData not available yet\");\n return <div>Loading courses...</div>;\n }\n\n // Extract the \"visibleList\"\n const courses = courseListData.visibleList;\n\n // Log the full course data structure for debugging\n console.log(\"DEBUG: Full courseListData structure:\", courseListData);\n console.log(\"DEBUG: First course data object:\", courses?.[0]);\n\n useEffect(() => {\n const fetchArchivedCourses = async () => {\n try {\n const client = getAuthenticatedHttpClient();\n const lmsBaseUrl = getConfig().LMS_BASE_URL;\n console.log(\n \"DEBUG: Fetching archived courses from:\",\n `${lmsBaseUrl}/sample-plugin/api/v1/course-archive-status/`,\n );\n\n const response = await client.get(\n `${lmsBaseUrl}/sample-plugin/api/v1/course-archive-status/`,\n {\n params: { is_archived: true },\n },\n );\n\n console.log(\"DEBUG: Archived courses API response:\", response.data);\n\n const archivedCourseIds = new Set(\n response.data.results.map((item) => item.course_id),\n );\n\n console.log(\n \"DEBUG: Archived course IDs from API:\",\n Array.from(archivedCourseIds),\n );\n setArchivedCourses(archivedCourseIds);\n } catch (error) {\n console.error(\"Failed to fetch archived courses:\", error);\n }\n };\n\n fetchArchivedCourses();\n }, []);\n\n // Log course IDs we're trying to match against\n console.log(\"DEBUG: Course IDs from course data:\");\n courses.forEach((courseData, index) => {\n console.log(`Course ${index}:`, {\n cardId: courseData.cardId,\n \"courseRun.courseId\": courseData.courseRun?.courseId,\n \"courseRun object keys\": Object.keys(courseData.courseRun || {}),\n \"full courseRun object\": courseData.courseRun,\n });\n });\n\n console.log(\n \"DEBUG: Archived course IDs to match:\",\n Array.from(archivedCourses),\n );\n\n // Separate courses into active and archived\n const activeCourses = courses.filter((courseData) => {\n const courseId = courseData.courseRun?.courseId;\n const isArchived = archivedCourses.has(courseId);\n console.log(\n `DEBUG: Course \"${courseData.course?.courseName}\" (ID: ${courseId}) - archived: ${isArchived}`,\n );\n return !isArchived;\n });\n\n const archivedCoursesList = courses.filter((courseData) => {\n const courseId = courseData.courseRun?.courseId;\n return archivedCourses.has(courseId);\n });\n\n console.log(\"DEBUG: Active courses count:\", activeCourses.length);\n console.log(\"DEBUG: Archived courses count:\", archivedCoursesList.length);\n\n const handleArchiveToggle = async (courseId, isCurrentlyArchived) => {\n console.log(\n `DEBUG: Toggling archive for course ${courseId}, currently archived: ${isCurrentlyArchived}`,\n );\n\n setLoadingStates((prev) => new Map(prev).set(courseId, true));\n\n try {\n const client = getAuthenticatedHttpClient();\n const lmsBaseUrl = getConfig().LMS_BASE_URL;\n const url = `${lmsBaseUrl}/sample-plugin/api/v1/course-archive-status/`;\n\n if (isCurrentlyArchived) {\n // Unarchive: Find existing record and update it\n const listResponse = await client.get(url, {\n params: { course_id: courseId },\n });\n\n if (listResponse.data.results.length > 0) {\n const existingRecord = listResponse.data.results[0];\n await client.patch(`${url}${existingRecord.id}/`, {\n course_id: courseId,\n is_archived: false,\n });\n }\n\n // Update local state\n setArchivedCourses((prev) => {\n const newSet = new Set(prev);\n newSet.delete(courseId);\n return newSet;\n });\n } else {\n // Archive: Check if record exists first, then create or update\n const listResponse = await client.get(url, {\n params: { course_id: courseId },\n });\n\n if (listResponse.data.results.length > 0) {\n // Update existing record\n const existingRecord = listResponse.data.results[0];\n await client.patch(`${url}${existingRecord.id}/`, {\n is_archived: true,\n });\n } else {\n // Create new record\n console.log(\n `DEBUG: Creating new archive record for course ${courseId}`,\n );\n const createResponse = await client.post(url, {\n course_id: courseId,\n is_archived: true,\n });\n console.log(`DEBUG: Create response:`, createResponse.data);\n }\n\n // Update local state\n console.log(`DEBUG: Adding course ${courseId} to archived set`);\n setArchivedCourses((prev) => {\n const newSet = new Set(prev).add(courseId);\n console.log(`DEBUG: New archived courses set:`, Array.from(newSet));\n return newSet;\n });\n }\n\n console.log(\n `DEBUG: Successfully ${isCurrentlyArchived ? \"unarchived\" : \"archived\"} course ${courseId}`,\n );\n } catch (error) {\n console.error(\n `Failed to ${isCurrentlyArchived ? \"unarchive\" : \"archive\"} course:`,\n error,\n );\n console.error(\"Error details:\", {\n status: error.response?.status,\n statusText: error.response?.statusText,\n data: error.response?.data,\n message: error.message,\n });\n // Could add toast notification here\n } finally {\n setLoadingStates((prev) => {\n const newMap = new Map(prev);\n newMap.delete(courseId);\n return newMap;\n });\n }\n };\n\n const renderCourse = (courseData, isArchived = false) => {\n const courseId = courseData.courseRun?.courseId;\n const isLoading = loadingStates.get(courseId);\n\n return (\n <Col\n key={courseData.cardId}\n xs={12}\n sm={6}\n md={4}\n lg={3}\n className=\"mb-4\"\n >\n <Card>\n <a href={courseData.courseRun?.homeUrl || '#'}>\n <Card.ImageCap\n src={getConfig().LMS_BASE_URL + courseData.course.bannerImgSrc}\n alt={courseData.course.courseName}\n />\n </a>\n <Card.Header\n title={\n <a href={courseData.courseRun?.homeUrl || '#'}>\n {courseData.course.courseName}\n </a>\n }\n subtitle={courseData.course.courseNumber}\n actions={\n <>\n {isArchived && <Badge variant=\"secondary\" className=\"me-2\">Archived</Badge>}\n <Dropdown>\n <Dropdown.Toggle\n id={`course-menu-${courseData.cardId}`}\n as={IconButton}\n src={MoreVert}\n iconAs={Icon}\n variant=\"primary\"\n aria-label=\"More actions\"\n />\n <Dropdown.Menu>\n {courseData.course.socialShareUrl && (\n <Dropdown.Item\n href={courseData.course.socialShareUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n View Course About Page\n </Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </>\n }\n />\n <Card.Section>\n {courseData.course.shortDescription && (\n <p className=\"text-muted small\">\n {courseData.course.shortDescription}\n </p>\n )}\n </Card.Section>\n <Card.Footer>\n <Button\n variant={isArchived ? \"outline-primary\" : \"outline-secondary\"}\n size=\"sm\"\n disabled={isLoading}\n onClick={() => handleArchiveToggle(courseId, isArchived)}\n iconBefore={\n isLoading ? Spinner : isArchived ? Unarchive : Archive\n }\n >\n {isLoading\n ? \"Processing...\"\n : isArchived\n ? \"Unarchive\"\n : \"Archive\"}\n </Button>\n </Card.Footer>\n </Card>\n </Col>\n );\n };\n\n return (\n <Container fluid>\n <Row>\n {activeCourses.map((courseData) => renderCourse(courseData, false))}\n </Row>\n\n {archivedCoursesList.length > 0 && (\n <div className=\"mt-5\">\n <Collapsible\n title={`Archived Courses (${archivedCoursesList.length})`}\n defaultOpen={false}\n >\n <Row>\n {archivedCoursesList.map((courseData) =>\n renderCourse(courseData, true),\n )}\n </Row>\n </Collapsible>\n </div>\n )}\n </Container>\n );\n};\n\nexport default CourseList;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openedx/plugin-sample",
3
- "version": "0.0.0",
3
+ "version": "3.0.0",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"