@selfcommunity/react-ui 0.7.0-alpha.25 → 0.7.0-alpha.26
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/CategoriesFollowed/CategoriesFollowed.d.ts.map +1 -1
- package/lib/cjs/components/CategoriesFollowed/CategoriesFollowed.js +41 -29
- package/lib/cjs/components/CategoriesFollowed/CategoriesFollowed.js.map +1 -1
- package/lib/cjs/components/CategoriesFollowed/Skeleton.d.ts.map +1 -1
- package/lib/cjs/components/CategoriesFollowed/Skeleton.js +3 -1
- package/lib/cjs/components/CategoriesFollowed/Skeleton.js.map +1 -1
- package/lib/cjs/components/CategoriesPopular/CategoriesPopular.d.ts.map +1 -1
- package/lib/cjs/components/CategoriesPopular/CategoriesPopular.js +37 -26
- package/lib/cjs/components/CategoriesPopular/CategoriesPopular.js.map +1 -1
- package/lib/cjs/components/CategoriesPopular/Skeleton.d.ts.map +1 -1
- package/lib/cjs/components/CategoriesPopular/Skeleton.js +3 -1
- package/lib/cjs/components/CategoriesPopular/Skeleton.js.map +1 -1
- package/lib/cjs/components/CategoriesSuggestion/CategoriesSuggestion.d.ts +6 -0
- package/lib/cjs/components/CategoriesSuggestion/CategoriesSuggestion.d.ts.map +1 -1
- package/lib/cjs/components/CategoriesSuggestion/CategoriesSuggestion.js +31 -25
- package/lib/cjs/components/CategoriesSuggestion/CategoriesSuggestion.js.map +1 -1
- package/lib/cjs/components/CategoriesSuggestion/Skeleton.d.ts.map +1 -1
- package/lib/cjs/components/CategoriesSuggestion/Skeleton.js +3 -1
- package/lib/cjs/components/CategoriesSuggestion/Skeleton.js.map +1 -1
- package/lib/cjs/components/IncubatorSuggestion/IncubatorSuggestion.d.ts +6 -0
- package/lib/cjs/components/IncubatorSuggestion/IncubatorSuggestion.d.ts.map +1 -1
- package/lib/cjs/components/IncubatorSuggestion/IncubatorSuggestion.js +33 -25
- package/lib/cjs/components/IncubatorSuggestion/IncubatorSuggestion.js.map +1 -1
- package/lib/cjs/components/IncubatorsList/IncubatorsList.d.ts +7 -1
- package/lib/cjs/components/IncubatorsList/IncubatorsList.d.ts.map +1 -1
- package/lib/cjs/components/IncubatorsList/IncubatorsList.js +45 -27
- package/lib/cjs/components/IncubatorsList/IncubatorsList.js.map +1 -1
- package/lib/cjs/components/PeopleSuggestion/PeopleSuggestion.d.ts +6 -0
- package/lib/cjs/components/PeopleSuggestion/PeopleSuggestion.d.ts.map +1 -1
- package/lib/cjs/components/PeopleSuggestion/PeopleSuggestion.js +34 -38
- package/lib/cjs/components/PeopleSuggestion/PeopleSuggestion.js.map +1 -1
- package/lib/cjs/components/PollSuggestion/PollSuggestion.d.ts +7 -1
- package/lib/cjs/components/PollSuggestion/PollSuggestion.d.ts.map +1 -1
- package/lib/cjs/components/PollSuggestion/PollSuggestion.js +32 -24
- package/lib/cjs/components/PollSuggestion/PollSuggestion.js.map +1 -1
- package/lib/cjs/components/RelatedFeedObjects/RelatedFeedObjects.d.ts +7 -1
- package/lib/cjs/components/RelatedFeedObjects/RelatedFeedObjects.d.ts.map +1 -1
- package/lib/cjs/components/RelatedFeedObjects/RelatedFeedObjects.js +37 -27
- package/lib/cjs/components/RelatedFeedObjects/RelatedFeedObjects.js.map +1 -1
- package/lib/cjs/components/TrendingFeed/TrendingFeed.d.ts +6 -0
- package/lib/cjs/components/TrendingFeed/TrendingFeed.d.ts.map +1 -1
- package/lib/cjs/components/TrendingFeed/TrendingFeed.js +31 -24
- package/lib/cjs/components/TrendingFeed/TrendingFeed.js.map +1 -1
- package/lib/cjs/components/TrendingPeople/TrendingPeople.d.ts +6 -0
- package/lib/cjs/components/TrendingPeople/TrendingPeople.d.ts.map +1 -1
- package/lib/cjs/components/TrendingPeople/TrendingPeople.js +39 -28
- package/lib/cjs/components/TrendingPeople/TrendingPeople.js.map +1 -1
- package/lib/cjs/components/UserFollowers/UserFollowers.d.ts +6 -0
- package/lib/cjs/components/UserFollowers/UserFollowers.d.ts.map +1 -1
- package/lib/cjs/components/UserFollowers/UserFollowers.js +67 -41
- package/lib/cjs/components/UserFollowers/UserFollowers.js.map +1 -1
- package/lib/cjs/components/UsersFollowed/UsersFollowed.d.ts +6 -0
- package/lib/cjs/components/UsersFollowed/UsersFollowed.d.ts.map +1 -1
- package/lib/cjs/components/UsersFollowed/UsersFollowed.js +46 -32
- package/lib/cjs/components/UsersFollowed/UsersFollowed.js.map +1 -1
- package/lib/cjs/utils/tools.d.ts +29 -0
- package/lib/cjs/utils/tools.d.ts.map +1 -0
- package/lib/cjs/utils/tools.js +81 -0
- package/lib/cjs/utils/tools.js.map +1 -0
- package/lib/esm/components/CategoriesFollowed/CategoriesFollowed.d.ts.map +1 -1
- package/lib/esm/components/CategoriesFollowed/CategoriesFollowed.js +46 -34
- package/lib/esm/components/CategoriesFollowed/CategoriesFollowed.js.map +1 -1
- package/lib/esm/components/CategoriesFollowed/Skeleton.d.ts.map +1 -1
- package/lib/esm/components/CategoriesFollowed/Skeleton.js +3 -1
- package/lib/esm/components/CategoriesFollowed/Skeleton.js.map +1 -1
- package/lib/esm/components/CategoriesPopular/CategoriesPopular.d.ts.map +1 -1
- package/lib/esm/components/CategoriesPopular/CategoriesPopular.js +40 -29
- package/lib/esm/components/CategoriesPopular/CategoriesPopular.js.map +1 -1
- package/lib/esm/components/CategoriesPopular/Skeleton.d.ts.map +1 -1
- package/lib/esm/components/CategoriesPopular/Skeleton.js +3 -1
- package/lib/esm/components/CategoriesPopular/Skeleton.js.map +1 -1
- package/lib/esm/components/CategoriesSuggestion/CategoriesSuggestion.d.ts +6 -0
- package/lib/esm/components/CategoriesSuggestion/CategoriesSuggestion.d.ts.map +1 -1
- package/lib/esm/components/CategoriesSuggestion/CategoriesSuggestion.js +35 -29
- package/lib/esm/components/CategoriesSuggestion/CategoriesSuggestion.js.map +1 -1
- package/lib/esm/components/CategoriesSuggestion/Skeleton.d.ts.map +1 -1
- package/lib/esm/components/CategoriesSuggestion/Skeleton.js +3 -1
- package/lib/esm/components/CategoriesSuggestion/Skeleton.js.map +1 -1
- package/lib/esm/components/IncubatorSuggestion/IncubatorSuggestion.d.ts +6 -0
- package/lib/esm/components/IncubatorSuggestion/IncubatorSuggestion.d.ts.map +1 -1
- package/lib/esm/components/IncubatorSuggestion/IncubatorSuggestion.js +36 -28
- package/lib/esm/components/IncubatorSuggestion/IncubatorSuggestion.js.map +1 -1
- package/lib/esm/components/IncubatorsList/IncubatorsList.d.ts +7 -1
- package/lib/esm/components/IncubatorsList/IncubatorsList.d.ts.map +1 -1
- package/lib/esm/components/IncubatorsList/IncubatorsList.js +47 -29
- package/lib/esm/components/IncubatorsList/IncubatorsList.js.map +1 -1
- package/lib/esm/components/PeopleSuggestion/PeopleSuggestion.d.ts +6 -0
- package/lib/esm/components/PeopleSuggestion/PeopleSuggestion.d.ts.map +1 -1
- package/lib/esm/components/PeopleSuggestion/PeopleSuggestion.js +36 -40
- package/lib/esm/components/PeopleSuggestion/PeopleSuggestion.js.map +1 -1
- package/lib/esm/components/PollSuggestion/PollSuggestion.d.ts +7 -1
- package/lib/esm/components/PollSuggestion/PollSuggestion.d.ts.map +1 -1
- package/lib/esm/components/PollSuggestion/PollSuggestion.js +35 -27
- package/lib/esm/components/PollSuggestion/PollSuggestion.js.map +1 -1
- package/lib/esm/components/RelatedFeedObjects/RelatedFeedObjects.d.ts +7 -1
- package/lib/esm/components/RelatedFeedObjects/RelatedFeedObjects.d.ts.map +1 -1
- package/lib/esm/components/RelatedFeedObjects/RelatedFeedObjects.js +40 -30
- package/lib/esm/components/RelatedFeedObjects/RelatedFeedObjects.js.map +1 -1
- package/lib/esm/components/TrendingFeed/TrendingFeed.d.ts +6 -0
- package/lib/esm/components/TrendingFeed/TrendingFeed.d.ts.map +1 -1
- package/lib/esm/components/TrendingFeed/TrendingFeed.js +34 -27
- package/lib/esm/components/TrendingFeed/TrendingFeed.js.map +1 -1
- package/lib/esm/components/TrendingPeople/TrendingPeople.d.ts +6 -0
- package/lib/esm/components/TrendingPeople/TrendingPeople.d.ts.map +1 -1
- package/lib/esm/components/TrendingPeople/TrendingPeople.js +41 -30
- package/lib/esm/components/TrendingPeople/TrendingPeople.js.map +1 -1
- package/lib/esm/components/UserFollowers/UserFollowers.d.ts +6 -0
- package/lib/esm/components/UserFollowers/UserFollowers.d.ts.map +1 -1
- package/lib/esm/components/UserFollowers/UserFollowers.js +70 -44
- package/lib/esm/components/UserFollowers/UserFollowers.js.map +1 -1
- package/lib/esm/components/UsersFollowed/UsersFollowed.d.ts +6 -0
- package/lib/esm/components/UsersFollowed/UsersFollowed.d.ts.map +1 -1
- package/lib/esm/components/UsersFollowed/UsersFollowed.js +49 -35
- package/lib/esm/components/UsersFollowed/UsersFollowed.js.map +1 -1
- package/lib/esm/utils/tools.d.ts +29 -0
- package/lib/esm/utils/tools.d.ts.map +1 -0
- package/lib/esm/utils/tools.js +76 -0
- package/lib/esm/utils/tools.js.map +1 -0
- package/lib/umd/react-ui.js +11 -11
- package/lib/umd/react-ui.js.LICENSE.txt +1 -1
- package/lib/umd/react-ui.js.map +1 -1
- package/package.json +3 -3
|
@@ -55,6 +55,7 @@ const Skeleton_1 = __importDefault(require("./Skeleton"));
|
|
|
55
55
|
const system_1 = require("@mui/system");
|
|
56
56
|
const HiddenPlaceholder_1 = __importDefault(require("../../shared/HiddenPlaceholder"));
|
|
57
57
|
const react_core_1 = require("@selfcommunity/react-core");
|
|
58
|
+
const tools_1 = require("../../utils/tools");
|
|
58
59
|
const PREFIX = 'SCTrendingFeed';
|
|
59
60
|
const classes = {
|
|
60
61
|
root: `${PREFIX}-root`,
|
|
@@ -107,39 +108,42 @@ function TrendingFeed(inProps) {
|
|
|
107
108
|
props: inProps,
|
|
108
109
|
name: PREFIX
|
|
109
110
|
});
|
|
110
|
-
const { className = null, categoryId = null, template = null, autoHide = null, onHeightChange, onStateChange, pageUrl = null } = props, rest = __rest(props, ["className", "categoryId", "template", "autoHide", "onHeightChange", "onStateChange", "pageUrl"]);
|
|
111
|
+
const { className = null, categoryId = null, template = null, autoHide = null, cacheStrategy = utils_1.CacheStrategies.NETWORK_ONLY, onHeightChange, onStateChange, pageUrl = null } = props, rest = __rest(props, ["className", "categoryId", "template", "autoHide", "cacheStrategy", "onHeightChange", "onStateChange", "pageUrl"]);
|
|
111
112
|
// REFS
|
|
112
113
|
const isMountedRef = (0, react_core_1.useIsComponentMountedRef)();
|
|
113
114
|
// STATE
|
|
114
|
-
const [
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
const [state, dispatch] = (0, react_1.useReducer)(tools_1.dataToolsReducer, {
|
|
116
|
+
isLoadingNext: true,
|
|
117
|
+
next: `${api_services_1.Endpoints.CategoryTrendingFeed.url({ id: categoryId })}?limit=10`,
|
|
118
|
+
cacheKey: react_core_1.SCCache.getToolsStateCacheKey(react_core_1.SCCache.TRENDING_FEED_TOOLS_STATE_CACHE_PREFIX_KEY, categoryId),
|
|
119
|
+
cacheStrategy
|
|
120
|
+
}, tools_1.stateToolsInitializer);
|
|
117
121
|
const [openTrendingPostDialog, setOpenTrendingPostDialog] = (0, react_1.useState)(false);
|
|
118
|
-
const [total, setTotal] = (0, react_1.useState)(0);
|
|
119
|
-
const [visible, setVisible] = (0, react_1.useState)(limit);
|
|
120
|
-
const [next, setNext] = (0, react_1.useState)(`${api_services_1.Endpoints.CategoryTrendingFeed.url({ id: categoryId })}?limit=10`);
|
|
121
122
|
/**
|
|
122
123
|
* Fetches a list of trending posts
|
|
123
124
|
*/
|
|
124
125
|
function fetchTrendingPost() {
|
|
125
|
-
if (next) {
|
|
126
|
+
if (state.next) {
|
|
127
|
+
dispatch({ type: tools_1.actionToolsTypes.LOADING_NEXT });
|
|
126
128
|
api_services_1.http
|
|
127
129
|
.request({
|
|
128
|
-
url: next,
|
|
130
|
+
url: state.next,
|
|
129
131
|
method: api_services_1.Endpoints.CategoryTrendingFeed.method
|
|
130
132
|
})
|
|
131
133
|
.then((res) => {
|
|
132
134
|
if (isMountedRef.current) {
|
|
133
|
-
const data = res.data;
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
const data = res.data.results;
|
|
136
|
+
dispatch({
|
|
137
|
+
type: tools_1.actionToolsTypes.LOAD_NEXT_SUCCESS,
|
|
138
|
+
payload: {
|
|
139
|
+
results: data,
|
|
140
|
+
count: data.length
|
|
141
|
+
}
|
|
142
|
+
});
|
|
139
143
|
}
|
|
140
144
|
})
|
|
141
145
|
.catch((error) => {
|
|
142
|
-
|
|
146
|
+
dispatch({ type: tools_1.actionToolsTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
|
|
143
147
|
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
144
148
|
});
|
|
145
149
|
}
|
|
@@ -151,32 +155,35 @@ function TrendingFeed(inProps) {
|
|
|
151
155
|
* On mount, fetches trending posts list
|
|
152
156
|
*/
|
|
153
157
|
(0, react_1.useEffect)(() => {
|
|
154
|
-
|
|
158
|
+
if (cacheStrategy === utils_1.CacheStrategies.NETWORK_ONLY) {
|
|
159
|
+
fetchTrendingPost();
|
|
160
|
+
onStateChange && onStateChange({ cacheStrategy: utils_1.CacheStrategies.CACHE_FIRST });
|
|
161
|
+
}
|
|
155
162
|
}, []);
|
|
156
163
|
/**
|
|
157
164
|
* Renders the list
|
|
158
165
|
*/
|
|
159
|
-
if (
|
|
166
|
+
if (state.isLoadingNext) {
|
|
160
167
|
return react_1.default.createElement(Skeleton_1.default, null);
|
|
161
168
|
}
|
|
162
169
|
const f = (react_1.default.createElement(material_1.CardContent, null,
|
|
163
170
|
react_1.default.createElement(material_1.Typography, { className: classes.title, variant: "h5" },
|
|
164
171
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingFeed.title", defaultMessage: "ui.trendingFeed.title" })),
|
|
165
|
-
!
|
|
172
|
+
!state.count ? (react_1.default.createElement(material_1.Typography, { className: classes.noResults, variant: "body2" },
|
|
166
173
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingFeed.noResults", defaultMessage: "ui.trendingFeed.noResults" }))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
167
|
-
react_1.default.createElement(List_1.default, null,
|
|
174
|
+
react_1.default.createElement(List_1.default, null, state.results.slice(0, limit).map((obj, index) => (react_1.default.createElement(material_1.ListItem, { key: index },
|
|
168
175
|
react_1.default.createElement(FeedObject_1.default, { elevation: 0, feedObject: obj[obj.type], template: template, className: classes.trendingItem }))))),
|
|
169
|
-
|
|
176
|
+
limit < state.count && (react_1.default.createElement(material_1.Button, { size: "small", className: classes.showMore, onClick: pageUrl !== null && pageUrl !== void 0 ? pageUrl : handleDialogOpening },
|
|
170
177
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingFeed.button.showMore", defaultMessage: "ui.trendingFeed.button.showMore" }))))),
|
|
171
|
-
openTrendingPostDialog && (react_1.default.createElement(BaseDialog_1.default, { title: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingFeed.title", defaultMessage: "ui.trendingFeed.title" }), onClose: () => setOpenTrendingPostDialog(false), open: openTrendingPostDialog },
|
|
178
|
+
openTrendingPostDialog && (react_1.default.createElement(BaseDialog_1.default, { title: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingFeed.title", defaultMessage: "ui.trendingFeed.title" }), onClose: () => setOpenTrendingPostDialog(false), open: openTrendingPostDialog }, state.isLoadingNext ? (react_1.default.createElement(CentralProgress_1.default, { size: 50 })) : (react_1.default.createElement(InfiniteScroll_1.default, { dataLength: state.results.length, next: fetchTrendingPost, hasMoreNext: Boolean(state.next), loaderNext: react_1.default.createElement(CentralProgress_1.default, { size: 30 }), height: 400, endMessage: react_1.default.createElement("p", { style: { textAlign: 'center' } },
|
|
172
179
|
react_1.default.createElement("b", null,
|
|
173
180
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingFeed.noMoreResults", defaultMessage: "ui.trendingFeed.noMoreResults" }))) },
|
|
174
|
-
react_1.default.createElement(List_1.default, null,
|
|
181
|
+
react_1.default.createElement(List_1.default, null, state.results.map((obj, index) => (react_1.default.createElement(material_1.ListItem, { key: index },
|
|
175
182
|
react_1.default.createElement(FeedObject_1.default, { elevation: 0, feedObject: obj[obj.type], template: template, className: classes.trendingItem })))))))))));
|
|
176
183
|
/**
|
|
177
184
|
* Renders root object (if results and autoHide prop is set to false, otherwise component is hidden)
|
|
178
185
|
*/
|
|
179
|
-
if (autoHide && !
|
|
186
|
+
if (autoHide && !state.count) {
|
|
180
187
|
return react_1.default.createElement(HiddenPlaceholder_1.default, null);
|
|
181
188
|
}
|
|
182
189
|
return (react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest), f));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrendingFeed.js","sourceRoot":"","sources":["../../../../src/components/TrendingFeed/TrendingFeed.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"TrendingFeed.js","sourceRoot":"","sources":["../../../../src/components/TrendingFeed/TrendingFeed.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { UserProps } from '../User';
|
|
2
2
|
import { VirtualScrollerItemProps } from '../../types/virtualScroller';
|
|
3
|
+
import { CacheStrategies } from '@selfcommunity/utils';
|
|
3
4
|
export interface TrendingPeopleProps extends VirtualScrollerItemProps {
|
|
4
5
|
/**
|
|
5
6
|
* Category id
|
|
@@ -21,6 +22,11 @@ export interface TrendingPeopleProps extends VirtualScrollerItemProps {
|
|
|
21
22
|
* @default empty object
|
|
22
23
|
*/
|
|
23
24
|
UserProps?: UserProps;
|
|
25
|
+
/**
|
|
26
|
+
* Caching strategies
|
|
27
|
+
* @default CacheStrategies.CACHE_FIRST
|
|
28
|
+
*/
|
|
29
|
+
cacheStrategy?: CacheStrategies;
|
|
24
30
|
/**
|
|
25
31
|
* Other props
|
|
26
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrendingPeople.d.ts","sourceRoot":"","sources":["../../../../src/components/TrendingPeople/TrendingPeople.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TrendingPeople.d.ts","sourceRoot":"","sources":["../../../../src/components/TrendingPeople/TrendingPeople.tsx"],"names":[],"mappings":"AAgBA,OAAa,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAQxC,OAAO,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAC,eAAe,EAAS,MAAM,sBAAsB,CAAC;AAyB7D,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACnE;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAwMhF"}
|
|
@@ -53,6 +53,9 @@ const InfiniteScroll_1 = __importDefault(require("../../shared/InfiniteScroll"))
|
|
|
53
53
|
const Skeleton_1 = __importDefault(require("./Skeleton"));
|
|
54
54
|
const system_1 = require("@mui/system");
|
|
55
55
|
const HiddenPlaceholder_1 = __importDefault(require("../../shared/HiddenPlaceholder"));
|
|
56
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
57
|
+
const tools_1 = require("../../utils/tools");
|
|
58
|
+
const Errors_1 = require("../../constants/Errors");
|
|
56
59
|
const PREFIX = 'SCTrendingPeople';
|
|
57
60
|
const classes = {
|
|
58
61
|
root: `${PREFIX}-root`,
|
|
@@ -105,19 +108,19 @@ function TrendingPeople(inProps) {
|
|
|
105
108
|
props: inProps,
|
|
106
109
|
name: PREFIX
|
|
107
110
|
});
|
|
108
|
-
const { categoryId, autoHide, className, UserProps = {}, onHeightChange, onStateChange } = props, rest = __rest(props, ["categoryId", "autoHide", "className", "UserProps", "onHeightChange", "onStateChange"]);
|
|
111
|
+
const { categoryId, autoHide, className, UserProps = {}, cacheStrategy = utils_1.CacheStrategies.NETWORK_ONLY, onHeightChange, onStateChange } = props, rest = __rest(props, ["categoryId", "autoHide", "className", "UserProps", "cacheStrategy", "onHeightChange", "onStateChange"]);
|
|
109
112
|
// REFS
|
|
110
113
|
const isMountedRef = (0, react_core_1.useIsComponentMountedRef)();
|
|
111
114
|
// STATE
|
|
112
115
|
const theme = (0, material_1.useTheme)();
|
|
113
116
|
const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('md'));
|
|
114
|
-
const [
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
const [state, dispatch] = (0, react_1.useReducer)(tools_1.dataToolsReducer, {
|
|
118
|
+
isLoadingNext: true,
|
|
119
|
+
next: `${api_services_1.Endpoints.CategoryTrendingPeople.url({ id: categoryId })}?limit=10`,
|
|
120
|
+
cacheKey: react_core_1.SCCache.getToolsStateCacheKey(react_core_1.SCCache.TRENDING_PEOPLE_TOOLS_STATE_CACHE_PREFIX_KEY, categoryId),
|
|
121
|
+
cacheStrategy
|
|
122
|
+
}, tools_1.stateToolsInitializer);
|
|
118
123
|
const [openTrendingPeopleDialog, setOpenTrendingPeopleDialog] = (0, react_1.useState)(false);
|
|
119
|
-
const [total, setTotal] = (0, react_1.useState)(0);
|
|
120
|
-
const [next, setNext] = (0, react_1.useState)(`${api_services_1.Endpoints.CategoryTrendingPeople.url({ id: categoryId })}?limit=10`);
|
|
121
124
|
// CONTEXT
|
|
122
125
|
const scUserContext = (0, react_1.useContext)(react_core_1.SCUserContext);
|
|
123
126
|
const scPreferencesContext = (0, react_1.useContext)(react_core_1.SCPreferencesContext);
|
|
@@ -127,26 +130,28 @@ function TrendingPeople(inProps) {
|
|
|
127
130
|
* Fetches trending people list
|
|
128
131
|
*/
|
|
129
132
|
function fetchTrendingPeople() {
|
|
130
|
-
|
|
131
|
-
|
|
133
|
+
if (state.next) {
|
|
134
|
+
dispatch({ type: tools_1.actionToolsTypes.LOADING_NEXT });
|
|
132
135
|
api_services_1.http
|
|
133
136
|
.request({
|
|
134
|
-
url: next,
|
|
137
|
+
url: state.next,
|
|
135
138
|
method: api_services_1.Endpoints.CategoryTrendingPeople.method
|
|
136
139
|
})
|
|
137
140
|
.then((res) => {
|
|
138
141
|
if (isMountedRef.current) {
|
|
139
|
-
const data = res.data;
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
const data = res.data.results;
|
|
143
|
+
dispatch({
|
|
144
|
+
type: tools_1.actionToolsTypes.LOAD_NEXT_SUCCESS,
|
|
145
|
+
payload: {
|
|
146
|
+
results: data,
|
|
147
|
+
count: data.length
|
|
148
|
+
}
|
|
149
|
+
});
|
|
145
150
|
}
|
|
146
151
|
})
|
|
147
152
|
.catch((error) => {
|
|
148
|
-
|
|
149
|
-
|
|
153
|
+
dispatch({ type: tools_1.actionToolsTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
|
|
154
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
150
155
|
});
|
|
151
156
|
}
|
|
152
157
|
}
|
|
@@ -154,14 +159,17 @@ function TrendingPeople(inProps) {
|
|
|
154
159
|
* On mount, fetches trending people list
|
|
155
160
|
*/
|
|
156
161
|
(0, react_1.useEffect)(() => {
|
|
157
|
-
|
|
162
|
+
if (cacheStrategy === utils_1.CacheStrategies.NETWORK_ONLY) {
|
|
163
|
+
fetchTrendingPeople();
|
|
164
|
+
onStateChange && onStateChange({ cacheStrategy: utils_1.CacheStrategies.CACHE_FIRST });
|
|
165
|
+
}
|
|
158
166
|
}, []);
|
|
159
167
|
/**
|
|
160
168
|
* Handles followers counter update on follow/unfollow action.
|
|
161
169
|
* @param user
|
|
162
170
|
*/
|
|
163
171
|
function handleFollowersUpdate(user) {
|
|
164
|
-
const newUsers = [...
|
|
172
|
+
const newUsers = [...state.results];
|
|
165
173
|
const index = newUsers.findIndex((u) => u.id === user.id);
|
|
166
174
|
if (index !== -1) {
|
|
167
175
|
if (user.connection_status === 'followed') {
|
|
@@ -172,37 +180,40 @@ function TrendingPeople(inProps) {
|
|
|
172
180
|
newUsers[index].followers_counter = user.followers_counter + 1;
|
|
173
181
|
newUsers[index].connection_status = 'followed';
|
|
174
182
|
}
|
|
175
|
-
|
|
183
|
+
dispatch({
|
|
184
|
+
type: tools_1.actionToolsTypes.SET_RESULTS,
|
|
185
|
+
payload: { results: newUsers }
|
|
186
|
+
});
|
|
176
187
|
}
|
|
177
188
|
}
|
|
178
189
|
/**
|
|
179
190
|
* Renders trending people list
|
|
180
191
|
*/
|
|
181
|
-
if (
|
|
192
|
+
if (state.isLoadingNext) {
|
|
182
193
|
return react_1.default.createElement(Skeleton_1.default, null);
|
|
183
194
|
}
|
|
184
195
|
const p = (react_1.default.createElement(material_1.CardContent, null,
|
|
185
196
|
react_1.default.createElement(material_1.Typography, { className: classes.title, variant: "h5" },
|
|
186
197
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingPeople.title", defaultMessage: "ui.trendingPeople.title" })),
|
|
187
|
-
!
|
|
198
|
+
!state.count ? (react_1.default.createElement(material_1.Typography, { className: classes.noResults, variant: "body2" },
|
|
188
199
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingPeople.noResults", defaultMessage: "ui.trendingPeople.noResults" }))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
189
|
-
react_1.default.createElement(List_1.default, null,
|
|
200
|
+
react_1.default.createElement(List_1.default, null, state.results.slice(0, limit).map((user) => (react_1.default.createElement(material_1.ListItem, { key: user.id },
|
|
190
201
|
react_1.default.createElement(User_1.default, Object.assign({ elevation: 0, user: user, className: classes.trendingUserItem }, (followEnabled
|
|
191
202
|
? { followConnectUserButtonProps: { onFollow: handleFollowersUpdate } }
|
|
192
203
|
: { followConnectUserButtonProps: { onChangeConnectionStatus: handleFollowersUpdate } }), UserProps)))))))),
|
|
193
|
-
|
|
204
|
+
limit < state.count && (react_1.default.createElement(material_1.Button, { size: "small", className: classes.showMore, onClick: () => setOpenTrendingPeopleDialog(true) },
|
|
194
205
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingPeople.button.showAll", defaultMessage: "ui.trendingPeople.button.showAll" }))),
|
|
195
|
-
openTrendingPeopleDialog && (react_1.default.createElement(BaseDialog_1.default, { title: react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.trendingPeople.title", id: "ui.trendingPeople.title" }), onClose: () => setOpenTrendingPeopleDialog(false), open: openTrendingPeopleDialog },
|
|
206
|
+
openTrendingPeopleDialog && (react_1.default.createElement(BaseDialog_1.default, { title: react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.trendingPeople.title", id: "ui.trendingPeople.title" }), onClose: () => setOpenTrendingPeopleDialog(false), open: openTrendingPeopleDialog }, state.isLoadingNext ? (react_1.default.createElement(CentralProgress_1.default, { size: 50 })) : (react_1.default.createElement(InfiniteScroll_1.default, { dataLength: state.results.length, next: fetchTrendingPeople, hasMoreNext: Boolean(state.next), loaderNext: react_1.default.createElement(CentralProgress_1.default, { size: 30 }), height: isMobile ? '100vh' : 400, endMessage: react_1.default.createElement("p", { style: { textAlign: 'center' } },
|
|
196
207
|
react_1.default.createElement("b", null,
|
|
197
208
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.trendingPeople.noMoreResults", defaultMessage: "ui.trendingPeople.noMoreResults" }))) },
|
|
198
|
-
react_1.default.createElement(List_1.default, null,
|
|
209
|
+
react_1.default.createElement(List_1.default, null, state.results.map((p) => (react_1.default.createElement(material_1.ListItem, { key: p.id },
|
|
199
210
|
react_1.default.createElement(User_1.default, Object.assign({ elevation: 0, user: p, className: classes.trendingUserItem }, (followEnabled
|
|
200
211
|
? { followConnectUserButtonProps: { onFollow: handleFollowersUpdate } }
|
|
201
212
|
: { followConnectUserButtonProps: { onChangeConnectionStatus: handleFollowersUpdate } }), UserProps))))))))))));
|
|
202
213
|
/**
|
|
203
214
|
* Renders root object (if results and autoHide prop is set to false, otherwise component is hidden)
|
|
204
215
|
*/
|
|
205
|
-
if (autoHide && !
|
|
216
|
+
if (autoHide && !state.count) {
|
|
206
217
|
return react_1.default.createElement(HiddenPlaceholder_1.default, null);
|
|
207
218
|
}
|
|
208
219
|
return (react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest), p));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrendingPeople.js","sourceRoot":"","sources":["../../../../src/components/TrendingPeople/TrendingPeople.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"TrendingPeople.js","sourceRoot":"","sources":["../../../../src/components/TrendingPeople/TrendingPeople.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CacheStrategies } from '@selfcommunity/utils';
|
|
1
2
|
import { UserProps } from '../User';
|
|
2
3
|
import { VirtualScrollerItemProps } from '../../types/virtualScroller';
|
|
3
4
|
export interface UserFollowersProps extends VirtualScrollerItemProps {
|
|
@@ -21,6 +22,11 @@ export interface UserFollowersProps extends VirtualScrollerItemProps {
|
|
|
21
22
|
* @default empty object
|
|
22
23
|
*/
|
|
23
24
|
UserProps?: UserProps;
|
|
25
|
+
/**
|
|
26
|
+
* Caching strategies
|
|
27
|
+
* @default CacheStrategies.CACHE_FIRST
|
|
28
|
+
*/
|
|
29
|
+
cacheStrategy?: CacheStrategies;
|
|
24
30
|
}
|
|
25
31
|
/**
|
|
26
32
|
* > API documentation for the Community-JS User Followers component. Learn about the available props and the CSS API.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserFollowers.d.ts","sourceRoot":"","sources":["../../../../src/components/UserFollowers/UserFollowers.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UserFollowers.d.ts","sourceRoot":"","sources":["../../../../src/components/UserFollowers/UserFollowers.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAC,eAAe,EAAS,MAAM,sBAAsB,CAAC;AAY7D,OAAa,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AASxC,OAAO,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAkCrE,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB;IAClE;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAwO9E"}
|
|
@@ -34,6 +34,7 @@ const Widget_1 = __importDefault(require("../Widget"));
|
|
|
34
34
|
const api_services_1 = require("@selfcommunity/api-services");
|
|
35
35
|
const utils_1 = require("@selfcommunity/utils");
|
|
36
36
|
const react_core_1 = require("@selfcommunity/react-core");
|
|
37
|
+
const tools_1 = require("../../utils/tools");
|
|
37
38
|
const Skeleton_1 = __importDefault(require("./Skeleton"));
|
|
38
39
|
const User_1 = __importDefault(require("../User"));
|
|
39
40
|
const react_intl_1 = require("react-intl");
|
|
@@ -115,41 +116,46 @@ function UserFollowers(inProps) {
|
|
|
115
116
|
props: inProps,
|
|
116
117
|
name: PREFIX
|
|
117
118
|
});
|
|
118
|
-
const { userId, autoHide, className, UserProps = {} } = props;
|
|
119
|
+
const { userId, autoHide, className, UserProps = {}, cacheStrategy = utils_1.CacheStrategies.NETWORK_ONLY, onHeightChange, onStateChange } = props;
|
|
119
120
|
// REFS
|
|
120
121
|
const isMountedRef = (0, react_core_1.useIsComponentMountedRef)();
|
|
121
122
|
// STATE
|
|
122
123
|
const theme = (0, material_1.useTheme)();
|
|
123
124
|
const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('md'));
|
|
124
|
-
const [
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
const [state, dispatch] = (0, react_1.useReducer)(tools_1.dataToolsReducer, {
|
|
126
|
+
isLoadingNext: true,
|
|
127
|
+
next: `${api_services_1.Endpoints.UserFollowers.url({ id: userId })}?limit=10`,
|
|
128
|
+
cacheKey: react_core_1.SCCache.getToolsStateCacheKey(react_core_1.SCCache.USER_FOLLOWERS_TOOLS_STATE_CACHE_PREFIX_KEY, userId),
|
|
129
|
+
cacheStrategy
|
|
130
|
+
}, tools_1.stateToolsInitializer);
|
|
129
131
|
const [openUserFollowersDialog, setOpenUserFollowersDialog] = (0, react_1.useState)(false);
|
|
130
|
-
|
|
132
|
+
// CONST
|
|
133
|
+
const authUserId = scUserContext.user ? scUserContext.user.id : null;
|
|
131
134
|
/**
|
|
132
135
|
* Fetches the list of users followers
|
|
133
136
|
*/
|
|
134
137
|
function fetchFollowers() {
|
|
135
|
-
if (next) {
|
|
138
|
+
if (state.next) {
|
|
139
|
+
dispatch({ type: tools_1.actionToolsTypes.LOADING_NEXT });
|
|
136
140
|
api_services_1.http
|
|
137
141
|
.request({
|
|
138
|
-
url: next,
|
|
142
|
+
url: state.next,
|
|
139
143
|
method: api_services_1.Endpoints.UserFollowers.method
|
|
140
144
|
})
|
|
141
145
|
.then((res) => {
|
|
142
146
|
if (isMountedRef.current) {
|
|
143
|
-
const data = res.data;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
const data = res.data.results;
|
|
148
|
+
dispatch({
|
|
149
|
+
type: tools_1.actionToolsTypes.LOAD_NEXT_SUCCESS,
|
|
150
|
+
payload: {
|
|
151
|
+
results: data,
|
|
152
|
+
count: data.length
|
|
153
|
+
}
|
|
154
|
+
});
|
|
149
155
|
}
|
|
150
156
|
})
|
|
151
157
|
.catch((error) => {
|
|
152
|
-
|
|
158
|
+
dispatch({ type: tools_1.actionToolsTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
|
|
153
159
|
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
154
160
|
});
|
|
155
161
|
}
|
|
@@ -158,65 +164,85 @@ function UserFollowers(inProps) {
|
|
|
158
164
|
* On mount, fetches the list of users followers
|
|
159
165
|
*/
|
|
160
166
|
(0, react_1.useEffect)(() => {
|
|
161
|
-
if (!
|
|
167
|
+
if (!userId) {
|
|
162
168
|
return;
|
|
163
169
|
}
|
|
164
|
-
if (
|
|
170
|
+
else if (cacheStrategy === utils_1.CacheStrategies.NETWORK_ONLY) {
|
|
171
|
+
fetchFollowers();
|
|
172
|
+
onStateChange && onStateChange({ cacheStrategy: utils_1.CacheStrategies.CACHE_FIRST });
|
|
173
|
+
}
|
|
174
|
+
else if (!contentAvailability && !authUserId) {
|
|
165
175
|
return;
|
|
166
176
|
}
|
|
167
|
-
|
|
168
|
-
|
|
177
|
+
}, [authUserId]);
|
|
178
|
+
/**
|
|
179
|
+
* Virtual feed update
|
|
180
|
+
*/
|
|
181
|
+
(0, react_1.useEffect)(() => {
|
|
182
|
+
onHeightChange && onHeightChange();
|
|
183
|
+
}, [state.results.length]);
|
|
169
184
|
/**
|
|
170
185
|
* Handles followers counter update on follow/unfollow action.
|
|
171
186
|
* @param user
|
|
172
187
|
*/
|
|
173
188
|
function handleFollowersUpdate(user) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
189
|
+
if (scUserContext.user['id'] === userId) {
|
|
190
|
+
dispatch({
|
|
191
|
+
type: tools_1.actionToolsTypes.SET_RESULTS,
|
|
192
|
+
payload: { results: state.results.filter((u) => u.id !== user.id), count: state.count - 1 }
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
const newUsers = [...state.results];
|
|
197
|
+
const index = newUsers.findIndex((u) => u.id === user.id);
|
|
198
|
+
if (index !== -1) {
|
|
199
|
+
if (user.connection_status === 'followed') {
|
|
200
|
+
newUsers[index].followers_counter = user.followers_counter - 1;
|
|
201
|
+
newUsers[index].connection_status = null;
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
newUsers[index].followers_counter = user.followers_counter + 1;
|
|
205
|
+
newUsers[index].connection_status = 'followed';
|
|
206
|
+
}
|
|
207
|
+
dispatch({
|
|
208
|
+
type: tools_1.actionToolsTypes.SET_RESULTS,
|
|
209
|
+
payload: { results: newUsers }
|
|
210
|
+
});
|
|
184
211
|
}
|
|
185
|
-
setFollowers(newUsers);
|
|
186
212
|
}
|
|
187
213
|
}
|
|
188
214
|
/**
|
|
189
215
|
* Renders the list of users followers
|
|
190
216
|
*/
|
|
191
|
-
if (
|
|
192
|
-
react_1.default.createElement(Skeleton_1.default, null);
|
|
217
|
+
if (state.isLoadingNext) {
|
|
218
|
+
return react_1.default.createElement(Skeleton_1.default, null);
|
|
193
219
|
}
|
|
194
220
|
const u = (react_1.default.createElement(material_1.CardContent, null,
|
|
195
|
-
react_1.default.createElement(material_1.Typography, { className: classes.title, variant: "h5" }, `${intl.formatMessage(messages.title, { total:
|
|
196
|
-
!
|
|
197
|
-
react_1.default.createElement(List_1.default, null,
|
|
221
|
+
react_1.default.createElement(material_1.Typography, { className: classes.title, variant: "h5" }, `${intl.formatMessage(messages.title, { total: state.count })}`),
|
|
222
|
+
!state.count ? (react_1.default.createElement(material_1.Typography, { className: classes.noResults, variant: "body2" }, `${intl.formatMessage(messages.noFollowers)}`)) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
223
|
+
react_1.default.createElement(List_1.default, null, state.results.slice(0, limit).map((user) => (react_1.default.createElement(material_1.ListItem, { key: user.id },
|
|
198
224
|
react_1.default.createElement(User_1.default, Object.assign({ elevation: 0, user: user, className: classes.followersItem }, (followEnabled
|
|
199
225
|
? { followConnectUserButtonProps: { onFollow: handleFollowersUpdate } }
|
|
200
226
|
: { followConnectUserButtonProps: { onChangeConnectionStatus: handleFollowersUpdate } }), UserProps)))))),
|
|
201
|
-
|
|
227
|
+
limit < state.count && (react_1.default.createElement(material_1.Button, { size: "small", className: classes.showMore, onClick: () => setOpenUserFollowersDialog(true) },
|
|
202
228
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.userFollowers.button.showAll", defaultMessage: "ui.userFollowers.button.showAll" }))),
|
|
203
|
-
openUserFollowersDialog && (react_1.default.createElement(BaseDialog_1.default, { title: isMobile ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.userFollowers.modal.title", defaultMessage: "ui.userFollowers.modal.title" })) : (`${intl.formatMessage(messages.title, { total:
|
|
229
|
+
openUserFollowersDialog && (react_1.default.createElement(BaseDialog_1.default, { title: isMobile ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.userFollowers.modal.title", defaultMessage: "ui.userFollowers.modal.title" })) : (`${intl.formatMessage(messages.title, { total: state.count })}`), onClose: () => setOpenUserFollowersDialog(false), open: openUserFollowersDialog }, state.isLoadingNext ? (react_1.default.createElement(CentralProgress_1.default, { size: 50 })) : (react_1.default.createElement(InfiniteScroll_1.default, { dataLength: state.results.length, next: fetchFollowers, hasMoreNext: Boolean(state.next), loaderNext: react_1.default.createElement(CentralProgress_1.default, { size: 30 }), height: isMobile ? '100vh' : 400, endMessage: react_1.default.createElement("p", { style: { textAlign: 'center' } },
|
|
204
230
|
react_1.default.createElement("b", null,
|
|
205
231
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.userFollowers.noMoreResults", defaultMessage: "ui.userFollowers.noMoreResults" }))) },
|
|
206
|
-
react_1.default.createElement(List_1.default, null,
|
|
232
|
+
react_1.default.createElement(List_1.default, null, state.results.map((f) => (react_1.default.createElement(material_1.ListItem, { key: f.id },
|
|
207
233
|
react_1.default.createElement(User_1.default, Object.assign({ elevation: 0, user: f, className: classes.followersItem }, (followEnabled
|
|
208
234
|
? { followConnectUserButtonProps: { onFollow: handleFollowersUpdate } }
|
|
209
235
|
: { followConnectUserButtonProps: { onChangeConnectionStatus: handleFollowersUpdate } }), UserProps))))))))))))));
|
|
210
236
|
/**
|
|
211
237
|
* if there are no results and autoHide prop is set to true ,component is hidden
|
|
212
238
|
*/
|
|
213
|
-
if (autoHide && !
|
|
239
|
+
if (autoHide && !state.count) {
|
|
214
240
|
return react_1.default.createElement(HiddenPlaceholder_1.default, null);
|
|
215
241
|
}
|
|
216
242
|
/**
|
|
217
243
|
* If content availability community option is false and user is anonymous , component is hidden.
|
|
218
244
|
*/
|
|
219
|
-
if (!contentAvailability && !
|
|
245
|
+
if (!contentAvailability && !authUserId) {
|
|
220
246
|
return react_1.default.createElement(HiddenPlaceholder_1.default, null);
|
|
221
247
|
}
|
|
222
248
|
/**
|