@selfcommunity/react-ui 0.1.2-alpha.7 → 0.1.2
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/lib/cjs/components/BroadcastMessages/Message.js +2 -2
- package/lib/cjs/components/CategoriesFollowed/CategoriesFollowed.js +3 -20
- package/lib/cjs/components/CategoriesSuggestion/CategoriesSuggestion.js +1 -4
- package/lib/cjs/components/CommentObject/CommentObject.js +4 -1
- package/lib/cjs/components/Composer/Composer.js +30 -15
- package/lib/cjs/components/Composer/Poll/Poll.js +10 -2
- package/lib/cjs/components/Feed/Feed.js +28 -23
- package/lib/cjs/components/FeedObject/FeedObject.js +21 -31
- package/lib/cjs/components/PeopleSuggestion/PeopleSuggestion.js +2 -8
- package/lib/cjs/components/UsersFollowed/UsersFollowed.js +3 -18
- package/lib/cjs/shared/BaseDialog/BaseDialog.js +5 -0
- package/lib/cjs/shared/DateTimeAgo/index.js +18 -15
- package/lib/cjs/shared/Media/Link/PreviewComponent.js +2 -1
- package/lib/cjs/shared/Media/Share/PreviewComponent.js +2 -1
- package/lib/cjs/shared/Media/Video/PreviewComponent.js +2 -8
- package/lib/esm/components/BroadcastMessages/Message.js +2 -2
- package/lib/esm/components/CategoriesFollowed/CategoriesFollowed.js +3 -20
- package/lib/esm/components/CategoriesSuggestion/CategoriesSuggestion.js +1 -4
- package/lib/esm/components/CommentObject/CommentObject.js +4 -1
- package/lib/esm/components/Composer/Composer.js +30 -15
- package/lib/esm/components/Composer/Poll/Poll.js +10 -2
- package/lib/esm/components/Feed/Feed.js +28 -23
- package/lib/esm/components/FeedObject/FeedObject.js +21 -31
- package/lib/esm/components/PeopleSuggestion/PeopleSuggestion.js +2 -8
- package/lib/esm/components/UsersFollowed/UsersFollowed.js +3 -18
- package/lib/esm/react-i18n/src/index.d.ts +2 -0
- package/lib/esm/react-i18n/src/index.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/BroadcastMessages/Message.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/CategoriesFollowed/CategoriesFollowed.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/CategoriesSuggestion/CategoriesSuggestion.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/CommentObject/CommentObject.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/Composer/Composer.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/Composer/Poll/Poll.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/Feed/Feed.d.ts +5 -0
- package/lib/esm/react-ui/src/components/Feed/Feed.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/FeedObject/FeedObject.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/PeopleSuggestion/PeopleSuggestion.d.ts.map +1 -1
- package/lib/esm/react-ui/src/components/UsersFollowed/UsersFollowed.d.ts.map +1 -1
- package/lib/esm/react-ui/src/shared/BaseDialog/BaseDialog.d.ts.map +1 -1
- package/lib/esm/react-ui/src/shared/DateTimeAgo/index.d.ts.map +1 -1
- package/lib/esm/react-ui/src/shared/Media/Video/PreviewComponent.d.ts.map +1 -1
- package/lib/esm/shared/BaseDialog/BaseDialog.js +5 -0
- package/lib/esm/shared/DateTimeAgo/index.js +18 -15
- package/lib/esm/shared/Media/Link/PreviewComponent.js +2 -1
- package/lib/esm/shared/Media/Share/PreviewComponent.js +2 -1
- package/lib/esm/shared/Media/Video/PreviewComponent.js +2 -8
- package/lib/umd/react-ui.js +21 -21
- package/lib/umd/react-ui.js.LICENSE.txt +5 -1
- package/lib/umd/react-ui.js.map +1 -1
- package/package.json +7 -6
|
@@ -85,7 +85,7 @@ const Root = (0, _styles.styled)(_Widget.default, {
|
|
|
85
85
|
height: 30
|
|
86
86
|
}
|
|
87
87
|
}));
|
|
88
|
-
const PREFERENCES = [_reactCore.SCPreferences.
|
|
88
|
+
const PREFERENCES = [_reactCore.SCPreferences.LOGO_NAVBAR_LOGO_MOBILE, _reactCore.SCPreferences.TEXT_APPLICATION_NAME];
|
|
89
89
|
|
|
90
90
|
function Message(props) {
|
|
91
91
|
// PROPS
|
|
@@ -181,7 +181,7 @@ function Message(props) {
|
|
|
181
181
|
className: classes.header,
|
|
182
182
|
avatar: /*#__PURE__*/_react.default.createElement(_material.Avatar, {
|
|
183
183
|
alt: preferences[_reactCore.SCPreferences.TEXT_APPLICATION_NAME],
|
|
184
|
-
src: preferences[_reactCore.SCPreferences.
|
|
184
|
+
src: preferences[_reactCore.SCPreferences.LOGO_NAVBAR_LOGO_MOBILE_MOBILE]
|
|
185
185
|
}),
|
|
186
186
|
action: template === _types.SCBroadcastMessageTemplateType.DETAIL && /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
187
187
|
"aria-label": "close",
|
|
@@ -111,7 +111,6 @@ function CategoriesFollowed(inProps) {
|
|
|
111
111
|
} = props; // STATE
|
|
112
112
|
|
|
113
113
|
const [categories, setCategories] = (0, _react.useState)([]);
|
|
114
|
-
const [visibleCategories, setVisibleCategories] = (0, _react.useState)(limit);
|
|
115
114
|
const [loading, setLoading] = (0, _react.useState)(true);
|
|
116
115
|
const [hasMore, setHasMore] = (0, _react.useState)(false);
|
|
117
116
|
const [total, setTotal] = (0, _react.useState)(0);
|
|
@@ -129,17 +128,12 @@ function CategoriesFollowed(inProps) {
|
|
|
129
128
|
if (scUserContext.user['id'] === userId) {
|
|
130
129
|
setCategories(categories.filter(c => c.id !== category.id));
|
|
131
130
|
setTotal(prev => prev - 1);
|
|
132
|
-
|
|
133
|
-
if (visibleCategories < limit && total > 1) {
|
|
134
|
-
loadCategories(1);
|
|
135
|
-
}
|
|
131
|
+
setHasMore(total - 1 > limit);
|
|
136
132
|
} else {
|
|
137
133
|
const newCategories = [...categories];
|
|
138
134
|
const index = newCategories.findIndex(u => u.id === category.id);
|
|
139
135
|
|
|
140
136
|
if (index !== -1) {
|
|
141
|
-
console.log(category.followed);
|
|
142
|
-
|
|
143
137
|
if (category.followed) {
|
|
144
138
|
newCategories[index].followers_counter = category.followers_counter - 1;
|
|
145
139
|
newCategories[index].followed = !category.followed;
|
|
@@ -167,7 +161,7 @@ function CategoriesFollowed(inProps) {
|
|
|
167
161
|
setCategories([...categories, ...data]);
|
|
168
162
|
setTotal(data.length);
|
|
169
163
|
setNext(data['next']);
|
|
170
|
-
setHasMore(data.length >
|
|
164
|
+
setHasMore(data.length > limit);
|
|
171
165
|
setLoading(false);
|
|
172
166
|
}).catch(error => {
|
|
173
167
|
setLoading(false);
|
|
@@ -176,17 +170,6 @@ function CategoriesFollowed(inProps) {
|
|
|
176
170
|
});
|
|
177
171
|
}
|
|
178
172
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Loads more categories when followed list changes
|
|
181
|
-
*/
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
function loadCategories(n) {
|
|
185
|
-
const newIndex = visibleCategories + n;
|
|
186
|
-
const newHasMore = newIndex < categories.length - 1;
|
|
187
|
-
setVisibleCategories(newIndex);
|
|
188
|
-
setHasMore(newHasMore);
|
|
189
|
-
}
|
|
190
173
|
/**
|
|
191
174
|
* On mount, fetches the list of categories followed
|
|
192
175
|
*/
|
|
@@ -209,7 +192,7 @@ function CategoriesFollowed(inProps) {
|
|
|
209
192
|
})}`), !total ? /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
210
193
|
className: classes.noResults,
|
|
211
194
|
variant: "body2"
|
|
212
|
-
}, `${intl.formatMessage(messages.noCategories)}`) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_List.default, null, categories.slice(0,
|
|
195
|
+
}, `${intl.formatMessage(messages.noCategories)}`) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_List.default, null, categories.slice(0, limit).map(category => /*#__PURE__*/_react.default.createElement(_material.ListItem, {
|
|
213
196
|
key: category.id
|
|
214
197
|
}, /*#__PURE__*/_react.default.createElement(_Category.default, _extends({
|
|
215
198
|
elevation: 0,
|
|
@@ -110,10 +110,7 @@ function CategoriesSuggestion(inProps) {
|
|
|
110
110
|
function handleOnFollowCategory(category, follow) {
|
|
111
111
|
setCategories(categories.filter(c => c.id !== category.id));
|
|
112
112
|
setTotal(prev => prev - 1);
|
|
113
|
-
|
|
114
|
-
if (visibleCategories < limit && total > 1) {
|
|
115
|
-
loadCategories(1);
|
|
116
|
-
}
|
|
113
|
+
setHasMore(total - 1 > limit);
|
|
117
114
|
}
|
|
118
115
|
/**
|
|
119
116
|
* Fetches categories suggestion list
|
|
@@ -117,7 +117,7 @@ const Root = (0, _styles.styled)(_material.Box, {
|
|
|
117
117
|
[`& .${classes.nestedComments}`]: {
|
|
118
118
|
paddingTop: 0,
|
|
119
119
|
paddingBottom: 0,
|
|
120
|
-
paddingLeft:
|
|
120
|
+
paddingLeft: 25,
|
|
121
121
|
'& ul.MuiList-root': {
|
|
122
122
|
paddingTop: 0,
|
|
123
123
|
paddingBottom: 0,
|
|
@@ -125,6 +125,9 @@ const Root = (0, _styles.styled)(_material.Box, {
|
|
|
125
125
|
'& li.MuiListItem-root': {
|
|
126
126
|
paddingTop: 5
|
|
127
127
|
}
|
|
128
|
+
},
|
|
129
|
+
[theme.breakpoints.up('sm')]: {
|
|
130
|
+
paddingLeft: 55
|
|
128
131
|
}
|
|
129
132
|
},
|
|
130
133
|
[`& .${classes.content}`]: {
|
|
@@ -747,10 +747,12 @@ function Composer(inProps) {
|
|
|
747
747
|
value: (0, _apiServices.formatHttpError)(error)
|
|
748
748
|
});
|
|
749
749
|
}).then(() => setIsSubmitting(false));
|
|
750
|
-
};
|
|
751
|
-
/* Renderers */
|
|
750
|
+
}; // RENDER
|
|
752
751
|
|
|
753
752
|
|
|
753
|
+
const theme = (0, _styles.useTheme)();
|
|
754
|
+
const smDown = (0, _material.useMediaQuery)(theme.breakpoints.down('sm'));
|
|
755
|
+
const fullScreen = (0, _material.useMediaQuery)(theme.breakpoints.down('md'));
|
|
754
756
|
const hasMediaShare = (0, _react.useMemo)(() => medias.findIndex(m => m.type === _Media.MEDIA_TYPE_SHARE) !== -1, [medias]);
|
|
755
757
|
|
|
756
758
|
const renderMediaAdornment = mediaObjectType => {
|
|
@@ -792,7 +794,10 @@ function Composer(inProps) {
|
|
|
792
794
|
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Avatar, {
|
|
793
795
|
className: classes.avatar,
|
|
794
796
|
src: scAuthContext.user.avatar
|
|
795
|
-
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.
|
|
797
|
+
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, smDown ? /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
798
|
+
onClick: handleChangeView(MAIN_VIEW),
|
|
799
|
+
color: "inherit"
|
|
800
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "check")) : /*#__PURE__*/_react.default.createElement(_material.Button, {
|
|
796
801
|
onClick: handleChangeView(MAIN_VIEW),
|
|
797
802
|
variant: "text",
|
|
798
803
|
color: "inherit"
|
|
@@ -862,7 +867,11 @@ function Composer(inProps) {
|
|
|
862
867
|
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Avatar, {
|
|
863
868
|
className: classes.avatar,
|
|
864
869
|
src: scAuthContext.user.avatar
|
|
865
|
-
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.
|
|
870
|
+
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, smDown ? /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
871
|
+
onClick: handleChangeView(MAIN_VIEW),
|
|
872
|
+
color: "inherit",
|
|
873
|
+
disabled: mediasRef.current.mediaChunks.length > 0
|
|
874
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "check")) : /*#__PURE__*/_react.default.createElement(_material.Button, {
|
|
866
875
|
onClick: handleChangeView(MAIN_VIEW),
|
|
867
876
|
variant: "text",
|
|
868
877
|
color: "inherit",
|
|
@@ -892,15 +901,23 @@ function Composer(inProps) {
|
|
|
892
901
|
size: "small",
|
|
893
902
|
disabled: !hasPoll()
|
|
894
903
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "arrow_back")), /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, {
|
|
895
|
-
id: "ui.composer.poll
|
|
896
|
-
defaultMessage: "ui.composer.poll
|
|
904
|
+
id: "ui.composer.poll",
|
|
905
|
+
defaultMessage: "ui.composer.poll"
|
|
897
906
|
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Avatar, {
|
|
898
907
|
className: classes.avatar,
|
|
899
908
|
src: scAuthContext.user.avatar
|
|
900
909
|
})), /*#__PURE__*/_react.default.createElement(_material.Stack, {
|
|
901
910
|
spacing: 2,
|
|
902
911
|
direction: "row"
|
|
903
|
-
}, /*#__PURE__*/_react.default.createElement(_material.
|
|
912
|
+
}, smDown ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
913
|
+
onClick: handleChangeView(MAIN_VIEW),
|
|
914
|
+
color: "inherit",
|
|
915
|
+
disabled: !hasPoll()
|
|
916
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "check")), /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
917
|
+
onClick: handleChangeView(MAIN_VIEW),
|
|
918
|
+
color: "inherit",
|
|
919
|
+
disabled: !hasPoll()
|
|
920
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "delete"))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
|
|
904
921
|
onClick: handleDeletePoll,
|
|
905
922
|
variant: "text",
|
|
906
923
|
color: "inherit"
|
|
@@ -915,7 +932,7 @@ function Composer(inProps) {
|
|
|
915
932
|
}, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, {
|
|
916
933
|
id: "ui.composer.done",
|
|
917
934
|
defaultMessage: "ui.composer.done"
|
|
918
|
-
})))), /*#__PURE__*/_react.default.createElement(_material.DialogContent, {
|
|
935
|
+
}))))), /*#__PURE__*/_react.default.createElement(_material.DialogContent, {
|
|
919
936
|
className: classes.content
|
|
920
937
|
}, /*#__PURE__*/_react.default.createElement(_Poll2.default, {
|
|
921
938
|
onChange: handleChangePoll,
|
|
@@ -938,7 +955,10 @@ function Composer(inProps) {
|
|
|
938
955
|
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Avatar, {
|
|
939
956
|
className: classes.avatar,
|
|
940
957
|
src: scAuthContext.user.avatar
|
|
941
|
-
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.
|
|
958
|
+
})), /*#__PURE__*/_react.default.createElement(_material.Box, null, smDown ? /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
959
|
+
onClick: handleChangeView(MAIN_VIEW),
|
|
960
|
+
color: "inherit"
|
|
961
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "check")) : /*#__PURE__*/_react.default.createElement(_material.Button, {
|
|
942
962
|
onClick: handleChangeView(MAIN_VIEW),
|
|
943
963
|
variant: "text",
|
|
944
964
|
color: "inherit"
|
|
@@ -1062,9 +1082,7 @@ function Composer(inProps) {
|
|
|
1062
1082
|
onClick: handleChangeView(POLL_VIEW)
|
|
1063
1083
|
}, /*#__PURE__*/_react.default.createElement(_material.Badge, {
|
|
1064
1084
|
className: classes.badgeError,
|
|
1065
|
-
badgeContent: pollError ?
|
|
1066
|
-
fontSize: "small"
|
|
1067
|
-
}, "error_outline") : null,
|
|
1085
|
+
badgeContent: pollError ? ' ' : null,
|
|
1068
1086
|
color: "error"
|
|
1069
1087
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "bar_chart")))), /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
1070
1088
|
align: "right"
|
|
@@ -1126,9 +1144,6 @@ function Composer(inProps) {
|
|
|
1126
1144
|
}));
|
|
1127
1145
|
}
|
|
1128
1146
|
|
|
1129
|
-
const theme = (0, _styles.useTheme)();
|
|
1130
|
-
const fullScreen = (0, _material.useMediaQuery)(theme.breakpoints.down('md'));
|
|
1131
|
-
|
|
1132
1147
|
if (!scAuthContext.user) {
|
|
1133
1148
|
return null;
|
|
1134
1149
|
}
|
|
@@ -50,6 +50,7 @@ const localeMap = {
|
|
|
50
50
|
const PREFIX = 'SCComposerPoll';
|
|
51
51
|
const classes = {
|
|
52
52
|
root: `${PREFIX}-root`,
|
|
53
|
+
generalError: `${PREFIX}-generalError`,
|
|
53
54
|
title: `${PREFIX}-title`,
|
|
54
55
|
choices: `${PREFIX}-choices`,
|
|
55
56
|
choiceNew: `${PREFIX}-choice-new`,
|
|
@@ -63,6 +64,10 @@ const Root = (0, _styles.styled)(_material.Box, {
|
|
|
63
64
|
theme
|
|
64
65
|
}) => ({
|
|
65
66
|
padding: theme.spacing(2),
|
|
67
|
+
[`& .${classes.generalError}`]: {
|
|
68
|
+
marginBottom: theme.spacing(2),
|
|
69
|
+
color: theme.palette.error.main
|
|
70
|
+
},
|
|
66
71
|
[`& .${classes.title}, & .${classes.choices}, & .${classes.choiceNew}, & .${classes.metadata}`]: {
|
|
67
72
|
marginBottom: theme.spacing(3)
|
|
68
73
|
},
|
|
@@ -118,7 +123,8 @@ var _default = inProps => {
|
|
|
118
123
|
onChange
|
|
119
124
|
} = props;
|
|
120
125
|
const {
|
|
121
|
-
titleError = null
|
|
126
|
+
titleError = null,
|
|
127
|
+
error: generalError = null
|
|
122
128
|
} = Object.assign({}, error); // STATE
|
|
123
129
|
|
|
124
130
|
const [title, setTitle] = (0, _react.useState)(value !== null ? value.title : DEFAULT_POLL.title);
|
|
@@ -186,7 +192,9 @@ var _default = inProps => {
|
|
|
186
192
|
return /*#__PURE__*/_react.default.createElement(Root, {
|
|
187
193
|
id: id,
|
|
188
194
|
className: (0, _classnames.default)(classes.root, className)
|
|
189
|
-
}, /*#__PURE__*/_react.default.createElement(_material.
|
|
195
|
+
}, generalError && /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
196
|
+
className: classes.generalError
|
|
197
|
+
}, generalError), /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
190
198
|
className: classes.title
|
|
191
199
|
}, /*#__PURE__*/_react.default.createElement(_material.TextField, {
|
|
192
200
|
label: /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, {
|
|
@@ -35,6 +35,8 @@ var _pubsubJs = _interopRequireDefault(require("pubsub-js"));
|
|
|
35
35
|
|
|
36
36
|
var _useThemeProps = _interopRequireDefault(require("@mui/material/styles/useThemeProps"));
|
|
37
37
|
|
|
38
|
+
var _url = require("../../utils/url");
|
|
39
|
+
|
|
38
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
39
41
|
|
|
40
42
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -110,6 +112,9 @@ const Feed = (inProps, ref) => {
|
|
|
110
112
|
id = 'feed',
|
|
111
113
|
className,
|
|
112
114
|
endpoint,
|
|
115
|
+
endpointQueryParams = [{
|
|
116
|
+
limit: 5
|
|
117
|
+
}],
|
|
113
118
|
endMessage = /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, {
|
|
114
119
|
id: "ui.feed.noOtherFeedObject",
|
|
115
120
|
defaultMessage: "ui.feed.noOtherFeedObject"
|
|
@@ -134,8 +139,8 @@ const Feed = (inProps, ref) => {
|
|
|
134
139
|
} = props; // STATE
|
|
135
140
|
|
|
136
141
|
const [feedData, setFeedData] = (0, _react.useState)([]);
|
|
137
|
-
const [loading, setLoading] = (0, _react.useState)(
|
|
138
|
-
const [next, setNext] = (0, _react.useState)(endpoint.url({})); // CONTEXT
|
|
142
|
+
const [loading, setLoading] = (0, _react.useState)(false);
|
|
143
|
+
const [next, setNext] = (0, _react.useState)((0, _url.appendURLSearchParams)(endpoint.url({}), endpointQueryParams)); // CONTEXT
|
|
139
144
|
|
|
140
145
|
const scPreferences = (0, _reactCore.useSCPreferences)();
|
|
141
146
|
const scUserContext = (0, _react.useContext)(_reactCore.SCUserContext); // CONST
|
|
@@ -190,20 +195,22 @@ const Feed = (inProps, ref) => {
|
|
|
190
195
|
|
|
191
196
|
|
|
192
197
|
const fetch = () => {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
198
|
+
if (!loading) {
|
|
199
|
+
setLoading(true);
|
|
200
|
+
|
|
201
|
+
_apiServices.http.request({
|
|
202
|
+
url: next,
|
|
203
|
+
method: endpoint.method
|
|
204
|
+
}).then(res => {
|
|
205
|
+
const data = res.data;
|
|
206
|
+
setFeedData([...feedData, ...data.results]);
|
|
207
|
+
setNext(data.next);
|
|
208
|
+
setLoading(false);
|
|
209
|
+
onFetchData && onFetchData(res.data);
|
|
210
|
+
}).catch(error => {
|
|
211
|
+
_reactCore.Logger.error(_Errors.SCOPE_SC_UI, error);
|
|
212
|
+
});
|
|
213
|
+
}
|
|
207
214
|
};
|
|
208
215
|
|
|
209
216
|
const refresh = () => {
|
|
@@ -237,7 +244,7 @@ const Feed = (inProps, ref) => {
|
|
|
237
244
|
|
|
238
245
|
const theme = (0, _styles.useTheme)();
|
|
239
246
|
const oneColLayout = (0, _material.useMediaQuery)(theme.breakpoints.down('md'));
|
|
240
|
-
const getData = (0, _react.
|
|
247
|
+
const getData = (0, _react.useMemo)(() => () => {
|
|
241
248
|
const widgetSort = (w1, w2) => w1.position > w2.position ? 1 : -1;
|
|
242
249
|
|
|
243
250
|
const widgetReducer = (value, w) => {
|
|
@@ -250,7 +257,7 @@ const Feed = (inProps, ref) => {
|
|
|
250
257
|
left: _widgets.map(w => Object.assign({}, w, {
|
|
251
258
|
position: w.position * (w.column === 'right' ? 5 : 1)
|
|
252
259
|
})).sort(widgetSort).reduce(widgetReducer, [...feedData, ...(loading ? Array.from({
|
|
253
|
-
length:
|
|
260
|
+
length: 3
|
|
254
261
|
}).map(() => ({
|
|
255
262
|
type: 'widget',
|
|
256
263
|
component: ItemSkeleton,
|
|
@@ -261,7 +268,7 @@ const Feed = (inProps, ref) => {
|
|
|
261
268
|
} else {
|
|
262
269
|
return {
|
|
263
270
|
left: _widgets.filter(w => w.column === 'left').sort(widgetSort).reduce(widgetReducer, [...feedData, ...(loading ? Array.from({
|
|
264
|
-
length:
|
|
271
|
+
length: 3
|
|
265
272
|
}).map(() => ({
|
|
266
273
|
type: 'widget',
|
|
267
274
|
component: ItemSkeleton,
|
|
@@ -281,14 +288,12 @@ const Feed = (inProps, ref) => {
|
|
|
281
288
|
item: true,
|
|
282
289
|
xs: 12,
|
|
283
290
|
md: 7
|
|
284
|
-
}, /*#__PURE__*/_react.default.createElement(_react.default.Suspense, {
|
|
285
|
-
fallback: /*#__PURE__*/_react.default.createElement(ItemSkeleton, ItemSkeletonProps)
|
|
286
291
|
}, /*#__PURE__*/_react.default.createElement(_reactInfiniteScrollComponent.default, {
|
|
287
292
|
className: classes.left,
|
|
288
293
|
dataLength: data.left.length,
|
|
289
294
|
next: fetch,
|
|
290
295
|
hasMore: Boolean(next),
|
|
291
|
-
loader:
|
|
296
|
+
loader: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null),
|
|
292
297
|
endMessage: /*#__PURE__*/_react.default.createElement(_Widget.default, {
|
|
293
298
|
className: classes.end
|
|
294
299
|
}, /*#__PURE__*/_react.default.createElement(_material.CardContent, null, endMessage)),
|
|
@@ -313,7 +318,7 @@ const Feed = (inProps, ref) => {
|
|
|
313
318
|
sx: {
|
|
314
319
|
width: '100%'
|
|
315
320
|
}
|
|
316
|
-
})))))
|
|
321
|
+
}))))), data.right.length > 0 && /*#__PURE__*/_react.default.createElement(_material.Hidden, {
|
|
317
322
|
smDown: true
|
|
318
323
|
}, /*#__PURE__*/_react.default.createElement(_material.Grid, {
|
|
319
324
|
item: true,
|
|
@@ -401,106 +401,96 @@ function FeedObject(inProps) {
|
|
|
401
401
|
*/
|
|
402
402
|
|
|
403
403
|
|
|
404
|
-
|
|
404
|
+
const handleRestore = (0, _react.useCallback)(() => {
|
|
405
405
|
setObj(prev => Object.assign({}, prev, {
|
|
406
406
|
deleted: false
|
|
407
407
|
}));
|
|
408
|
-
}
|
|
408
|
+
}, [obj]);
|
|
409
409
|
/**
|
|
410
410
|
* Handle restore obj
|
|
411
411
|
*/
|
|
412
412
|
|
|
413
|
-
|
|
414
|
-
function handleHide() {
|
|
413
|
+
const handleHide = (0, _react.useCallback)(() => {
|
|
415
414
|
setObj(prev => Object.assign({}, prev, {
|
|
416
415
|
collapsed: !prev.collapsed
|
|
417
416
|
}));
|
|
418
|
-
}
|
|
417
|
+
}, [obj]);
|
|
419
418
|
/**
|
|
420
419
|
* Handle delete obj
|
|
421
420
|
*/
|
|
422
421
|
|
|
423
|
-
|
|
424
|
-
function handleDelete() {
|
|
422
|
+
const handleDelete = (0, _react.useCallback)(() => {
|
|
425
423
|
setObj(prev => Object.assign({}, prev, {
|
|
426
424
|
deleted: !prev.deleted
|
|
427
425
|
}));
|
|
428
|
-
}
|
|
426
|
+
}, [obj]);
|
|
429
427
|
/**
|
|
430
428
|
* Handle suspend notification obj
|
|
431
429
|
*/
|
|
432
430
|
|
|
433
|
-
|
|
434
|
-
function handleSuspendNotification() {
|
|
431
|
+
const handleSuspendNotification = (0, _react.useCallback)(() => {
|
|
435
432
|
setObj(prev => Object.assign({}, prev, {
|
|
436
433
|
suspended: !prev.suspended
|
|
437
434
|
}));
|
|
438
|
-
}
|
|
435
|
+
}, [obj]);
|
|
439
436
|
/**
|
|
440
437
|
* Handle initial edit
|
|
441
438
|
* Open composer
|
|
442
439
|
*/
|
|
443
440
|
|
|
444
|
-
|
|
445
|
-
function handleToggleEdit() {
|
|
441
|
+
const handleToggleEdit = (0, _react.useCallback)(() => {
|
|
446
442
|
setComposerOpen(prev => !prev);
|
|
447
|
-
}
|
|
443
|
+
}, [composerOpen]);
|
|
448
444
|
/**
|
|
449
445
|
* handle edit success
|
|
450
446
|
*/
|
|
451
447
|
|
|
452
|
-
|
|
453
|
-
function handleEditSuccess(data) {
|
|
448
|
+
const handleEditSuccess = (0, _react.useCallback)(data => {
|
|
454
449
|
setObj(data);
|
|
455
450
|
setComposerOpen(false);
|
|
456
|
-
}
|
|
451
|
+
}, [obj, composerOpen]);
|
|
457
452
|
/**
|
|
458
453
|
* Expand activities if the user is logged
|
|
459
454
|
*/
|
|
460
455
|
|
|
461
|
-
|
|
462
|
-
function handleExpandActivities() {
|
|
456
|
+
const handleExpandActivities = (0, _react.useCallback)(() => {
|
|
463
457
|
if (scUserContext.user) {
|
|
464
458
|
setExpandedActivities(prev => !prev);
|
|
465
459
|
} else {
|
|
466
460
|
scContext.settings.handleAnonymousAction();
|
|
467
461
|
}
|
|
468
|
-
}
|
|
462
|
+
}, [scUserContext.user]);
|
|
469
463
|
/**
|
|
470
464
|
* Handle follow obj
|
|
471
465
|
*/
|
|
472
466
|
|
|
473
|
-
|
|
474
|
-
function handleFollow(isFollow) {
|
|
467
|
+
const handleFollow = (0, _react.useCallback)(isFollow => {
|
|
475
468
|
setObj(prev => Object.assign({}, prev, {
|
|
476
469
|
followed: isFollow
|
|
477
470
|
}));
|
|
478
|
-
}
|
|
471
|
+
}, [obj]);
|
|
479
472
|
/**
|
|
480
473
|
* Handle delete comment callback
|
|
481
474
|
*/
|
|
482
475
|
|
|
483
|
-
|
|
484
|
-
function handleDeleteComment() {
|
|
476
|
+
const handleDeleteComment = (0, _react.useCallback)(() => {
|
|
485
477
|
setObj(prev => Object.assign({}, prev, {
|
|
486
478
|
comment_count: Math.max(prev.comment_count - 1, 0)
|
|
487
479
|
}));
|
|
488
|
-
}
|
|
480
|
+
}, [obj]);
|
|
489
481
|
/**
|
|
490
482
|
* Handle select activities
|
|
491
483
|
*/
|
|
492
484
|
|
|
493
|
-
|
|
494
|
-
function handleSelectedActivities(type) {
|
|
485
|
+
const handleSelectedActivities = (0, _react.useCallback)(type => {
|
|
495
486
|
setSelectedActivities(type);
|
|
496
487
|
setComments([]);
|
|
497
|
-
}
|
|
488
|
+
}, [obj]);
|
|
498
489
|
/**
|
|
499
490
|
* Perform reply
|
|
500
491
|
* Comment of first level
|
|
501
492
|
*/
|
|
502
493
|
|
|
503
|
-
|
|
504
494
|
const performReply = (0, _react.useMemo)(() => comment => {
|
|
505
495
|
return _apiServices.http.request({
|
|
506
496
|
url: _apiServices.Endpoints.NewComment.url({}),
|
|
@@ -775,7 +765,7 @@ function FeedObject(inProps) {
|
|
|
775
765
|
className: classes.mediasSection
|
|
776
766
|
}, /*#__PURE__*/_react.default.createElement(_MediasPreview.default, _extends({
|
|
777
767
|
medias: obj.medias
|
|
778
|
-
},
|
|
768
|
+
}, MediasPreviewProps))), /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
779
769
|
className: classes.pollsSection
|
|
780
770
|
}, obj['poll'] && /*#__PURE__*/_react.default.createElement(_Poll.default, _extends({
|
|
781
771
|
feedObject: obj,
|
|
@@ -121,10 +121,7 @@ function PeopleSuggestion(inProps) {
|
|
|
121
121
|
function handleOnFollowUser(user, follow) {
|
|
122
122
|
setUsers(users.filter(u => u.id !== user.id));
|
|
123
123
|
setTotal(prev => prev - 1);
|
|
124
|
-
|
|
125
|
-
if (visiblePeople < limit && total > 1) {
|
|
126
|
-
loadPeople(1);
|
|
127
|
-
}
|
|
124
|
+
setHasMore(total - 1 > limit);
|
|
128
125
|
}
|
|
129
126
|
/**
|
|
130
127
|
* Handles list change on user connection
|
|
@@ -134,10 +131,7 @@ function PeopleSuggestion(inProps) {
|
|
|
134
131
|
function handleOnConnectUser(user, status) {
|
|
135
132
|
setUsers(users.filter(u => u.id !== user.id));
|
|
136
133
|
setTotal(prev => prev - 1);
|
|
137
|
-
|
|
138
|
-
if (visiblePeople < limit && total > 1) {
|
|
139
|
-
loadPeople(1);
|
|
140
|
-
}
|
|
134
|
+
setHasMore(total - 1 > limit);
|
|
141
135
|
}
|
|
142
136
|
/**
|
|
143
137
|
* Fetches user suggestion list
|
|
@@ -123,7 +123,6 @@ function UsersFollowed(inProps) {
|
|
|
123
123
|
} = props; // STATE
|
|
124
124
|
|
|
125
125
|
const [followed, setFollowed] = (0, _react.useState)([]);
|
|
126
|
-
const [visibleUsers, setVisibleUsers] = (0, _react.useState)(limit);
|
|
127
126
|
const [loading, setLoading] = (0, _react.useState)(true);
|
|
128
127
|
const [hasMore, setHasMore] = (0, _react.useState)(false);
|
|
129
128
|
const [total, setTotal] = (0, _react.useState)(0);
|
|
@@ -139,10 +138,7 @@ function UsersFollowed(inProps) {
|
|
|
139
138
|
if (scUserContext.user['id'] === userId) {
|
|
140
139
|
setFollowed(followed.filter(u => u.id !== user.id));
|
|
141
140
|
setTotal(prev => prev - 1);
|
|
142
|
-
|
|
143
|
-
if (visibleUsers < limit && total > 1) {
|
|
144
|
-
loadUsers(1);
|
|
145
|
-
}
|
|
141
|
+
setHasMore(total - 1 > limit);
|
|
146
142
|
} else {
|
|
147
143
|
const newUsers = [...followed];
|
|
148
144
|
const index = newUsers.findIndex(u => u.id === user.id);
|
|
@@ -173,7 +169,7 @@ function UsersFollowed(inProps) {
|
|
|
173
169
|
}).then(res => {
|
|
174
170
|
const data = res.data;
|
|
175
171
|
setFollowed([...followed, ...data.results]);
|
|
176
|
-
setHasMore(data.count >
|
|
172
|
+
setHasMore(data.count > limit);
|
|
177
173
|
setNext(data['next']);
|
|
178
174
|
setLoading(false);
|
|
179
175
|
setTotal(data.count);
|
|
@@ -184,17 +180,6 @@ function UsersFollowed(inProps) {
|
|
|
184
180
|
});
|
|
185
181
|
}
|
|
186
182
|
}
|
|
187
|
-
/**
|
|
188
|
-
* Loads more users when followed list changes
|
|
189
|
-
*/
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
function loadUsers(n) {
|
|
193
|
-
const newIndex = visibleUsers + n;
|
|
194
|
-
const newHasMore = newIndex < followed.length - 1;
|
|
195
|
-
setVisibleUsers(newIndex);
|
|
196
|
-
setHasMore(newHasMore);
|
|
197
|
-
}
|
|
198
183
|
/**
|
|
199
184
|
* On mount, fetches the list of users followed
|
|
200
185
|
*/
|
|
@@ -221,7 +206,7 @@ function UsersFollowed(inProps) {
|
|
|
221
206
|
})}`), !total ? /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
222
207
|
className: classes.noResults,
|
|
223
208
|
variant: "body2"
|
|
224
|
-
}, `${intl.formatMessage(messages.noUsers)}`) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_List.default, null, followed.slice(0,
|
|
209
|
+
}, `${intl.formatMessage(messages.noUsers)}`) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_List.default, null, followed.slice(0, limit).map(user => /*#__PURE__*/_react.default.createElement(_material.ListItem, {
|
|
225
210
|
key: user.id
|
|
226
211
|
}, /*#__PURE__*/_react.default.createElement(_User.default, _extends({
|
|
227
212
|
elevation: 0,
|