synapse-react-client 3.1.28 → 3.1.29
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/README.md +1 -1
- package/dist/assets/GoogleIcon.d.ts +3 -0
- package/dist/assets/GoogleIcon.js +22 -0
- package/dist/assets/GoogleIcon.js.map +1 -0
- package/dist/assets/icons/Alert.d.ts +2 -0
- package/dist/assets/icons/Alert.js +9 -0
- package/dist/assets/icons/Alert.js.map +1 -0
- package/dist/assets/icons/Cavatica.d.ts +3 -0
- package/dist/assets/icons/Cavatica.js +17 -0
- package/dist/assets/icons/Cavatica.js.map +1 -0
- package/dist/assets/icons/columns.d.ts +3 -0
- package/dist/assets/icons/columns.js +9 -0
- package/dist/assets/icons/columns.js.map +1 -0
- package/dist/assets/icons/columnsDarkTheme.d.ts +3 -0
- package/dist/assets/icons/columnsDarkTheme.js +9 -0
- package/dist/assets/icons/columnsDarkTheme.js.map +1 -0
- package/dist/assets/themed_icons/Active.d.ts +2 -0
- package/dist/assets/themed_icons/Active.js +10 -0
- package/dist/assets/themed_icons/Active.js.map +1 -0
- package/dist/containers/GoogleMap/GoogleMap.d.ts +15 -0
- package/dist/containers/GoogleMap/GoogleMap.js +58 -0
- package/dist/containers/GoogleMap/GoogleMap.js.map +1 -0
- package/dist/containers/GoogleMap/SynapseUserMarker.d.ts +19 -0
- package/dist/containers/GoogleMap/SynapseUserMarker.js +41 -0
- package/dist/containers/GoogleMap/SynapseUserMarker.js.map +1 -0
- package/dist/containers/StorybookComponentWrapper.d.ts +16 -0
- package/dist/containers/StorybookComponentWrapper.js +131 -0
- package/dist/containers/StorybookComponentWrapper.js.map +1 -0
- package/dist/containers/TemplateComponent.d.ts +6 -0
- package/dist/containers/TemplateComponent.js +20 -0
- package/dist/containers/TemplateComponent.js.map +1 -0
- package/dist/containers/access_requirement_list/ManagedACTAccessRequirement.d.ts +4 -0
- package/dist/containers/access_requirement_list/ManagedACTAccessRequirement.js +38 -0
- package/dist/containers/access_requirement_list/ManagedACTAccessRequirement.js.map +1 -0
- package/dist/containers/auth/AuthenticationMethodSelection.js +4 -2
- package/dist/containers/auth/AuthenticationMethodSelection.js.map +1 -1
- package/dist/containers/auth/LoginForm.js +1 -1
- package/dist/containers/auth/LoginForm.js.map +1 -1
- package/dist/containers/auth/Logout.d.ts +5 -0
- package/dist/containers/auth/Logout.js +15 -0
- package/dist/containers/auth/Logout.js.map +1 -0
- package/dist/containers/auth/TOTPForm.js +1 -1
- package/dist/containers/auth/TOTPForm.js.map +1 -1
- package/dist/containers/discussion_forum/DiscussionReply.d.ts +7 -0
- package/dist/containers/discussion_forum/DiscussionReply.js +63 -0
- package/dist/containers/discussion_forum/DiscussionReply.js.map +1 -0
- package/dist/containers/discussion_forum/DiscussionThread.d.ts +6 -0
- package/dist/containers/discussion_forum/DiscussionThread.js +126 -0
- package/dist/containers/discussion_forum/DiscussionThread.js.map +1 -0
- package/dist/containers/discussion_forum/ForumPage.d.ts +7 -0
- package/dist/containers/discussion_forum/ForumPage.js +70 -0
- package/dist/containers/discussion_forum/ForumPage.js.map +1 -0
- package/dist/containers/discussion_forum/ForumTable.d.ts +9 -0
- package/dist/containers/discussion_forum/ForumTable.js +93 -0
- package/dist/containers/discussion_forum/ForumTable.js.map +1 -0
- package/dist/containers/discussion_forum/ForumThreadEditor.d.ts +9 -0
- package/dist/containers/discussion_forum/ForumThreadEditor.js +82 -0
- package/dist/containers/discussion_forum/ForumThreadEditor.js.map +1 -0
- package/dist/containers/discussion_forum/SubscribersModal.d.ts +9 -0
- package/dist/containers/discussion_forum/SubscribersModal.js +25 -0
- package/dist/containers/discussion_forum/SubscribersModal.js.map +1 -0
- package/dist/containers/markdown/MarkdownEditor.d.ts +11 -0
- package/dist/containers/markdown/MarkdownEditor.js +112 -0
- package/dist/containers/markdown/MarkdownEditor.js.map +1 -0
- package/dist/containers/markdown/UserMentionModal.d.ts +7 -0
- package/dist/containers/markdown/UserMentionModal.js +25 -0
- package/dist/containers/markdown/UserMentionModal.js.map +1 -0
- package/dist/containers/menu/DropdownMenu.js +1 -1
- package/dist/containers/menu/DropdownMenu.js.map +1 -1
- package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.d.ts +1 -0
- package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.js +2 -2
- package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/containers/table/TopLevelControls.d.ts +1 -0
- package/dist/containers/table/TopLevelControls.js +12 -3
- package/dist/containers/table/TopLevelControls.js.map +1 -1
- package/dist/umd/synapse-react-client.development.js +7567 -7836
- package/dist/umd/synapse-react-client.development.js.map +4 -4
- package/dist/umd/synapse-react-client.production.min.js +91 -91
- package/dist/utils/functions/index.d.ts +9 -0
- package/dist/utils/functions/index.js +9 -0
- package/dist/utils/functions/index.js.map +1 -0
- package/dist/utils/functions/sqlFunctions.d.ts +2 -2
- package/dist/utils/functions/sqlFunctions.js +56 -33
- package/dist/utils/functions/sqlFunctions.js.map +1 -1
- package/dist/utils/hooks/SynapseAPI/entity/useExportToCavatica.d.ts +2 -0
- package/dist/utils/hooks/SynapseAPI/entity/useExportToCavatica.js +55 -0
- package/dist/utils/hooks/SynapseAPI/entity/useExportToCavatica.js.map +1 -0
- package/dist/utils/hooks/SynapseAPI/forum/useForum.d.ts +7 -0
- package/dist/utils/hooks/SynapseAPI/forum/useForum.js +31 -0
- package/dist/utils/hooks/SynapseAPI/forum/useForum.js.map +1 -0
- package/dist/utils/hooks/SynapseAPI/forum/useReply.d.ts +10 -0
- package/dist/utils/hooks/SynapseAPI/forum/useReply.js +120 -0
- package/dist/utils/hooks/SynapseAPI/forum/useReply.js.map +1 -0
- package/dist/utils/hooks/SynapseAPI/forum/useThread.d.ts +18 -0
- package/dist/utils/hooks/SynapseAPI/forum/useThread.js +236 -0
- package/dist/utils/hooks/SynapseAPI/forum/useThread.js.map +1 -0
- package/dist/utils/hooks/SynapseAPI/provenance/useGetActivityForEntity.d.ts +4 -0
- package/dist/utils/hooks/SynapseAPI/provenance/useGetActivityForEntity.js +14 -0
- package/dist/utils/hooks/SynapseAPI/provenance/useGetActivityForEntity.js.map +1 -0
- package/dist/utils/hooks/SynapseAPI/subscription/useSubscription.d.ts +13 -0
- package/dist/utils/hooks/SynapseAPI/subscription/useSubscription.js +107 -0
- package/dist/utils/hooks/SynapseAPI/subscription/useSubscription.js.map +1 -0
- package/dist/utils/hooks/useDetectSSOCode.d.ts +2 -1
- package/dist/utils/hooks/useDetectSSOCode.js +4 -12
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.d.ts +4 -0
- package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.js +3 -0
- package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.js.map +1 -0
- package/dist/utils/synapseTypes/MarkdownCommands.d.ts +8 -0
- package/dist/utils/synapseTypes/MarkdownCommands.js +58 -0
- package/dist/utils/synapseTypes/MarkdownCommands.js.map +1 -0
- package/dist/utils/synapseTypes/Table/QueryFilter.d.ts +3 -1
- package/dist/utils/synapseTypes/Table/QueryFilter.js +7 -0
- package/dist/utils/synapseTypes/Table/QueryFilter.js.map +1 -1
- package/dist/utils/theme/index.d.ts +3 -0
- package/dist/utils/theme/index.js +7 -0
- package/dist/utils/theme/index.js.map +1 -0
- package/dist/utils/types/DeepPartial.d.ts +9 -0
- package/dist/utils/types/DeepPartial.js +3 -0
- package/dist/utils/types/DeepPartial.js.map +1 -0
- package/package.json +10 -19
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var utils_1 = require("../../utils");
|
|
5
|
+
var react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
var react_bootstrap_1 = require("react-bootstrap");
|
|
7
|
+
function Logout(props) {
|
|
8
|
+
var callback = props.callback;
|
|
9
|
+
return (react_1.default.createElement("div", { className: "bootstrap-4-backport" },
|
|
10
|
+
react_1.default.createElement(react_bootstrap_1.Button, { variant: "default", onClick: function () {
|
|
11
|
+
utils_1.SynapseClient.signOut().then(callback);
|
|
12
|
+
} }, "Log out")));
|
|
13
|
+
}
|
|
14
|
+
exports.default = Logout;
|
|
15
|
+
//# sourceMappingURL=Logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logout.js","sourceRoot":"","sources":["../../../src/lib/containers/auth/Logout.tsx"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,wDAAyB;AACzB,mDAAwC;AAMxC,SAAwB,MAAM,CAAC,KAAkB;IACvC,IAAA,QAAQ,GAAK,KAAK,SAAV,CAAU;IAC1B,OAAO,CACL,uCAAK,SAAS,EAAC,sBAAsB;QACnC,8BAAC,wBAAM,IACL,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE;gBACP,qBAAa,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACxC,CAAC,cAGM,CACL,CACP,CAAA;AACH,CAAC;AAdD,yBAcC"}
|
|
@@ -10,7 +10,7 @@ function TOTPForm(props) {
|
|
|
10
10
|
var onSubmit = props.onSubmit, isLoading = props.isLoading;
|
|
11
11
|
var _a = react_1.default.useState(''), verificationCode = _a[0], setVerificationCode = _a[1];
|
|
12
12
|
return (react_1.default.createElement(material_1.Box, null,
|
|
13
|
-
react_1.default.createElement(mui_one_time_password_input_1.MuiOtpInput, { length: TOTP_LENGTH, value: verificationCode, onChange: setVerificationCode, onComplete: onSubmit, validateChar: function (character) {
|
|
13
|
+
react_1.default.createElement(mui_one_time_password_input_1.MuiOtpInput, { autoFocus: true, length: TOTP_LENGTH, value: verificationCode, onChange: setVerificationCode, onComplete: onSubmit, validateChar: function (character) {
|
|
14
14
|
return DIGIT_CHARACTERS.includes(character) || character === '';
|
|
15
15
|
}, gap: 0, sx: {
|
|
16
16
|
'.MuiFormControl-root:first-of-type > .MuiInputBase-root': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TOTPForm.js","sourceRoot":"","sources":["../../../src/lib/containers/auth/TOTPForm.tsx"],"names":[],"mappings":";;;AAAA,wDAAyB;AACzB,0CAA2C;AAC3C,2EAAyD;AAGzD,IAAM,WAAW,GAAG,CAAC,CAAA;AACrB,IAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAO3E,SAAwB,QAAQ,CAAC,KAAoB;IAC3C,IAAA,QAAQ,GAAgB,KAAK,SAArB,EAAE,SAAS,GAAK,KAAK,UAAV,CAAU;IAC/B,IAAA,KAA0C,eAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA3D,gBAAgB,QAAA,EAAE,mBAAmB,QAAsB,CAAA;IAClE,OAAO,CACL,8BAAC,cAAG;QACF,8BAAC,yCAAW,IACV,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,QAAQ,EACpB,YAAY,EAAE,UAAC,SAAiB;gBAC9B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,EAAE,CAAA;YACjE,CAAC,EACD,GAAG,EAAE,CAAC,EACN,EAAE,EAAE;gBACF,yDAAyD,EAAE;oBACzD,oBAAoB,EAAE,CAAC;oBACvB,uBAAuB,EAAE,CAAC;iBAC3B;gBACD,wDAAwD,EAAE;oBACxD,mBAAmB,EAAE,CAAC;oBACtB,sBAAsB,EAAE,CAAC;iBAC1B;gBACD,kFAAkF,EAChF;oBACE,YAAY,EAAE,CAAC;iBAChB;aACJ,GACD;QAEF,8BAAC,iBAAM,IACL,SAAS,QACT,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,EACnB,EAAE,EAAE;gBACF,MAAM,EAAE,MAAM;gBACd,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;aACN,EACD,QAAQ,EAAE,gBAAgB,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,EAC9D,OAAO,EAAE,UAAA,CAAC;gBACR,CAAC,CAAC,cAAc,EAAE,CAAA;gBAClB,QAAQ,CAAC,gBAAgB,CAAC,CAAA;YAC5B,CAAC,IAEA,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAC/B,CACL,CACP,CAAA;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"TOTPForm.js","sourceRoot":"","sources":["../../../src/lib/containers/auth/TOTPForm.tsx"],"names":[],"mappings":";;;AAAA,wDAAyB;AACzB,0CAA2C;AAC3C,2EAAyD;AAGzD,IAAM,WAAW,GAAG,CAAC,CAAA;AACrB,IAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAO3E,SAAwB,QAAQ,CAAC,KAAoB;IAC3C,IAAA,QAAQ,GAAgB,KAAK,SAArB,EAAE,SAAS,GAAK,KAAK,UAAV,CAAU;IAC/B,IAAA,KAA0C,eAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA3D,gBAAgB,QAAA,EAAE,mBAAmB,QAAsB,CAAA;IAClE,OAAO,CACL,8BAAC,cAAG;QACF,8BAAC,yCAAW,IACV,SAAS,QACT,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,QAAQ,EACpB,YAAY,EAAE,UAAC,SAAiB;gBAC9B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,EAAE,CAAA;YACjE,CAAC,EACD,GAAG,EAAE,CAAC,EACN,EAAE,EAAE;gBACF,yDAAyD,EAAE;oBACzD,oBAAoB,EAAE,CAAC;oBACvB,uBAAuB,EAAE,CAAC;iBAC3B;gBACD,wDAAwD,EAAE;oBACxD,mBAAmB,EAAE,CAAC;oBACtB,sBAAsB,EAAE,CAAC;iBAC1B;gBACD,kFAAkF,EAChF;oBACE,YAAY,EAAE,CAAC;iBAChB;aACJ,GACD;QAEF,8BAAC,iBAAM,IACL,SAAS,QACT,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,EACnB,EAAE,EAAE;gBACF,MAAM,EAAE,MAAM;gBACd,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;aACN,EACD,QAAQ,EAAE,gBAAgB,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,EAC9D,OAAO,EAAE,UAAA,CAAC;gBACR,CAAC,CAAC,cAAc,EAAE,CAAA;gBAClB,QAAQ,CAAC,gBAAgB,CAAC,CAAA;YAC5B,CAAC,IAEA,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAC/B,CACL,CACP,CAAA;AACH,CAAC;AAnDD,2BAmDC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DiscussionReplyBundle } from '../../utils/synapseTypes/DiscussionBundle';
|
|
3
|
+
export type DiscussionReplyProps = {
|
|
4
|
+
reply: DiscussionReplyBundle;
|
|
5
|
+
onClickLink?: () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare const DiscussionReply: React.FC<DiscussionReplyProps>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DiscussionReply = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
6
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
var DateFormatter_1 = require("../../utils/functions/DateFormatter");
|
|
8
|
+
var SynapseConstants_1 = require("../../utils/SynapseConstants");
|
|
9
|
+
var UserCard_1 = tslib_1.__importDefault(require("../UserCard"));
|
|
10
|
+
var MarkdownSynapse_1 = tslib_1.__importDefault(require("../markdown/MarkdownSynapse"));
|
|
11
|
+
var synapseTypes_1 = require("../../utils/synapseTypes");
|
|
12
|
+
var IconSvg_1 = tslib_1.__importDefault(require("../IconSvg"));
|
|
13
|
+
var react_bootstrap_1 = require("react-bootstrap");
|
|
14
|
+
var ForumThreadEditor_1 = require("./ForumThreadEditor");
|
|
15
|
+
var SynapseAPI_1 = require("../../utils/hooks/SynapseAPI");
|
|
16
|
+
var useReply_1 = require("../../utils/hooks/SynapseAPI/forum/useReply");
|
|
17
|
+
var ToastMessage_1 = require("../ToastMessage");
|
|
18
|
+
var WarningModal_1 = tslib_1.__importDefault(require("../synapse_form_wrapper/WarningModal"));
|
|
19
|
+
var SkeletonTable_1 = require("../../assets/skeletons/SkeletonTable");
|
|
20
|
+
var DiscussionReply = function (_a) {
|
|
21
|
+
var reply = _a.reply, _b = _a.onClickLink, onClickLink = _b === void 0 ? function () { return alert('This functionality has not been implemented yet'); } : _b;
|
|
22
|
+
var _c = (0, react_1.useState)(false), showReplyModal = _c[0], setShowReplyModal = _c[1];
|
|
23
|
+
var _d = (0, react_1.useState)(false), showDeleteModal = _d[0], setShowDeleteModal = _d[1];
|
|
24
|
+
var currentUserProfile = (0, SynapseAPI_1.useGetCurrentUserProfile)().data;
|
|
25
|
+
var entityBundle = (0, SynapseAPI_1.useGetEntityBundle)(reply.projectId).data;
|
|
26
|
+
var _e = (0, useReply_1.useGetReply)(reply), message = _e.data, isLoading = _e.isLoading;
|
|
27
|
+
var deleteReply = (0, useReply_1.useDeleteReply)({
|
|
28
|
+
onSuccess: function () {
|
|
29
|
+
setShowDeleteModal(false);
|
|
30
|
+
(0, ToastMessage_1.displayToast)('A reply has been deleted.', 'info');
|
|
31
|
+
},
|
|
32
|
+
}).mutate;
|
|
33
|
+
var isCurrentUserAuthor = reply.createdBy == (currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.ownerId);
|
|
34
|
+
return (react_1.default.createElement("div", { className: "reply-container" },
|
|
35
|
+
isLoading ? (react_1.default.createElement(SkeletonTable_1.SkeletonTable, { numCols: 1, numRows: 4 })) : (react_1.default.createElement(react_1.default.Fragment, null, message && (react_1.default.createElement("div", null,
|
|
36
|
+
react_1.default.createElement(UserCard_1.default, { withAvatar: true, avatarSize: "MEDIUM", showCardOnHover: true, size: SynapseConstants_1.SMALL_USER_CARD, ownerId: reply.createdBy }),
|
|
37
|
+
react_1.default.createElement("div", { className: "message-body" },
|
|
38
|
+
react_1.default.createElement(MarkdownSynapse_1.default, { markdown: message, objectType: synapseTypes_1.ObjectType.REPLY }),
|
|
39
|
+
react_1.default.createElement("span", null,
|
|
40
|
+
"posted ",
|
|
41
|
+
(0, DateFormatter_1.formatDate)((0, dayjs_1.default)(reply.createdOn), 'M/D/YYYY')),
|
|
42
|
+
react_1.default.createElement("div", { style: { float: 'right' } },
|
|
43
|
+
react_1.default.createElement("button", { onClick: function () { return onClickLink(); } },
|
|
44
|
+
react_1.default.createElement(IconSvg_1.default, { icon: "link" })),
|
|
45
|
+
isCurrentUserAuthor && (react_1.default.createElement("button", { onClick: function () { return setShowReplyModal(true); } },
|
|
46
|
+
react_1.default.createElement(IconSvg_1.default, { icon: "edit" }))),
|
|
47
|
+
(entityBundle === null || entityBundle === void 0 ? void 0 : entityBundle.permissions.canModerate) && (react_1.default.createElement("button", { onClick: function () { return setShowDeleteModal(true); } },
|
|
48
|
+
react_1.default.createElement(IconSvg_1.default, { icon: "delete" }))))))))),
|
|
49
|
+
react_1.default.createElement(react_bootstrap_1.Modal, { size: "lg", show: showReplyModal, onHide: function () { return setShowReplyModal(false); }, animation: false },
|
|
50
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Header, null,
|
|
51
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Title, null, "Edit Reply")),
|
|
52
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Body, null,
|
|
53
|
+
react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { isReply: true, initialText: message, onClose: function () { return setShowReplyModal(false); }, id: reply.id }))),
|
|
54
|
+
react_1.default.createElement(WarningModal_1.default, { show: showDeleteModal, className: "bootstrap-4-backport", title: "Confirm Deletion", modalBody: "Are you sure you want to delete this reply?", onCancel: function () { return setShowDeleteModal(false); }, onConfirm: function () {
|
|
55
|
+
return deleteReply({
|
|
56
|
+
forumId: reply.forumId,
|
|
57
|
+
threadId: reply.threadId,
|
|
58
|
+
replyId: reply.id,
|
|
59
|
+
});
|
|
60
|
+
}, confirmButtonVariant: "danger", confirmButtonText: "Delete" })));
|
|
61
|
+
};
|
|
62
|
+
exports.DiscussionReply = DiscussionReply;
|
|
63
|
+
//# sourceMappingURL=DiscussionReply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscussionReply.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/DiscussionReply.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DiscussionThread = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
6
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
var DateFormatter_1 = require("../../utils/functions/DateFormatter");
|
|
8
|
+
var useReply_1 = require("../../utils/hooks/SynapseAPI/forum/useReply");
|
|
9
|
+
var useThread_1 = require("../../utils/hooks/SynapseAPI/forum/useThread");
|
|
10
|
+
var SynapseConstants_1 = require("../../utils/SynapseConstants");
|
|
11
|
+
var Subscription_1 = require("../../utils/synapseTypes/Subscription");
|
|
12
|
+
var UserCard_1 = tslib_1.__importDefault(require("../UserCard"));
|
|
13
|
+
var ToastMessage_1 = require("../ToastMessage");
|
|
14
|
+
var DiscussionReply_1 = require("./DiscussionReply");
|
|
15
|
+
var react_bootstrap_1 = require("react-bootstrap");
|
|
16
|
+
var material_1 = require("@mui/material");
|
|
17
|
+
var IconSvg_1 = tslib_1.__importDefault(require("../IconSvg"));
|
|
18
|
+
var MarkdownSynapse_1 = tslib_1.__importDefault(require("../markdown/MarkdownSynapse"));
|
|
19
|
+
var synapseTypes_1 = require("../../utils/synapseTypes");
|
|
20
|
+
var useSubscription_1 = require("../../utils/hooks/SynapseAPI/subscription/useSubscription");
|
|
21
|
+
var SynapseAPI_1 = require("../../utils/hooks/SynapseAPI");
|
|
22
|
+
var ForumThreadEditor_1 = require("./ForumThreadEditor");
|
|
23
|
+
var WarningModal_1 = tslib_1.__importDefault(require("../synapse_form_wrapper/WarningModal"));
|
|
24
|
+
var SubscribersModal_1 = require("./SubscribersModal");
|
|
25
|
+
var FOLLOWING_TEXT = 'You are following this topic. Click to stop following.';
|
|
26
|
+
var UNFOLLOWING_TEXT = 'You are not following this topic. Click to follow.';
|
|
27
|
+
var SIGN_IN_TEXT = 'You will need to sign in for access to that resource';
|
|
28
|
+
var INPUT_PLACEHOLDER = 'Write a reply...';
|
|
29
|
+
function DiscussionThread(props) {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
var threadId = props.threadId, limit = props.limit;
|
|
32
|
+
var _c = (0, react_1.useState)(true), orderByDatePosted = _c[0], setOrderByDatePosted = _c[1];
|
|
33
|
+
var _d = (0, react_1.useState)(false), showThreadModal = _d[0], setShowThreadModal = _d[1];
|
|
34
|
+
var _e = (0, react_1.useState)(false), showReplyEditor1 = _e[0], setShowReplyEditor1 = _e[1];
|
|
35
|
+
var _f = (0, react_1.useState)(false), showReplyEditor2 = _f[0], setShowReplyEditor2 = _f[1];
|
|
36
|
+
var _g = (0, react_1.useState)(false), showDeleteModal = _g[0], setShowDeleteModal = _g[1];
|
|
37
|
+
var _h = (0, react_1.useState)(false), showSignInModal = _h[0], setShowSignInModal = _h[1];
|
|
38
|
+
var _j = (0, react_1.useState)(false), showRestoreModal = _j[0], setShowRestoreModal = _j[1];
|
|
39
|
+
var _k = (0, react_1.useState)(false), showSubscriberModal = _k[0], setShowSubscriberModal = _k[1];
|
|
40
|
+
var _l = (0, useThread_1.useGetThread)(threadId), threadData = _l.threadData, threadBody = _l.threadBody, togglePin = _l.togglePin;
|
|
41
|
+
var currentUserProfile = (0, SynapseAPI_1.useGetCurrentUserProfile)().data;
|
|
42
|
+
var entityBundle = (0, SynapseAPI_1.useGetEntityBundle)((_a = threadData === null || threadData === void 0 ? void 0 : threadData.projectId) !== null && _a !== void 0 ? _a : '', undefined, SynapseConstants_1.ALL_ENTITY_BUNDLE_FIELDS, {
|
|
43
|
+
enabled: !!threadData,
|
|
44
|
+
}).data;
|
|
45
|
+
var _m = (0, useSubscription_1.useSubscription)(threadId, Subscription_1.SubscriptionObjectType.THREAD), subscription = _m.subscription, toggleSubscribed = _m.toggleSubscribed, isLoading = _m.isLoading;
|
|
46
|
+
var deleteThread = (0, useThread_1.useDeleteThread)({
|
|
47
|
+
onSuccess: function () {
|
|
48
|
+
setShowDeleteModal(false);
|
|
49
|
+
(0, ToastMessage_1.displayToast)('A thread has been deleted.', 'info');
|
|
50
|
+
},
|
|
51
|
+
}).mutate;
|
|
52
|
+
var restoreThread = (0, useThread_1.useRestoreThread)({
|
|
53
|
+
onSuccess: function () {
|
|
54
|
+
setShowRestoreModal(false);
|
|
55
|
+
(0, ToastMessage_1.displayToast)('A thread has been restored.', 'info');
|
|
56
|
+
},
|
|
57
|
+
}).mutate;
|
|
58
|
+
var isCurrentUserAuthor = (threadData === null || threadData === void 0 ? void 0 : threadData.createdBy) == (currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.ownerId);
|
|
59
|
+
function handleFollowBtn() {
|
|
60
|
+
if ((currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.userName) == 'anonymous') {
|
|
61
|
+
setShowSignInModal(true);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
try {
|
|
65
|
+
toggleSubscribed();
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
(0, ToastMessage_1.displayToast)(err.reason, 'danger');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
var _o = (0, useReply_1.useGetRepliesInfinite)(threadId, orderByDatePosted, limit), replyData = _o.data, hasNextPage = _o.hasNextPage, fetchNextPage = _o.fetchNextPage;
|
|
73
|
+
var replies = (_b = replyData === null || replyData === void 0 ? void 0 : replyData.pages.flatMap(function (page) { return page.results; })) !== null && _b !== void 0 ? _b : [];
|
|
74
|
+
return (react_1.default.createElement("div", { className: "bootstrap-4-backport DiscussionThread" },
|
|
75
|
+
threadData && threadBody ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
76
|
+
react_1.default.createElement("div", { style: { textAlign: 'center' } },
|
|
77
|
+
react_1.default.createElement(material_1.Button, { variant: orderByDatePosted ? 'contained' : 'outlined', onClick: function () { return setOrderByDatePosted(true); } }, "Date Posted"),
|
|
78
|
+
react_1.default.createElement(material_1.Button, { variant: orderByDatePosted ? 'outlined' : 'contained', onClick: function () { return setOrderByDatePosted(false); } }, "Most Recent")),
|
|
79
|
+
react_1.default.createElement(UserCard_1.default, { withAvatar: true, avatarSize: "MEDIUM", showCardOnHover: true, size: SynapseConstants_1.SMALL_USER_CARD, ownerId: threadData.createdBy }),
|
|
80
|
+
react_1.default.createElement("div", null,
|
|
81
|
+
react_1.default.createElement(material_1.Typography, { style: { marginTop: '4px' }, variant: "headline2" }, threadData.title),
|
|
82
|
+
react_1.default.createElement(SubscribersModal_1.SubscribersModal, { id: threadId, objectType: Subscription_1.SubscriptionObjectType.THREAD, showModal: showSubscriberModal, handleModal: setShowSubscriberModal })),
|
|
83
|
+
react_1.default.createElement("div", null,
|
|
84
|
+
react_1.default.createElement(MarkdownSynapse_1.default, { markdown: threadBody, objectType: synapseTypes_1.ObjectType.THREAD })),
|
|
85
|
+
react_1.default.createElement("span", null,
|
|
86
|
+
"posted ",
|
|
87
|
+
(0, DateFormatter_1.formatDate)((0, dayjs_1.default)(threadData.createdOn), 'M/D/YYYY')))) : (react_1.default.createElement(react_1.default.Fragment, null)),
|
|
88
|
+
react_1.default.createElement("div", { className: "control-container" }, (threadData === null || threadData === void 0 ? void 0 : threadData.isDeleted) ? (react_1.default.createElement("button", { onClick: function () { return setShowRestoreModal(true); } },
|
|
89
|
+
react_1.default.createElement(IconSvg_1.default, { icon: "restore", label: "Restore deleted thread" }))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
90
|
+
react_1.default.createElement("span", null,
|
|
91
|
+
react_1.default.createElement("button", { className: "follow-button", "aria-label": subscription ? 'Unfollow thread' : 'Follow thread', disabled: isLoading, onClick: function () { return handleFollowBtn(); } }, subscription ? (react_1.default.createElement(IconSvg_1.default, { icon: "visibility", label: FOLLOWING_TEXT })) : (react_1.default.createElement(IconSvg_1.default, { icon: "visibilityOff", label: UNFOLLOWING_TEXT })))),
|
|
92
|
+
isCurrentUserAuthor && (react_1.default.createElement("button", { onClick: function () { return setShowThreadModal(true); } },
|
|
93
|
+
react_1.default.createElement(IconSvg_1.default, { icon: "edit", label: "Edit thread" }))),
|
|
94
|
+
(entityBundle === null || entityBundle === void 0 ? void 0 : entityBundle.permissions.canModerate) ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
95
|
+
react_1.default.createElement("button", { onClick: function () { return setShowDeleteModal(true); } },
|
|
96
|
+
react_1.default.createElement(IconSvg_1.default, { icon: "delete", label: "Delete thread" })),
|
|
97
|
+
react_1.default.createElement("button", { onClick: function () { return togglePin(); } }, (threadData === null || threadData === void 0 ? void 0 : threadData.isPinned) ? (react_1.default.createElement(IconSvg_1.default, { icon: "pushpin", sx: { color: 'error.main' }, label: "Unpin thread" })) : (react_1.default.createElement(IconSvg_1.default, { icon: "pushpin", label: "Pin thread" }))))) : null))),
|
|
98
|
+
!showReplyEditor1 ? (react_1.default.createElement(react_bootstrap_1.FormControl, { type: "text", placeholder: INPUT_PLACEHOLDER, onClick: function () {
|
|
99
|
+
(currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.userName) == 'anonymous'
|
|
100
|
+
? setShowSignInModal(true)
|
|
101
|
+
: setShowReplyEditor1(true);
|
|
102
|
+
} })) : (react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { id: threadId, isReply: true, onClose: function () { return setShowReplyEditor1(false); } })),
|
|
103
|
+
react_1.default.createElement("div", null, replies.map(function (reply) { return (react_1.default.createElement(DiscussionReply_1.DiscussionReply, { key: reply.id, reply: reply })); })),
|
|
104
|
+
replies.length > 0 && (react_1.default.createElement(react_1.default.Fragment, null, !showReplyEditor2 ? (react_1.default.createElement(react_bootstrap_1.FormControl, { type: "text", placeholder: INPUT_PLACEHOLDER, onClick: function () {
|
|
105
|
+
(currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.userName) == 'anonymous'
|
|
106
|
+
? setShowSignInModal(true)
|
|
107
|
+
: setShowReplyEditor2(true);
|
|
108
|
+
} })) : (react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { id: threadId, isReply: true, onClose: function () { return setShowReplyEditor2(false); } })))),
|
|
109
|
+
hasNextPage ? (react_1.default.createElement(material_1.Button, { variant: "outlined", onClick: function () {
|
|
110
|
+
fetchNextPage();
|
|
111
|
+
} }, "Show more results")) : (react_1.default.createElement(react_1.default.Fragment, null)),
|
|
112
|
+
react_1.default.createElement(react_bootstrap_1.Modal, { size: "lg", show: showThreadModal, onHide: function () { return setShowThreadModal(false); }, animation: false },
|
|
113
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Header, null,
|
|
114
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Title, null, "Edit Thread")),
|
|
115
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Body, null,
|
|
116
|
+
react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { isReply: false, initialText: threadBody, onClose: function () { return setShowThreadModal(false); }, initialTitle: threadData === null || threadData === void 0 ? void 0 : threadData.title, id: threadId }))),
|
|
117
|
+
react_1.default.createElement(WarningModal_1.default, { show: showDeleteModal, className: "bootstrap-4-backport", title: "Confirm Deletion", modalBody: "Are you sure you want to delete this thread?", onCancel: function () { return setShowDeleteModal(false); }, onConfirm: function () { return threadData && deleteThread(threadData); }, confirmButtonVariant: "danger", confirmButtonText: "Delete" }),
|
|
118
|
+
react_1.default.createElement(WarningModal_1.default, { show: showRestoreModal, className: "bootstrap-4-backport", title: "Confirm Restoration", modalBody: "Are you sure you want to restore this thread?", onCancel: function () { return setShowRestoreModal(false); }, onConfirm: function () { return threadData && restoreThread(threadData); }, confirmButtonVariant: "info", confirmButtonText: "Restore" }),
|
|
119
|
+
react_1.default.createElement(react_bootstrap_1.Modal, { className: "bootstrap-4-backport", show: showSignInModal, onHide: function () { return setShowSignInModal(false); }, animation: false },
|
|
120
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Header, { closeButton: true }),
|
|
121
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Body, null, SIGN_IN_TEXT),
|
|
122
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Footer, null,
|
|
123
|
+
react_1.default.createElement(material_1.Button, { onClick: function () { return setShowSignInModal(false); }, variant: "contained", className: SynapseConstants_1.SRC_SIGN_IN_CLASS }, "Sign In")))));
|
|
124
|
+
}
|
|
125
|
+
exports.DiscussionThread = DiscussionThread;
|
|
126
|
+
//# sourceMappingURL=DiscussionThread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscussionThread.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/DiscussionThread.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForumPage = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var material_1 = require("@mui/material");
|
|
6
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
var react_bootstrap_1 = require("react-bootstrap");
|
|
8
|
+
var SynapseAPI_1 = require("../../utils/hooks/SynapseAPI");
|
|
9
|
+
var useForum_1 = require("../../utils/hooks/SynapseAPI/forum/useForum");
|
|
10
|
+
var useSubscription_1 = require("../../utils/hooks/SynapseAPI/subscription/useSubscription");
|
|
11
|
+
var SynapseConstants_1 = require("../../utils/SynapseConstants");
|
|
12
|
+
var DiscussionBundle_1 = require("../../utils/synapseTypes/DiscussionBundle");
|
|
13
|
+
var Subscription_1 = require("../../utils/synapseTypes/Subscription");
|
|
14
|
+
var ToastMessage_1 = require("../ToastMessage");
|
|
15
|
+
var ForumTable_1 = require("./ForumTable");
|
|
16
|
+
var ForumThreadEditor_1 = require("./ForumThreadEditor");
|
|
17
|
+
var SubscribersModal_1 = require("./SubscribersModal");
|
|
18
|
+
var SIGN_IN_TEXT = 'You will need to sign in for access to that resource';
|
|
19
|
+
var ForumPage = function (_a) {
|
|
20
|
+
var _b;
|
|
21
|
+
var forumId = _a.forumId, limit = _a.limit, onClickLink = _a.onClickLink;
|
|
22
|
+
var _c = (0, react_1.useState)(false), showThreadModal = _c[0], setShowThreadModal = _c[1];
|
|
23
|
+
var _d = (0, react_1.useState)(false), showSignInModal = _d[0], setShowSignInModal = _d[1];
|
|
24
|
+
var _e = (0, react_1.useState)(false), showDeletedThread = _e[0], setShowDeletedThread = _e[1];
|
|
25
|
+
var _f = (0, react_1.useState)(false), showSubscriberModal = _f[0], setShowSubscriberModal = _f[1];
|
|
26
|
+
var _g = (0, useSubscription_1.useSubscription)(forumId, Subscription_1.SubscriptionObjectType.FORUM), subscription = _g.subscription, isLoading = _g.isLoading, toggleSubscribed = _g.toggleSubscribed;
|
|
27
|
+
function handleFollowBtn() {
|
|
28
|
+
try {
|
|
29
|
+
toggleSubscribed();
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
(0, ToastMessage_1.displayToast)(err.reason, 'danger');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
var moderatorList = (0, useForum_1.useGetModerators)(forumId).data;
|
|
36
|
+
var currentUserProfile = (0, SynapseAPI_1.useGetCurrentUserProfile)().data;
|
|
37
|
+
var isCurrentUserModerator = moderatorList === null || moderatorList === void 0 ? void 0 : moderatorList.results.includes((_b = currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.ownerId) !== null && _b !== void 0 ? _b : '');
|
|
38
|
+
var handleNewThreadBtn = function () {
|
|
39
|
+
if ((currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.userName) == 'anonymous') {
|
|
40
|
+
setShowSignInModal(true);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
setShowThreadModal(true);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
return (react_1.default.createElement("div", { className: "ForumTable bootstrap-4-backport" },
|
|
47
|
+
react_1.default.createElement("div", { className: "ForumTable__top-level-control" },
|
|
48
|
+
react_1.default.createElement(SubscribersModal_1.SubscribersModal, { id: forumId, objectType: Subscription_1.SubscriptionObjectType.FORUM, showModal: showSubscriberModal, handleModal: setShowSubscriberModal }),
|
|
49
|
+
react_1.default.createElement(react_bootstrap_1.Button, { variant: subscription ? 'outline-primary' : 'primary', onClick: function () { return handleFollowBtn(); }, disabled: isLoading }, subscription ? 'Unfollow' : 'Follow'),
|
|
50
|
+
react_1.default.createElement(react_bootstrap_1.Button, { variant: "primary", onClick: function () { return handleNewThreadBtn(); } }, "New Thread"),
|
|
51
|
+
isCurrentUserModerator && (react_1.default.createElement(react_bootstrap_1.Button, { onClick: function () { return setShowDeletedThread(!showDeletedThread); } }, showDeletedThread
|
|
52
|
+
? 'Hide Deleted Threads'
|
|
53
|
+
: 'Show Deleted Threads'))),
|
|
54
|
+
showDeletedThread && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
55
|
+
react_1.default.createElement(material_1.Typography, { variant: "h4" }, "Deleted Threads"),
|
|
56
|
+
react_1.default.createElement(ForumTable_1.ForumTable, { onClickLink: onClickLink, forumId: forumId, limit: limit, filter: DiscussionBundle_1.DiscussionFilter.DELETED_ONLY }))),
|
|
57
|
+
react_1.default.createElement(ForumTable_1.ForumTable, { onClickLink: onClickLink, forumId: forumId, limit: limit, filter: DiscussionBundle_1.DiscussionFilter.EXCLUDE_DELETED }),
|
|
58
|
+
react_1.default.createElement(react_bootstrap_1.Modal, { size: "lg", show: showThreadModal, onHide: function () { return setShowThreadModal(false); }, animation: false },
|
|
59
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Header, null,
|
|
60
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Title, null, "New Thread")),
|
|
61
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Body, null,
|
|
62
|
+
react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { isReply: false, id: forumId, onClose: function () { return setShowThreadModal(false); } }))),
|
|
63
|
+
react_1.default.createElement(react_bootstrap_1.Modal, { className: "bootstrap-4-backport", show: showSignInModal, onHide: function () { return setShowSignInModal(false); }, animation: false },
|
|
64
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Header, { closeButton: true }),
|
|
65
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Body, null, SIGN_IN_TEXT),
|
|
66
|
+
react_1.default.createElement(react_bootstrap_1.Modal.Footer, null,
|
|
67
|
+
react_1.default.createElement(react_bootstrap_1.Button, { onClick: function () { return setShowSignInModal(false); }, className: SynapseConstants_1.SRC_SIGN_IN_CLASS }, "Sign In")))));
|
|
68
|
+
};
|
|
69
|
+
exports.ForumPage = ForumPage;
|
|
70
|
+
//# sourceMappingURL=ForumPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ForumPage.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/ForumPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DiscussionFilter } from '../../utils/synapseTypes/DiscussionBundle';
|
|
3
|
+
export type ForumTableProps = {
|
|
4
|
+
forumId: string;
|
|
5
|
+
limit: number;
|
|
6
|
+
onClickLink: () => void;
|
|
7
|
+
filter: DiscussionFilter;
|
|
8
|
+
};
|
|
9
|
+
export declare const ForumTable: React.FC<ForumTableProps>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForumTable = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
6
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
var react_bootstrap_1 = require("react-bootstrap");
|
|
8
|
+
var Sort_1 = tslib_1.__importDefault(require("../../assets/icons/Sort"));
|
|
9
|
+
var useForum_1 = require("../../utils/hooks/SynapseAPI/forum/useForum");
|
|
10
|
+
var SynapseConstants_1 = require("../../utils/SynapseConstants");
|
|
11
|
+
var synapseTypes_1 = require("../../utils/synapseTypes");
|
|
12
|
+
var DiscussionBundle_1 = require("../../utils/synapseTypes/DiscussionBundle");
|
|
13
|
+
var IconSvg_1 = tslib_1.__importDefault(require("../IconSvg"));
|
|
14
|
+
var UserCard_1 = tslib_1.__importDefault(require("../UserCard"));
|
|
15
|
+
var ForumTable = function (_a) {
|
|
16
|
+
var _b;
|
|
17
|
+
var forumId = _a.forumId, limit = _a.limit, filter = _a.filter, onClickLink = _a.onClickLink;
|
|
18
|
+
var _c = (0, react_1.useState)(DiscussionBundle_1.DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY), sort = _c[0], setSort = _c[1];
|
|
19
|
+
var _d = (0, react_1.useState)(false), isAscending = _d[0], setIsAscending = _d[1];
|
|
20
|
+
var _e = (0, useForum_1.useGetForumInfinite)(forumId, limit, sort, isAscending, filter), data = _e.data, hasNextPage = _e.hasNextPage, fetchNextPage = _e.fetchNextPage;
|
|
21
|
+
var threads = (_b = data === null || data === void 0 ? void 0 : data.pages.flatMap(function (page) { return page.results; })) !== null && _b !== void 0 ? _b : [];
|
|
22
|
+
var onSort = function (field) {
|
|
23
|
+
if (sort == field) {
|
|
24
|
+
setSort(field);
|
|
25
|
+
setIsAscending(!isAscending);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
setSort(field);
|
|
29
|
+
setIsAscending(false);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return (react_1.default.createElement("div", { className: "ForumTable bootstrap-4-backport" },
|
|
33
|
+
react_1.default.createElement(react_bootstrap_1.Table, null,
|
|
34
|
+
react_1.default.createElement("thead", null,
|
|
35
|
+
react_1.default.createElement("tr", null,
|
|
36
|
+
react_1.default.createElement("th", null,
|
|
37
|
+
react_1.default.createElement("span", { className: "SRC-split" },
|
|
38
|
+
react_1.default.createElement("span", null, "Topic"),
|
|
39
|
+
react_1.default.createElement(Sort_1.default, { role: "button", "aria-label": "Sort by Topic", active: sort === DiscussionBundle_1.DiscussionThreadOrder.THREAD_TITLE, direction: sort === 'THREAD_TITLE'
|
|
40
|
+
? isAscending === false
|
|
41
|
+
? synapseTypes_1.Direction.DESC
|
|
42
|
+
: synapseTypes_1.Direction.ASC
|
|
43
|
+
: synapseTypes_1.Direction.DESC, onClick: function () { return onSort(DiscussionBundle_1.DiscussionThreadOrder.THREAD_TITLE); } }))),
|
|
44
|
+
react_1.default.createElement("th", null, "Author"),
|
|
45
|
+
react_1.default.createElement("th", null, "Active Users"),
|
|
46
|
+
react_1.default.createElement("th", null,
|
|
47
|
+
react_1.default.createElement("span", { className: "SRC-split" },
|
|
48
|
+
react_1.default.createElement("span", null, "Replies"),
|
|
49
|
+
react_1.default.createElement(Sort_1.default, { role: "button", "aria-label": "Sort by Replies", active: sort === DiscussionBundle_1.DiscussionThreadOrder.NUMBER_OF_REPLIES, direction: sort === 'NUMBER_OF_REPLIES'
|
|
50
|
+
? isAscending === false
|
|
51
|
+
? synapseTypes_1.Direction.DESC
|
|
52
|
+
: synapseTypes_1.Direction.ASC
|
|
53
|
+
: synapseTypes_1.Direction.DESC, onClick: function () {
|
|
54
|
+
return onSort(DiscussionBundle_1.DiscussionThreadOrder.NUMBER_OF_REPLIES);
|
|
55
|
+
} }))),
|
|
56
|
+
react_1.default.createElement("th", null,
|
|
57
|
+
react_1.default.createElement("span", { className: "SRC-split" },
|
|
58
|
+
react_1.default.createElement("span", null, "Views"),
|
|
59
|
+
react_1.default.createElement(Sort_1.default, { role: "button", "aria-label": "Sort by Views", active: sort === DiscussionBundle_1.DiscussionThreadOrder.NUMBER_OF_VIEWS, direction: sort === 'NUMBER_OF_VIEWS'
|
|
60
|
+
? isAscending === false
|
|
61
|
+
? synapseTypes_1.Direction.DESC
|
|
62
|
+
: synapseTypes_1.Direction.ASC
|
|
63
|
+
: synapseTypes_1.Direction.DESC, onClick: function () { return onSort(DiscussionBundle_1.DiscussionThreadOrder.NUMBER_OF_VIEWS); } }))),
|
|
64
|
+
react_1.default.createElement("th", null,
|
|
65
|
+
react_1.default.createElement("span", { className: "SRC-split" },
|
|
66
|
+
react_1.default.createElement("span", null, "Activity"),
|
|
67
|
+
react_1.default.createElement(Sort_1.default, { role: "button", "aria-label": "Sort by Last Activity", active: sort === DiscussionBundle_1.DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY, direction: sort === 'PINNED_AND_LAST_ACTIVITY'
|
|
68
|
+
? isAscending === false
|
|
69
|
+
? synapseTypes_1.Direction.DESC
|
|
70
|
+
: synapseTypes_1.Direction.ASC
|
|
71
|
+
: synapseTypes_1.Direction.DESC, onClick: function () {
|
|
72
|
+
return onSort(DiscussionBundle_1.DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY);
|
|
73
|
+
} }))))),
|
|
74
|
+
react_1.default.createElement("tbody", null, threads.map(function (item) {
|
|
75
|
+
return (react_1.default.createElement("tr", { key: item.id },
|
|
76
|
+
react_1.default.createElement("td", null,
|
|
77
|
+
react_1.default.createElement("a", { onClick: function () { return onClickLink(); } },
|
|
78
|
+
item.isPinned ? react_1.default.createElement(IconSvg_1.default, { icon: "pushpin" }) : react_1.default.createElement(react_1.default.Fragment, null),
|
|
79
|
+
item.title)),
|
|
80
|
+
react_1.default.createElement("td", null,
|
|
81
|
+
react_1.default.createElement(UserCard_1.default, { size: SynapseConstants_1.SMALL_USER_CARD, ownerId: item.createdBy })),
|
|
82
|
+
react_1.default.createElement("td", null, item.activeAuthors.map(function (user) { return (react_1.default.createElement("div", { key: user, className: "avatarContainer" },
|
|
83
|
+
react_1.default.createElement(UserCard_1.default, { showCardOnHover: true, className: "ActiveUsers", size: SynapseConstants_1.AVATAR, avatarSize: 'MEDIUM', ownerId: user }))); })),
|
|
84
|
+
react_1.default.createElement("td", null, item.numberOfReplies),
|
|
85
|
+
react_1.default.createElement("td", null, item.numberOfViews),
|
|
86
|
+
react_1.default.createElement("td", null, (0, dayjs_1.default)(item.lastActivity).format('L'))));
|
|
87
|
+
}))),
|
|
88
|
+
hasNextPage && (react_1.default.createElement(react_bootstrap_1.Button, { variant: "outline-primary", onClick: function () {
|
|
89
|
+
fetchNextPage();
|
|
90
|
+
} }, "Show more results"))));
|
|
91
|
+
};
|
|
92
|
+
exports.ForumTable = ForumTable;
|
|
93
|
+
//# sourceMappingURL=ForumTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ForumTable.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/ForumTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type ForumThreadEditorProps = {
|
|
3
|
+
initialTitle?: string;
|
|
4
|
+
initialText?: string;
|
|
5
|
+
id: string;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
isReply: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const ForumThreadEditor: React.FunctionComponent<ForumThreadEditorProps>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForumThreadEditor = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
var react_bootstrap_1 = require("react-bootstrap");
|
|
7
|
+
var useThread_1 = require("../../utils/hooks/SynapseAPI/forum/useThread");
|
|
8
|
+
var useReply_1 = require("../../utils/hooks/SynapseAPI/forum/useReply");
|
|
9
|
+
var MarkdownEditor_1 = require("../markdown/MarkdownEditor");
|
|
10
|
+
var ForumThreadEditor = function (_a) {
|
|
11
|
+
var initialText = _a.initialText, initialTitle = _a.initialTitle, id = _a.id, onClose = _a.onClose, isReply = _a.isReply;
|
|
12
|
+
var _b = (0, react_1.useState)(initialTitle !== null && initialTitle !== void 0 ? initialTitle : ''), title = _b[0], setTitle = _b[1];
|
|
13
|
+
var _c = (0, react_1.useState)(initialText !== null && initialText !== void 0 ? initialText : ''), text = _c[0], setText = _c[1];
|
|
14
|
+
var _d = (0, useThread_1.useUpdateThreadTitle)({
|
|
15
|
+
onSuccess: function () { return onClose(); },
|
|
16
|
+
}), updateTitle = _d.mutate, isLoadingTitle = _d.isLoading;
|
|
17
|
+
var _e = (0, useThread_1.useUpdateThreadMessage)({
|
|
18
|
+
onSuccess: function () { return onClose(); },
|
|
19
|
+
}), updateMessage = _e.mutate, isLoadingMessage = _e.isLoading;
|
|
20
|
+
var _f = (0, useThread_1.useCreateThread)({
|
|
21
|
+
onSuccess: function () { return onClose(); },
|
|
22
|
+
}), createThread = _f.mutate, isLoadingThread = _f.isLoading;
|
|
23
|
+
var _g = (0, useReply_1.usePostReply)({
|
|
24
|
+
onSuccess: function () { return onClose(); },
|
|
25
|
+
}), createReply = _g.mutate, isLoadingReply = _g.isLoading;
|
|
26
|
+
var _h = (0, useReply_1.usePutReply)({
|
|
27
|
+
onSuccess: function () { return onClose(); },
|
|
28
|
+
}), updateReply = _h.mutate, isLoadingReplyUpdate = _h.isLoading;
|
|
29
|
+
var isLoading = isLoadingMessage ||
|
|
30
|
+
isLoadingReply ||
|
|
31
|
+
isLoadingThread ||
|
|
32
|
+
isLoadingTitle ||
|
|
33
|
+
isLoadingReplyUpdate;
|
|
34
|
+
var onSave = function (text, title) {
|
|
35
|
+
if (isReply) {
|
|
36
|
+
if (initialText) {
|
|
37
|
+
// updating reply
|
|
38
|
+
updateReply({
|
|
39
|
+
replyId: id,
|
|
40
|
+
messageMarkdown: text,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// posting reply
|
|
45
|
+
createReply({
|
|
46
|
+
threadId: id,
|
|
47
|
+
messageMarkdown: text,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
if (initialTitle) {
|
|
53
|
+
// updating thread
|
|
54
|
+
updateTitle({
|
|
55
|
+
title: title,
|
|
56
|
+
threadId: id,
|
|
57
|
+
});
|
|
58
|
+
updateMessage({
|
|
59
|
+
messageMarkdown: text,
|
|
60
|
+
threadId: id,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// posting thread
|
|
65
|
+
var request = {
|
|
66
|
+
forumId: id,
|
|
67
|
+
title: title,
|
|
68
|
+
messageMarkdown: text,
|
|
69
|
+
};
|
|
70
|
+
createThread(request);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
return (react_1.default.createElement("div", { className: "bootstrap-4-backport" },
|
|
75
|
+
!isReply && (react_1.default.createElement(react_bootstrap_1.FormControl, { type: "text", placeholder: "Title", value: title, onChange: function (e) { return setTitle(e.target.value); } })),
|
|
76
|
+
react_1.default.createElement(MarkdownEditor_1.MarkdownEditor, { text: text, setText: setText }),
|
|
77
|
+
react_1.default.createElement("div", { style: { display: 'flex', justifyContent: 'flex-end' } },
|
|
78
|
+
react_1.default.createElement(react_bootstrap_1.Button, { onClick: onClose, variant: "light" }, "Cancel"),
|
|
79
|
+
react_1.default.createElement(react_bootstrap_1.Button, { disabled: isLoading, onClick: function () { return onSave(text, title); }, variant: "primary" }, isLoading ? 'Saving' : 'Save'))));
|
|
80
|
+
};
|
|
81
|
+
exports.ForumThreadEditor = ForumThreadEditor;
|
|
82
|
+
//# sourceMappingURL=ForumThreadEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ForumThreadEditor.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/ForumThreadEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SubscriptionObjectType } from '../../utils/synapseTypes/Subscription';
|
|
3
|
+
export type SubscribersModalProps = {
|
|
4
|
+
id: string;
|
|
5
|
+
objectType: SubscriptionObjectType;
|
|
6
|
+
showModal: boolean;
|
|
7
|
+
handleModal: (a: boolean) => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const SubscribersModal: React.FC<SubscribersModalProps>;
|