diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index b5f2d7f02..a31925f4c 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -53,7 +53,7 @@ import { openModal } from '../../actions/modal'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { HotKeys } from 'react-hotkeys'; -import { boostModal, deleteModal } from '../../initial_state'; +import { boostModal, deleteModal, treeAcct } from '../../initial_state'; import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; import { textForScreenReader, defaultMediaVisibility } from '../../components/status'; import Icon from 'mastodon/components/icon'; @@ -160,9 +160,10 @@ const makeMapStateToProps = () => { if (status) { ancestorsIds = getAncestorsIds(state, { id: status.get('in_reply_to_id') }); - const root_status = ancestorsIds.size? getStatus(state, {id: ancestorsIds.get(0)}) : status; //error is directly visit url of non-root detailedStatus, feature! - rootAcct = root_status? root_status.getIn(['account', 'acct']) : -1; - if(rootAcct == '0') { + const root_status = ancestorsIds.size? getStatus(state, {id: ancestorsIds.get(0)}) : status; + rootAcct = root_status? root_status.getIn(['account', 'id']) : null; + if(rootAcct == treeAcct) { + deep = ancestorsIds.size; descendantsIds = state.getIn(['contexts', 'replies', status.get('id')]); if(descendantsIds) descendantsIds = descendantsIds.reverse(); @@ -170,8 +171,7 @@ const makeMapStateToProps = () => { else { descendantsIds = getDescendantsIds(state, { id: status.get('id') }); } - deep = rootAcct == '0' ? ancestorsIds.size : null; - treeData = rootAcct == '0' ? getTreeData(state, {id: status.get('id')}) : null; + treeData = getTreeData(state, {id: status.get('id')}) } return { @@ -592,7 +592,7 @@ class Status extends ImmutablePureComponent { showBackButton multiColumn={multiColumn} extraButton={( - + )} /> diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index f796fa850..7551059dc 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -27,5 +27,6 @@ export const title = getMeta('title'); export const cropImages = getMeta('crop_images'); export const treeRoot = getMeta('tree_root'); +export const treeAcct = getMeta('tree_acct') export default initialState; diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 646e0f13d..ef1dded72 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -22,7 +22,8 @@ class InitialStateSerializer < ActiveModel::Serializer mascot: instance_presenter.mascot&.file&.url, profile_directory: Setting.profile_directory, trends: Setting.trends, - tree_root: Rails.configuration.x.tree_address, + tree_root: Rails.configuration.x.tree_address, + tree_acct: Rails.configuration.x.tree_acc } if object.current_account diff --git a/config/initializers/new_features.rb b/config/initializers/new_features.rb index f638b4781..3a7efa758 100644 --- a/config/initializers/new_features.rb +++ b/config/initializers/new_features.rb @@ -3,6 +3,7 @@ Rails.application.configure do config.x.email_default_domain = ENV.fetch('EMAIL_DEFAULT_DOMAIN') { '???.edu.cn' } config.x.tree_address = ENV.fetch('TREE_ADDRESS') {''} + config.x.tree_acc = ENV.fetch('TREE_ACC') {'0'} config.x.anon_tag = ENV.fetch('ANON_TAG') {'[mask]'} config.x.anon_acc = ENV.fetch('ANON_ACC') {nil} config.x.anon_namelist = ENV.fetch('ANON_NAME_LIST') {nil}