logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: bf60f2898d8c9dcf880bd14c187caf90b9549a2a
parent: 8ef79d8dc9de33975bd793587020a259ef020276
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Tue, 31 Jan 2017 22:34:33 +0100

Fix #529 - Make hashtag timelines show conversations, fix hashtag loading in the UI

Diffstat:

Mapp/assets/javascripts/components/actions/timelines.jsx9+++++----
Mapp/assets/javascripts/components/features/account_timeline/index.jsx5+++--
Mapp/assets/javascripts/components/features/followers/index.jsx1+
Mapp/assets/javascripts/components/features/following/index.jsx1+
Mapp/models/status.rb1-
Mapp/services/fan_out_on_write_service.rb5++++-
6 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/app/assets/javascripts/components/actions/timelines.jsx b/app/assets/javascripts/components/actions/timelines.jsx @@ -74,7 +74,7 @@ export function refreshTimeline(timeline, id = null) { let path = timeline; let skipLoading = false; - if (newestId !== null && getState().getIn(['timelines', timeline, 'loaded'])) { + if (newestId !== null && getState().getIn(['timelines', timeline, 'loaded']) && (id === null || getState().getIn(['timelines', timeline, 'id']) === id)) { params = `?since_id=${newestId}`; skipLoading = true; } @@ -112,7 +112,7 @@ export function expandTimeline(timeline, id = null) { return; } - dispatch(expandTimelineRequest(timeline)); + dispatch(expandTimelineRequest(timeline, id)); let path = timeline; @@ -133,10 +133,11 @@ export function expandTimeline(timeline, id = null) { }; }; -export function expandTimelineRequest(timeline) { +export function expandTimelineRequest(timeline, id) { return { type: TIMELINE_EXPAND_REQUEST, - timeline + timeline, + id }; }; diff --git a/app/assets/javascripts/components/features/account_timeline/index.jsx b/app/assets/javascripts/components/features/account_timeline/index.jsx @@ -11,9 +11,10 @@ import LoadingIndicator from '../../components/loading_indicator'; import Column from '../ui/components/column'; import HeaderContainer from './containers/header_container'; import ColumnBackButton from '../../components/column_back_button'; +import Immutable from 'immutable'; const mapStateToProps = (state, props) => ({ - statusIds: state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'items']), + statusIds: state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'items'], Immutable.List()), isLoading: state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'isLoading']), me: state.getIn(['meta', 'me']) }); @@ -49,7 +50,7 @@ const AccountTimeline = React.createClass({ render () { const { statusIds, isLoading, me } = this.props; - if (!statusIds) { + if (!statusIds && isLoading) { return ( <Column> <LoadingIndicator /> diff --git a/app/assets/javascripts/components/features/followers/index.jsx b/app/assets/javascripts/components/features/followers/index.jsx @@ -67,6 +67,7 @@ const Followers = React.createClass({ return ( <Column> <ColumnBackButton /> + <ScrollContainer scrollKey='followers'> <div className='scrollable' onScroll={this.handleScroll}> <div> diff --git a/app/assets/javascripts/components/features/following/index.jsx b/app/assets/javascripts/components/features/following/index.jsx @@ -67,6 +67,7 @@ const Following = React.createClass({ return ( <Column> <ColumnBackButton /> + <ScrollContainer scrollKey='following'> <div className='scrollable' onScroll={this.handleScroll}> <div> diff --git a/app/models/status.rb b/app/models/status.rb @@ -119,7 +119,6 @@ class Status < ApplicationRecord query = tag.statuses .joins('LEFT OUTER JOIN accounts ON statuses.account_id = accounts.id') .where(visibility: :public) - .where('(statuses.in_reply_to_id IS NULL OR statuses.in_reply_to_account_id = statuses.account_id)') .where('statuses.reblog_of_id IS NULL') account.nil? ? filter_timeline_default(query) : filter_timeline_default(filter_timeline(query, account)) diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb @@ -8,9 +8,12 @@ class FanOutOnWriteService < BaseService deliver_to_followers(status) deliver_to_mentioned(status) - return if status.account.silenced? || !status.public_visibility? || status.reblog? || (status.reply? && status.in_reply_to_account_id != status.account_id) + return if status.account.silenced? || !status.public_visibility? || status.reblog? deliver_to_hashtags(status) + + return if status.reply? && status.in_reply_to_account_id != status.account_id + deliver_to_public(status) end