Skip to content

Commit

Permalink
Fix/14021 behaviour on add or remove toots (mastodon#14212)
Browse files Browse the repository at this point in the history
* Add toot send by current user at local state after send a new toot

Related to mastodon#14021

* Decrement toot counter at profile when remove a toot

Related to mastodon#14021

* Remove semicolon at end of line
  • Loading branch information
arielrodrigues authored and Mage committed Jan 14, 2022
1 parent 30023e5 commit 626174d
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 8 deletions.
1 change: 1 addition & 0 deletions app/controllers/api/v1/statuses_controller.rb
Expand Up @@ -57,6 +57,7 @@ def destroy

@status.discard
RemovalWorker.perform_async(@status.id, redraft: true)
@status.account.statuses_count = @status.account.statuses_count - 1

render json: @status, serializer: REST::StatusSerializer, source_requested: true
end
Expand Down
2 changes: 1 addition & 1 deletion app/javascript/mastodon/actions/compose.js
Expand Up @@ -171,7 +171,6 @@ export function submitCompose(routerHistory) {

// To make the app more responsive, immediately push the status
// into the columns

const insertIfOnline = timelineId => {
const timeline = getState().getIn(['timelines', timelineId]);

Expand All @@ -187,6 +186,7 @@ export function submitCompose(routerHistory) {
if (response.data.in_reply_to_id === null && response.data.visibility === 'public') {
insertIfOnline('community');
insertIfOnline('public');
insertIfOnline(`account:${response.data.account.id}`);
}
}).catch(function (error) {
dispatch(submitComposeFail(error));
Expand Down
3 changes: 2 additions & 1 deletion app/javascript/mastodon/actions/statuses.js
Expand Up @@ -3,7 +3,7 @@ import openDB from '../storage/db';
import { evictStatus } from '../storage/modifier';

import { deleteFromTimelines } from './timelines';
import { importFetchedStatus, importFetchedStatuses, importAccount, importStatus } from './importer';
import { importFetchedStatus, importFetchedStatuses, importAccount, importStatus, importFetchedAccount } from './importer';
import { ensureComposeIsVisible } from './compose';

export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST';
Expand Down Expand Up @@ -155,6 +155,7 @@ export function deleteStatus(id, routerHistory, withRedraft = false) {
evictStatus(id);
dispatch(deleteStatusSuccess(id));
dispatch(deleteFromTimelines(id));
dispatch(importFetchedAccount(response.data.account));

if (withRedraft) {
dispatch(redraft(status, response.data.text));
Expand Down
13 changes: 7 additions & 6 deletions app/javascript/mastodon/actions/streaming.js
Expand Up @@ -71,9 +71,10 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => {
dispatch(fetchAnnouncements(done))))));
};

export const connectUserStream = () => connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification);
export const connectCommunityStream = ({ onlyMedia } = {}) => connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`);
export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) => connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`);
export const connectHashtagStream = (id, tag, local, accept) => connectTimelineStream(`hashtag:${id}${local ? ':local' : ''}`, `hashtag${local ? ':local' : ''}&tag=${tag}`, null, accept);
export const connectDirectStream = () => connectTimelineStream('direct', 'direct');
export const connectListStream = id => connectTimelineStream(`list:${id}`, `list&list=${id}`);
export const connectUserStream = () => connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification);
export const connectUserTimelineStream = (accountId) => connectTimelineStream(`account:${accountId}`, 'user');
export const connectCommunityStream = ({ onlyMedia } = {}) => connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`);
export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) => connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`);
export const connectHashtagStream = (id, tag, local, accept) => connectTimelineStream(`hashtag:${id}${local ? ':local' : ''}`, `hashtag${local ? ':local' : ''}&tag=${tag}`, null, accept);
export const connectDirectStream = () => connectTimelineStream('direct', 'direct');
export const connectListStream = id => connectTimelineStream(`list:${id}`, `list&list=${id}`);
15 changes: 15 additions & 0 deletions app/javascript/mastodon/features/account_timeline/index.js
Expand Up @@ -15,6 +15,8 @@ import { FormattedMessage } from 'react-intl';
import { fetchAccountIdentityProofs } from '../../actions/identity_proofs';
import MissingIndicator from 'mastodon/components/missing_indicator';
import TimelineHint from 'mastodon/components/timeline_hint';
import { me } from 'mastodon/initial_state';
import { connectUserTimelineStream } from '../../actions/streaming';

const emptyList = ImmutableList();

Expand Down Expand Up @@ -73,6 +75,12 @@ class AccountTimeline extends ImmutablePureComponent {
this.props.dispatch(expandAccountTimeline(accountId, { withReplies }));
}

componentDidMount () {
if (this.props.params.accountId === me) {
this.disconnect = this.props.dispatch(connectUserTimelineStream(me));
}
}

componentWillReceiveProps (nextProps) {
if ((nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) || nextProps.withReplies !== this.props.withReplies) {
this.props.dispatch(fetchAccount(nextProps.params.accountId));
Expand All @@ -86,6 +94,13 @@ class AccountTimeline extends ImmutablePureComponent {
}
}

componentWillUnmount () {
if (this.disconnect) {
this.disconnect();
this.disconnect = null;
}
}

handleLoadMore = maxId => {
this.props.dispatch(expandAccountTimeline(this.props.params.accountId, { maxId, withReplies: this.props.withReplies }));
}
Expand Down

0 comments on commit 626174d

Please sign in to comment.