Fix/14021 behaviour on add or remove toots (#14212)
* Add toot send by current user at local state after send a new toot Related to #14021 * Decrement toot counter at profile when remove a toot Related to #14021 * Remove semicolon at end of line
This commit is contained in:
		
					parent
					
						
							
								101485a41f
							
						
					
				
			
			
				commit
				
					
						2ada2ae18a
					
				
			
		
					 5 changed files with 26 additions and 8 deletions
				
			
		|  | @ -163,7 +163,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]); | ||||
| 
 | ||||
|  | @ -179,6 +178,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)); | ||||
|  |  | |||
|  | @ -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'; | ||||
|  | @ -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)); | ||||
|  |  | |||
|  | @ -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,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(); | ||||
| 
 | ||||
|  | @ -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)); | ||||
|  | @ -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 })); | ||||
|   } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue