From 1d8862712a5cd9274c7aee955c470b44b78e2054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KMY=EF=BC=88=E9=9B=AA=E3=81=82=E3=81=99=E3=81=8B=EF=BC=89?= Date: Fri, 27 Oct 2023 08:08:50 +0900 Subject: [PATCH] =?UTF-8?q?Add:=20#62=20=E3=83=AD=E3=83=BC=E3=82=AB?= =?UTF-8?q?=E3=83=AB=E3=82=BF=E3=82=A4=E3=83=A0=E3=83=A9=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=92=E7=84=A1=E5=8A=B9=E3=81=AB=E3=81=99=E3=82=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E8=80=85=E5=90=91=E3=81=91=E8=A8=AD=E5=AE=9A=20(#179)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bump version to 8.0 * Add: 他のサーバーに公開する情報に、制限設定などを追加 * Fix: `quote_of_id`のインデックス * Fix: #172 他のサーバーからの相乗り絵文字削除が反映されない * Test: #166 リモートから自分の絵文字を受け取った時、ライセンスが上書きされないことを確認するテスト * Add: #62 ローカルタイムラインを無効にする管理者設定(内部挙動のみ) * Add: 画面部分を追加 --- app/helpers/kmyblue_capabilities_helper.rb | 2 + .../mastodon/features/about/index.jsx | 5 + .../features/antenna_setting/index.jsx | 5 +- .../mastodon/features/firehose/index.jsx | 10 +- .../ui/components/navigation_panel.jsx | 9 +- app/javascript/mastodon/initial_state.js | 2 + app/models/form/admin_settings.rb | 2 + app/models/public_feed.rb | 2 + app/models/tag_feed.rb | 2 + app/serializers/initial_state_serializer.rb | 1 + app/services/delivery_antenna_service.rb | 6 +- app/services/fan_out_on_write_service.rb | 14 ++- .../admin/settings/discovery/show.html.haml | 3 + config/locales/simple_form.en.yml | 2 + config/locales/simple_form.ja.yml | 2 + config/settings.yml | 1 + spec/models/public_feed_spec.rb | 20 ++++ spec/models/tag_feed_spec.rb | 6 + spec/requests/api/v1/timelines/public_spec.rb | 22 ++++ .../services/delivery_antenna_service_spec.rb | 27 +++++ .../services/fan_out_on_write_service_spec.rb | 111 ++++++++++++++++++ 21 files changed, 238 insertions(+), 16 deletions(-) diff --git a/app/helpers/kmyblue_capabilities_helper.rb b/app/helpers/kmyblue_capabilities_helper.rb index 07f22e8db5..2e6187ce26 100644 --- a/app/helpers/kmyblue_capabilities_helper.rb +++ b/app/helpers/kmyblue_capabilities_helper.rb @@ -27,6 +27,7 @@ module KmyblueCapabilitiesHelper capabilities << :enable_wide_emoji_reaction end capabilities << :kmyblue_visibility_public_unlisted if Setting.enable_public_unlisted_visibility + capabilities << :timeline_no_local unless Setting.enable_local_timeline capabilities end @@ -58,6 +59,7 @@ module KmyblueCapabilitiesHelper capabilities << :emoji_reaction capabilities << :enable_wide_emoji_reaction end + capabilities << :timeline_no_local unless Setting.enable_local_timeline capabilities end diff --git a/app/javascript/mastodon/features/about/index.jsx b/app/javascript/mastodon/features/about/index.jsx index 54a684f5ee..1ebf9d2a57 100644 --- a/app/javascript/mastodon/features/about/index.jsx +++ b/app/javascript/mastodon/features/about/index.jsx @@ -25,6 +25,7 @@ const messages = defineMessages({ title: { id: 'column.about', defaultMessage: 'About' }, rules: { id: 'about.rules', defaultMessage: 'Server rules' }, blocks: { id: 'about.blocks', defaultMessage: 'Moderated servers' }, + localTimeline: { id: 'column.community', defaultMessage: 'Local timeline' }, noop: { id: 'about.domain_blocks.noop.title', defaultMessage: 'Soft limited' }, noopExplanation: { id: 'about.domain_blocks.noop.explanation', defaultMessage: 'This server is limited partically.' }, silenced: { id: 'about.domain_blocks.silenced.title', defaultMessage: 'Limited' }, @@ -133,6 +134,7 @@ class About extends PureComponent { const fedibirdCapabilities = server.get('fedibird_capabilities') || []; // thinking about isLoading is true const isPublicUnlistedVisibility = fedibirdCapabilities.includes('kmyblue_visibility_public_unlisted'); const isEmojiReaction = fedibirdCapabilities.includes('emoji_reaction'); + const isLocalTimeline = !fedibirdCapabilities.includes('timeline_no_local'); return ( @@ -204,6 +206,9 @@ class About extends PureComponent {
  • {intl.formatMessage(messages.publicUnlistedVisibility)}: {intl.formatMessage(isPublicUnlistedVisibility ? messages.enabled : messages.disabled)}
  • +
  • + {intl.formatMessage(messages.localTimeline)}: {intl.formatMessage(isLocalTimeline ? messages.enabled : messages.disabled)} +
  • )} diff --git a/app/javascript/mastodon/features/antenna_setting/index.jsx b/app/javascript/mastodon/features/antenna_setting/index.jsx index 4aef6d936d..2863cba921 100644 --- a/app/javascript/mastodon/features/antenna_setting/index.jsx +++ b/app/javascript/mastodon/features/antenna_setting/index.jsx @@ -46,6 +46,7 @@ import ColumnHeader from 'mastodon/components/column_header'; import { Icon } from 'mastodon/components/icon'; import { LoadingIndicator } from 'mastodon/components/loading_indicator'; import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; +import { enableLocalTimeline } from 'mastodon/initial_state'; import { WithRouterPropTypes } from 'mastodon/utils/react_router'; import RadioPanel from './components/radio_panel'; @@ -401,7 +402,7 @@ class AntennaSetting extends PureComponent { - {!isLtl && ( + {!isLtl && (enableLocalTimeline || isStl) && (
    )} - {!isStl && ( + {!isStl && (enableLocalTimeline || isLtl) && (