diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/components/hashtag_header.tsx b/app/javascript/flavours/glitch/features/hashtag_timeline/components/hashtag_header.tsx
index a9013ea0fa..bc15cee0d8 100644
--- a/app/javascript/flavours/glitch/features/hashtag_timeline/components/hashtag_header.tsx
+++ b/app/javascript/flavours/glitch/features/hashtag_timeline/components/hashtag_header.tsx
@@ -197,13 +197,16 @@ export const HashtagHeader: React.FC<{
/>
)}
-
+ {signedIn && (
+
+ )}
diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx b/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx
index 04985233a4..4483d7a760 100644
--- a/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx
+++ b/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx
@@ -16,7 +16,7 @@ import { expandHashtagTimeline, clearTimeline } from 'flavours/glitch/actions/ti
import Column from 'flavours/glitch/components/column';
import ColumnHeader from 'flavours/glitch/components/column_header';
import { identityContextPropShape, withIdentity } from 'flavours/glitch/identity_context';
-import { remoteTopicFeedAccess, me } from 'flavours/glitch/initial_state';
+import { remoteTopicFeedAccess, me, localTopicFeedAccess } from 'flavours/glitch/initial_state';
import StatusListContainer from '../ui/containers/status_list_container';
@@ -25,9 +25,11 @@ import ColumnSettingsContainer from './containers/column_settings_container';
const mapStateToProps = (state, props) => {
const local = props.params.local || (!me && remoteTopicFeedAccess !== 'public');
+ const hasFeedAccess = !!me || localTopicFeedAccess === 'public';
return ({
local,
+ hasFeedAccess,
hasUnread: state.getIn(['timelines', `hashtag:${props.params.id}${local ? ':local' : ''}`, 'unread']) > 0,
});
};
@@ -127,11 +129,13 @@ class HashtagTimeline extends PureComponent {
}
_load() {
- const { dispatch, local } = this.props;
+ const { dispatch, local, hasFeedAccess } = this.props;
const { id, tags } = this.props.params;
- this._subscribe(dispatch, id, tags, local);
- dispatch(expandHashtagTimeline(id, { tags, local }));
+ if (hasFeedAccess) {
+ this._subscribe(dispatch, id, tags, local);
+ dispatch(expandHashtagTimeline(id, { tags, local }));
+ }
}
componentDidMount () {
@@ -164,7 +168,7 @@ class HashtagTimeline extends PureComponent {
};
render () {
- const { hasUnread, columnId, multiColumn, local } = this.props;
+ const { hasUnread, columnId, multiColumn, local, hasFeedAccess } = this.props;
const { id } = this.props.params;
const pinned = !!columnId;
@@ -192,7 +196,20 @@ class HashtagTimeline extends PureComponent {
scrollKey={`hashtag_timeline-${columnId}`}
timelineId={`hashtag:${id}${local ? ':local' : ''}`}
onLoadMore={this.handleLoadMore}
- emptyMessage={}
+ initialLoadingState={hasFeedAccess}
+ emptyMessage={
+ hasFeedAccess ? (
+
+ ) : (
+
+ )
+ }
bindToDocument={!multiColumn}
/>
diff --git a/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js b/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js
index ac21b6773b..ca51255a66 100644
--- a/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js
+++ b/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js
@@ -63,10 +63,10 @@ const makeMapStateToProps = () => {
const getStatusIds = makeGetStatusIds();
const getPendingStatusIds = makeGetStatusIds(true);
- const mapStateToProps = (state, { timelineId, regex }) => ({
+ const mapStateToProps = (state, { timelineId, regex, initialLoadingState = true }) => ({
statusIds: getStatusIds(state, { type: timelineId, regex }),
lastId: state.getIn(['timelines', timelineId, 'items'])?.last(),
- isLoading: state.getIn(['timelines', timelineId, 'isLoading'], true),
+ isLoading: state.getIn(['timelines', timelineId, 'isLoading'], initialLoadingState),
isPartial: state.getIn(['timelines', timelineId, 'isPartial'], false),
hasMore: state.getIn(['timelines', timelineId, 'hasMore']),
numPending: getPendingStatusIds(state, { type: timelineId }).size,