PLT-6215 Major post list refactor (#6501)
* Major post list refactor * Fix post and thread deletion * Fix preferences not selecting correctly * Fix military time displaying * Fix UP key for editing posts * Fix ESLint error * Various fixes and updates per feedback * Fix for permalink view * Revert to old scrolling method and various fixes * Add floating timestamp, new message indicator, scroll arrows * Update post loading for focus mode and add visibility limit * Fix pinning posts and a react warning * Add loading UI updates from Asaad * Fix refreshing loop * Temporarily bump post visibility limit * Update infinite scrolling * Remove infinite scrolling
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
0231e95f1c
Коммит
ab67f6e257
@@ -0,0 +1,94 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import {createPost} from 'actions/post_actions.jsx';
|
||||
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
export default class FailedPostOptions extends React.Component {
|
||||
static propTypes = {
|
||||
|
||||
/*
|
||||
* The failed post
|
||||
*/
|
||||
post: PropTypes.object.isRequired,
|
||||
actions: PropTypes.shape({
|
||||
|
||||
/**
|
||||
* The function to delete the post
|
||||
*/
|
||||
removePost: PropTypes.func.isRequired
|
||||
}).isRequired
|
||||
}
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
this.retryPost = this.retryPost.bind(this);
|
||||
this.cancelPost = this.cancelPost.bind(this);
|
||||
|
||||
this.submitting = false;
|
||||
|
||||
this.state = {};
|
||||
}
|
||||
|
||||
retryPost(e) {
|
||||
e.preventDefault();
|
||||
|
||||
if (this.submitting) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.submitting = true;
|
||||
|
||||
const post = {...this.props.post};
|
||||
Reflect.deleteProperty(post, 'id');
|
||||
createPost(post,
|
||||
() => {
|
||||
this.submitting = false;
|
||||
},
|
||||
(err) => {
|
||||
if (err.id === 'api.post.create_post.root_id.app_error') {
|
||||
this.showPostDeletedModal();
|
||||
} else {
|
||||
this.forceUpdate();
|
||||
}
|
||||
|
||||
this.submitting = false;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
cancelPost(e) {
|
||||
e.preventDefault();
|
||||
this.props.actions.removePost(this.props.post);
|
||||
}
|
||||
|
||||
render() {
|
||||
return (<span className='pending-post-actions'>
|
||||
<a
|
||||
className='post-retry'
|
||||
href='#'
|
||||
onClick={this.retryPost}
|
||||
>
|
||||
<FormattedMessage
|
||||
id='pending_post_actions.retry'
|
||||
defaultMessage='Retry'
|
||||
/>
|
||||
</a>
|
||||
{' - '}
|
||||
<a
|
||||
className='post-cancel'
|
||||
href='#'
|
||||
onClick={this.cancelPost}
|
||||
>
|
||||
<FormattedMessage
|
||||
id='pending_post_actions.cancel'
|
||||
defaultMessage='Cancel'
|
||||
/>
|
||||
</a>
|
||||
</span>);
|
||||
}
|
||||
}
|
||||
24
webapp/components/post_view/failed_post_options/index.js
Обычный файл
24
webapp/components/post_view/failed_post_options/index.js
Обычный файл
@@ -0,0 +1,24 @@
|
||||
// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import {connect} from 'react-redux';
|
||||
import {bindActionCreators} from 'redux';
|
||||
import {removePost} from 'mattermost-redux/actions/posts';
|
||||
|
||||
import FailedPostOptions from './failed_post_options.jsx';
|
||||
|
||||
function mapStateToProps(state, ownProps) {
|
||||
return {
|
||||
...ownProps
|
||||
};
|
||||
}
|
||||
|
||||
function mapDispatchToProps(dispatch) {
|
||||
return {
|
||||
actions: bindActionCreators({
|
||||
removePost
|
||||
}, dispatch)
|
||||
};
|
||||
}
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(FailedPostOptions);
|
||||
Ссылка в новой задаче
Block a user