diff --git a/app/controllers/api/v1/timelines/public_controller.rb b/app/controllers/api/v1/timelines/public_controller.rb
index dc42f9b9..a6d1e8ee 100644
--- a/app/controllers/api/v1/timelines/public_controller.rb
+++ b/app/controllers/api/v1/timelines/public_controller.rb
@@ -2,6 +2,7 @@
class Api::V1::Timelines::PublicController < Api::BaseController
before_action :require_user!, only: [:show]
+ before_action :require_admin!
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
respond_to :json
diff --git a/app/javascript/gabsocial/actions/streaming.js b/app/javascript/gabsocial/actions/streaming.js
index 55e0ff4e..8b57cb2c 100644
--- a/app/javascript/gabsocial/actions/streaming.js
+++ b/app/javascript/gabsocial/actions/streaming.js
@@ -51,7 +51,6 @@ export function connectTimelineStream (timelineId, path, pollingRefresh = null,
}
export const connectUserStream = () => connectTimelineStream('home', 'user');
-export const connectCommunityStream = ({ onlyMedia } = {}) => connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`);
export const connectHashtagStream = (id, tag, accept) => connectTimelineStream(`hashtag:${id}`, `hashtag&tag=${tag}`, null, accept);
export const connectListStream = id => connectTimelineStream(`list:${id}`, `list&list=${id}`);
export const connectGroupStream = id => connectTimelineStream(`group:${id}`, `group&group=${id}`);
diff --git a/app/javascript/gabsocial/components/sidebar.js b/app/javascript/gabsocial/components/sidebar.js
index 9ea39a12..769bc64d 100644
--- a/app/javascript/gabsocial/components/sidebar.js
+++ b/app/javascript/gabsocial/components/sidebar.js
@@ -164,11 +164,6 @@ class Sidebar extends ImmutablePureComponent {
]
const exploreItems = [
- {
- title: 'All',
- icon: 'community',
- to: '/timeline/all',
- },
{
title: 'Chat',
icon: 'chat',
diff --git a/app/javascript/gabsocial/components/sidebar_xs.js b/app/javascript/gabsocial/components/sidebar_xs.js
index b3315885..a8949a97 100644
--- a/app/javascript/gabsocial/components/sidebar_xs.js
+++ b/app/javascript/gabsocial/components/sidebar_xs.js
@@ -130,12 +130,6 @@ class SidebarXS extends ImmutablePureComponent {
onClick: this.handleSidebarClose,
title: intl.formatMessage(messages.preferences),
},
- {
- icon: 'community',
- to: '/timeline/all',
- onClick: this.handleSidebarClose,
- title: 'All'
- },
{
icon: 'list',
to: '/lists',
diff --git a/app/javascript/gabsocial/features/community_timeline.js b/app/javascript/gabsocial/features/community_timeline.js
index 8cf6d65c..31a5da45 100644
--- a/app/javascript/gabsocial/features/community_timeline.js
+++ b/app/javascript/gabsocial/features/community_timeline.js
@@ -1,6 +1,5 @@
import { defineMessages, injectIntl } from 'react-intl'
import { expandCommunityTimeline } from '../actions/timelines'
-import { connectCommunityStream } from '../actions/streaming'
import StatusList from '../components/status_list'
const messages = defineMessages({
@@ -30,24 +29,13 @@ class CommunityTimeline extends PureComponent {
const { dispatch, onlyMedia } = this.props
dispatch(expandCommunityTimeline({ onlyMedia }))
- this.disconnect = dispatch(connectCommunityStream({ onlyMedia }))
}
componentDidUpdate (prevProps) {
if (prevProps.onlyMedia !== this.props.onlyMedia) {
const { dispatch, onlyMedia } = this.props
- this.disconnect()
-
dispatch(expandCommunityTimeline({ onlyMedia }))
- this.disconnect = dispatch(connectCommunityStream({ onlyMedia }))
- }
- }
-
- componentWillUnmount () {
- if (this.disconnect) {
- this.disconnect()
- this.disconnect = null
}
}
diff --git a/app/javascript/gabsocial/pages/community_page.js b/app/javascript/gabsocial/pages/community_page.js
index b11bfa13..50483ac5 100644
--- a/app/javascript/gabsocial/pages/community_page.js
+++ b/app/javascript/gabsocial/pages/community_page.js
@@ -8,8 +8,6 @@ import WhoToFollowPanel from '../components/panel/who_to_follow_panel'
import ProgressPanel from '../components/panel/progress_panel'
import TrendsPanel from '../components/panel/trends_panel'
import DefaultLayout from '../layouts/default_layout'
-import TimelineComposeBlock from '../components/timeline_compose_block'
-import Divider from '../components/divider'
const messages = defineMessages({
community: { 'id': 'column.community', 'defaultMessage': 'Community feed' },
@@ -57,8 +55,6 @@ class CommunityPage extends PureComponent {
)}
>
-
-
{children}
)
diff --git a/app/models/status.rb b/app/models/status.rb
index 855e17d8..1f66138f 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -342,7 +342,7 @@ class Status < ApplicationRecord
end
def as_public_timeline(account = nil)
- query = timeline_scope.without_replies.where('statuses.updated_at > ?', 30.minutes.ago)
+ query = timeline_scope.without_replies
apply_timeline_filters(query, account)
end
diff --git a/app/services/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb
index e328b173..85a2f036 100644
--- a/app/services/batched_remove_status_service.rb
+++ b/app/services/batched_remove_status_service.rb
@@ -87,14 +87,6 @@ class BatchedRemoveStatusService < BaseService
payload = @json_payloads[status.id]
redis.pipelined do
- redis.publish('timeline:public', payload)
- redis.publish('timeline:public:local', payload) if status.local?
-
- if status.media_attachments.any?
- redis.publish('timeline:public:media', payload)
- redis.publish('timeline:public:local:media', payload) if status.local?
- end
-
@tags[status.id].each do |hashtag|
redis.publish("timeline:hashtag:#{hashtag}", payload)
redis.publish("timeline:hashtag:#{hashtag}:local", payload) if status.local?
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb
index 1e561e62..63c517ca 100644
--- a/app/services/fan_out_on_write_service.rb
+++ b/app/services/fan_out_on_write_service.rb
@@ -24,9 +24,6 @@ class FanOutOnWriteService < BaseService
deliver_to_hashtags(status)
return if status.reply? && status.in_reply_to_account_id != status.account_id
-
- deliver_to_public(status)
- deliver_to_media(status) if status.media_attachments.any?
end
private
@@ -98,20 +95,6 @@ class FanOutOnWriteService < BaseService
end
end
- def deliver_to_public(status)
- Rails.logger.debug "Delivering status #{status.id} to public timeline"
-
- Redis.current.publish('timeline:public', @payload)
- Redis.current.publish('timeline:public:local', @payload) if status.local?
- end
-
- def deliver_to_media(status)
- Rails.logger.debug "Delivering status #{status.id} to media timeline"
-
- Redis.current.publish('timeline:public:media', @payload)
- Redis.current.publish('timeline:public:local:media', @payload) if status.local?
- end
-
def deliver_to_own_conversation(status)
AccountConversation.add_status(status.account, status)
end
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index f0fb5df9..61d56400 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -22,8 +22,6 @@ class RemoveStatusService < BaseService
remove_from_affected
remove_reblogs
remove_from_hashtags
- remove_from_public
- remove_from_media if status.media_attachments.any?
@status.destroy!
else
@@ -145,20 +143,6 @@ class RemoveStatusService < BaseService
end
end
- def remove_from_public
- return unless @status.public_visibility?
-
- redis.publish('timeline:public', @payload)
- redis.publish('timeline:public:local', @payload) if @status.local?
- end
-
- def remove_from_media
- return unless @status.public_visibility?
-
- redis.publish('timeline:public:media', @payload)
- redis.publish('timeline:public:local:media', @payload) if @status.local?
- end
-
def lock_options
{ redis: Redis.current, key: "distribute:#{@status.id}" }
end
diff --git a/streaming/index.js b/streaming/index.js
index 08471d10..94bea582 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -267,10 +267,6 @@ const startWorker = (workerId) => {
};
const PUBLIC_STREAMS = [
- 'public',
- 'public:media',
- 'public:local',
- 'public:local:media',
'hashtag',
'hashtag:local',
];
@@ -548,20 +544,6 @@ const startWorker = (workerId) => {
streamFrom(`timeline:${req.accountId}`, req, streamToHttp(req, res), streamHttpEnd(req), false, true);
});
- app.get('/api/v1/streaming/public', (req, res) => {
- const onlyMedia = req.query.only_media === '1' || req.query.only_media === 'true';
- const channel = onlyMedia ? 'timeline:public:media' : 'timeline:public';
-
- streamFrom(channel, req, streamToHttp(req, res), streamHttpEnd(req), true);
- });
-
- app.get('/api/v1/streaming/public/local', (req, res) => {
- const onlyMedia = req.query.only_media === '1' || req.query.only_media === 'true';
- const channel = onlyMedia ? 'timeline:public:local:media' : 'timeline:public:local';
-
- streamFrom(channel, req, streamToHttp(req, res), streamHttpEnd(req), true);
- });
-
app.get('/api/v1/streaming/direct', (req, res) => {
const channel = `timeline:direct:${req.accountId}`;
streamFrom(channel, req, streamToHttp(req, res), streamHttpEnd(req, subscriptionHeartbeat(channel)), true);
@@ -624,18 +606,6 @@ const startWorker = (workerId) => {
case 'user:notification':
streamFrom(`timeline:${req.accountId}`, req, streamToWs(req, ws), streamWsEnd(req, ws), false, true);
break;
- case 'public':
- streamFrom('timeline:public', req, streamToWs(req, ws), streamWsEnd(req, ws), true);
- break;
- case 'public:local':
- streamFrom('timeline:public:local', req, streamToWs(req, ws), streamWsEnd(req, ws), true);
- break;
- case 'public:media':
- streamFrom('timeline:public:media', req, streamToWs(req, ws), streamWsEnd(req, ws), true);
- break;
- case 'public:local:media':
- streamFrom('timeline:public:local:media', req, streamToWs(req, ws), streamWsEnd(req, ws), true);
- break;
case 'direct':
channel = `timeline:direct:${req.accountId}`;
streamFrom(channel, req, streamToWs(req, ws), streamWsEnd(req, ws, subscriptionHeartbeat(channel)), true);