Add option to show only local toots in timeline preview (#6292)
* Add option to show only local toots in timeline preview Right know, toots from all the known fediverse are shown in the main page of an instance. That however doesn't reflect the instance itself. With this option the admin may choose to display only local toots so that users checking the instance get a better idea of internal conversations. * Fix issues pointed by codeclimate and eslint * Add default message for community timeline * Update pl.ymlgh/stable
parent
26f21fd5a0
commit
4e4f1b0dcb
|
@ -31,7 +31,7 @@ class AboutController < ApplicationController
|
||||||
|
|
||||||
def initial_state_params
|
def initial_state_params
|
||||||
{
|
{
|
||||||
settings: {},
|
settings: { known_fediverse: Setting.show_known_fediverse_at_about_page },
|
||||||
token: current_session&.token,
|
token: current_session&.token,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -19,6 +19,7 @@ module Admin
|
||||||
min_invite_role
|
min_invite_role
|
||||||
activity_api_enabled
|
activity_api_enabled
|
||||||
peers_api_enabled
|
peers_api_enabled
|
||||||
|
show_known_fediverse_at_about_page
|
||||||
).freeze
|
).freeze
|
||||||
|
|
||||||
BOOLEAN_SETTINGS = %w(
|
BOOLEAN_SETTINGS = %w(
|
||||||
|
@ -28,6 +29,7 @@ module Admin
|
||||||
show_staff_badge
|
show_staff_badge
|
||||||
activity_api_enabled
|
activity_api_enabled
|
||||||
peers_api_enabled
|
peers_api_enabled
|
||||||
|
show_known_fediverse_at_about_page
|
||||||
).freeze
|
).freeze
|
||||||
|
|
||||||
UPLOAD_SETTINGS = %w(
|
UPLOAD_SETTINGS = %w(
|
||||||
|
|
|
@ -6,6 +6,7 @@ import { hydrateStore } from '../actions/store';
|
||||||
import { IntlProvider, addLocaleData } from 'react-intl';
|
import { IntlProvider, addLocaleData } from 'react-intl';
|
||||||
import { getLocale } from '../locales';
|
import { getLocale } from '../locales';
|
||||||
import PublicTimeline from '../features/standalone/public_timeline';
|
import PublicTimeline from '../features/standalone/public_timeline';
|
||||||
|
import CommunityTimeline from '../features/standalone/community_timeline';
|
||||||
import HashtagTimeline from '../features/standalone/hashtag_timeline';
|
import HashtagTimeline from '../features/standalone/hashtag_timeline';
|
||||||
import initialState from '../initial_state';
|
import initialState from '../initial_state';
|
||||||
|
|
||||||
|
@ -23,17 +24,24 @@ export default class TimelineContainer extends React.PureComponent {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
locale: PropTypes.string.isRequired,
|
locale: PropTypes.string.isRequired,
|
||||||
hashtag: PropTypes.string,
|
hashtag: PropTypes.string,
|
||||||
|
showPublicTimeline: PropTypes.bool.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
static defaultProps = {
|
||||||
|
showPublicTimeline: initialState.settings.known_fediverse,
|
||||||
};
|
};
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { locale, hashtag } = this.props;
|
const { locale, hashtag, showPublicTimeline } = this.props;
|
||||||
|
|
||||||
let timeline;
|
let timeline;
|
||||||
|
|
||||||
if (hashtag) {
|
if (hashtag) {
|
||||||
timeline = <HashtagTimeline hashtag={hashtag} />;
|
timeline = <HashtagTimeline hashtag={hashtag} />;
|
||||||
} else {
|
} else if (showPublicTimeline) {
|
||||||
timeline = <PublicTimeline />;
|
timeline = <PublicTimeline />;
|
||||||
|
} else {
|
||||||
|
timeline = <CommunityTimeline />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
import React from 'react';
|
||||||
|
import { connect } from 'react-redux';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import StatusListContainer from '../../ui/containers/status_list_container';
|
||||||
|
import {
|
||||||
|
refreshCommunityTimeline,
|
||||||
|
expandCommunityTimeline,
|
||||||
|
} from '../../../actions/timelines';
|
||||||
|
import Column from '../../../components/column';
|
||||||
|
import ColumnHeader from '../../../components/column_header';
|
||||||
|
import { defineMessages, injectIntl } from 'react-intl';
|
||||||
|
import { connectCommunityStream } from '../../../actions/streaming';
|
||||||
|
|
||||||
|
const messages = defineMessages({
|
||||||
|
title: { id: 'standalone.public_title', defaultMessage: 'A look inside...' },
|
||||||
|
});
|
||||||
|
|
||||||
|
@connect()
|
||||||
|
@injectIntl
|
||||||
|
export default class CommunityTimeline extends React.PureComponent {
|
||||||
|
|
||||||
|
static propTypes = {
|
||||||
|
dispatch: PropTypes.func.isRequired,
|
||||||
|
intl: PropTypes.object.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
handleHeaderClick = () => {
|
||||||
|
this.column.scrollTop();
|
||||||
|
}
|
||||||
|
|
||||||
|
setRef = c => {
|
||||||
|
this.column = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount () {
|
||||||
|
const { dispatch } = this.props;
|
||||||
|
|
||||||
|
dispatch(refreshCommunityTimeline());
|
||||||
|
this.disconnect = dispatch(connectCommunityStream());
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount () {
|
||||||
|
if (this.disconnect) {
|
||||||
|
this.disconnect();
|
||||||
|
this.disconnect = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
handleLoadMore = () => {
|
||||||
|
this.props.dispatch(expandCommunityTimeline());
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const { intl } = this.props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Column ref={this.setRef}>
|
||||||
|
<ColumnHeader
|
||||||
|
icon='users'
|
||||||
|
title={intl.formatMessage(messages.title)}
|
||||||
|
onClick={this.handleHeaderClick}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<StatusListContainer
|
||||||
|
timelineId='community'
|
||||||
|
loadMore={this.handleLoadMore}
|
||||||
|
scrollKey='standalone_public_timeline'
|
||||||
|
trackScroll={false}
|
||||||
|
/>
|
||||||
|
</Column>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1230,6 +1230,15 @@
|
||||||
],
|
],
|
||||||
"path": "app/javascript/mastodon/features/public_timeline/index.json"
|
"path": "app/javascript/mastodon/features/public_timeline/index.json"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"descriptors": [
|
||||||
|
{
|
||||||
|
"defaultMessage": "A look inside...",
|
||||||
|
"id": "standalone.public_title"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "app/javascript/mastodon/features/standalone/community_timeline/index.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"descriptors": [
|
"descriptors": [
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,6 +34,8 @@ class Form::AdminSettings
|
||||||
:activity_api_enabled=,
|
:activity_api_enabled=,
|
||||||
:peers_api_enabled,
|
:peers_api_enabled,
|
||||||
:peers_api_enabled=,
|
:peers_api_enabled=,
|
||||||
|
:show_known_fediverse_at_about_page,
|
||||||
|
:show_known_fediverse_at_about_page=,
|
||||||
to: Setting
|
to: Setting
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,6 +18,9 @@
|
||||||
.fields-group
|
.fields-group
|
||||||
= f.input :timeline_preview, as: :boolean, wrapper: :with_label, label: t('admin.settings.timeline_preview.title'), hint: t('admin.settings.timeline_preview.desc_html')
|
= f.input :timeline_preview, as: :boolean, wrapper: :with_label, label: t('admin.settings.timeline_preview.title'), hint: t('admin.settings.timeline_preview.desc_html')
|
||||||
|
|
||||||
|
.fields-group
|
||||||
|
= f.input :show_known_fediverse_at_about_page, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_known_fediverse_at_about_page.title'), hint: t('admin.settings.show_known_fediverse_at_about_page.desc_html')
|
||||||
|
|
||||||
.fields-group
|
.fields-group
|
||||||
= f.input :show_staff_badge, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_staff_badge.title'), hint: t('admin.settings.show_staff_badge.desc_html')
|
= f.input :show_staff_badge, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_staff_badge.title'), hint: t('admin.settings.show_staff_badge.desc_html')
|
||||||
|
|
||||||
|
|
|
@ -290,6 +290,9 @@ en:
|
||||||
open:
|
open:
|
||||||
desc_html: Allow anyone to create an account
|
desc_html: Allow anyone to create an account
|
||||||
title: Open registration
|
title: Open registration
|
||||||
|
show_known_fediverse_at_about_page:
|
||||||
|
desc_html: When toggled, it will show toots from all the known fediverse on preview. Otherwise it will only show local toots.
|
||||||
|
title: Show known fediverse on timeline preview
|
||||||
show_staff_badge:
|
show_staff_badge:
|
||||||
desc_html: Show a staff badge on a user page
|
desc_html: Show a staff badge on a user page
|
||||||
title: Show staff badge
|
title: Show staff badge
|
||||||
|
|
|
@ -291,6 +291,9 @@ pl:
|
||||||
open:
|
open:
|
||||||
desc_html: Pozwól każdemu na założenie konta
|
desc_html: Pozwól każdemu na założenie konta
|
||||||
title: Otwarta rejestracja
|
title: Otwarta rejestracja
|
||||||
|
show_known_fediverse_at_about_page:
|
||||||
|
desc_html: Jeśli włączone, podgląd instancji będzie wyświetlał wpisy z całego Fediwersum. W innym przypadku, będą wyświetlane tylko lokalne wpisy.
|
||||||
|
title: Pokazuj wszystkie znane wpisy na podglądzie instancji
|
||||||
show_staff_badge:
|
show_staff_badge:
|
||||||
desc_html: Pokazuj odznakę uprawnień na stronie profilu użytkownika
|
desc_html: Pokazuj odznakę uprawnień na stronie profilu użytkownika
|
||||||
title: Pokazuj odznakę administracji
|
title: Pokazuj odznakę administracji
|
||||||
|
|
|
@ -290,6 +290,9 @@ pt-BR:
|
||||||
open:
|
open:
|
||||||
desc_html: Permitir que qualquer um crie uma conta
|
desc_html: Permitir que qualquer um crie uma conta
|
||||||
title: Cadastro aberto
|
title: Cadastro aberto
|
||||||
|
show_known_fediverse_at_about_page:
|
||||||
|
desc_html: Quando ligado, vai mostrar toots de todo o fediverso conhecido na prévia da timeline. Senão, mostra somente toots locais.
|
||||||
|
title: Mostrar fediverso conhecido na prévia da timeline
|
||||||
show_staff_badge:
|
show_staff_badge:
|
||||||
desc_html: Mostrar uma insígnia de Equipe na página de usuário
|
desc_html: Mostrar uma insígnia de Equipe na página de usuário
|
||||||
title: Mostrar insígnia de equipe
|
title: Mostrar insígnia de equipe
|
||||||
|
|
|
@ -49,6 +49,7 @@ defaults: &defaults
|
||||||
bootstrap_timeline_accounts: ''
|
bootstrap_timeline_accounts: ''
|
||||||
activity_api_enabled: true
|
activity_api_enabled: true
|
||||||
peers_api_enabled: true
|
peers_api_enabled: true
|
||||||
|
show_known_fediverse_at_about_page: true
|
||||||
development:
|
development:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
|
|
||||||
|
|
Reference in New Issue