Add back button to RHS threads from pinned posts (#6306)

This commit is contained in:
Joram Wilander
2017-05-03 11:55:06 -04:00
committed by Corey Hulen
parent 6a6c5365d3
commit ec5f40a423
7 changed files with 31 additions and 9 deletions

View File

@@ -168,7 +168,8 @@ export function emitPostFocusRightHandSideFromSearch(post, isMentionSearch) {
type: ActionTypes.RECEIVED_POST_SELECTED, type: ActionTypes.RECEIVED_POST_SELECTED,
postId: Utils.getRootId(post), postId: Utils.getRootId(post),
from_search: SearchStore.getSearchTerm(), from_search: SearchStore.getSearchTerm(),
from_flagged_posts: SearchStore.getIsFlaggedPosts() from_flagged_posts: SearchStore.getIsFlaggedPosts(),
from_pinned_posts: SearchStore.getIsPinnedPosts()
}); });
AppDispatcher.handleServerAction({ AppDispatcher.handleServerAction({

View File

@@ -142,7 +142,7 @@ export function getFlaggedPosts() {
); );
} }
export function getPinnedPosts(channelId) { export function getPinnedPosts(channelId = ChannelStore.getCurrentId()) {
Client.getPinnedPosts(channelId, Client.getPinnedPosts(channelId,
(data) => { (data) => {
AppDispatcher.handleServerAction({ AppDispatcher.handleServerAction({

View File

@@ -6,7 +6,7 @@ import Constants from 'utils/constants.jsx';
import {Tooltip, OverlayTrigger} from 'react-bootstrap'; import {Tooltip, OverlayTrigger} from 'react-bootstrap';
import * as GlobalActions from 'actions/global_actions.jsx'; import * as GlobalActions from 'actions/global_actions.jsx';
import {getFlaggedPosts} from 'actions/post_actions.jsx'; import {getFlaggedPosts, getPinnedPosts} from 'actions/post_actions.jsx';
import {FormattedMessage} from 'react-intl'; import {FormattedMessage} from 'react-intl';
@@ -24,15 +24,18 @@ export default class RhsHeaderPost extends React.Component {
this.state = {}; this.state = {};
} }
handleClose(e) { handleClose(e) {
e.preventDefault(); e.preventDefault();
GlobalActions.emitCloseRightHandSide(); GlobalActions.emitCloseRightHandSide();
this.props.shrink(); this.props.shrink();
} }
toggleSize(e) { toggleSize(e) {
e.preventDefault(); e.preventDefault();
this.props.toggleSize(); this.props.toggleSize();
} }
handleBack(e) { handleBack(e) {
e.preventDefault(); e.preventDefault();
@@ -50,8 +53,11 @@ export default class RhsHeaderPost extends React.Component {
}); });
} else if (this.props.fromFlaggedPosts) { } else if (this.props.fromFlaggedPosts) {
getFlaggedPosts(); getFlaggedPosts();
} else if (this.props.fromPinnedPosts) {
getPinnedPosts();
} }
} }
render() { render() {
let back; let back;
const closeSidebarTooltip = ( const closeSidebarTooltip = (
@@ -91,6 +97,15 @@ export default class RhsHeaderPost extends React.Component {
/> />
</Tooltip> </Tooltip>
); );
} else if (this.props.fromPinnedPosts) {
backToResultsTooltip = (
<Tooltip id='backToResultsTooltip'>
<FormattedMessage
id='rhs_header.backToPinnedTooltip'
defaultMessage='Back to Pinned Posts'
/>
</Tooltip>
);
} }
const expandSidebarTooltip = ( const expandSidebarTooltip = (
@@ -111,7 +126,7 @@ export default class RhsHeaderPost extends React.Component {
</Tooltip> </Tooltip>
); );
if (this.props.fromSearch || this.props.fromFlaggedPosts || this.props.isWebrtc) { if (this.props.fromSearch || this.props.fromFlaggedPosts || this.props.isWebrtc || this.props.fromPinnedPosts) {
back = ( back = (
<a <a
href='#' href='#'
@@ -190,6 +205,7 @@ RhsHeaderPost.propTypes = {
isWebrtc: React.PropTypes.bool, isWebrtc: React.PropTypes.bool,
fromSearch: React.PropTypes.string, fromSearch: React.PropTypes.string,
fromFlaggedPosts: React.PropTypes.bool, fromFlaggedPosts: React.PropTypes.bool,
fromPinnedPosts: React.PropTypes.bool,
toggleSize: React.PropTypes.func, toggleSize: React.PropTypes.func,
shrink: React.PropTypes.func shrink: React.PropTypes.func
}; };

View File

@@ -410,6 +410,7 @@ export default class RhsThread extends React.Component {
<RhsHeaderPost <RhsHeaderPost
fromFlaggedPosts={this.props.fromFlaggedPosts} fromFlaggedPosts={this.props.fromFlaggedPosts}
fromSearch={this.props.fromSearch} fromSearch={this.props.fromSearch}
fromPinnedPosts={this.props.fromPinnedPosts}
isWebrtc={this.props.isWebrtc} isWebrtc={this.props.isWebrtc}
isMentionSearch={this.props.isMentionSearch} isMentionSearch={this.props.isMentionSearch}
toggleSize={this.props.toggleSize} toggleSize={this.props.toggleSize}
@@ -472,6 +473,7 @@ RhsThread.defaultProps = {
RhsThread.propTypes = { RhsThread.propTypes = {
fromSearch: React.PropTypes.string, fromSearch: React.PropTypes.string,
fromFlaggedPosts: React.PropTypes.bool, fromFlaggedPosts: React.PropTypes.bool,
fromPinnedPosts: React.PropTypes.bool,
isWebrtc: React.PropTypes.bool, isWebrtc: React.PropTypes.bool,
isMentionSearch: React.PropTypes.bool, isMentionSearch: React.PropTypes.bool,
currentUser: React.PropTypes.object.isRequired, currentUser: React.PropTypes.object.isRequired,

View File

@@ -135,11 +135,12 @@ export default class SidebarRight extends React.Component {
}); });
} }
onSelectedChange(fromSearch, fromFlaggedPosts) { onSelectedChange(fromSearch, fromFlaggedPosts, fromPinnedPosts) {
this.setState({ this.setState({
postRightVisible: Boolean(PostStore.getSelectedPost()), postRightVisible: Boolean(PostStore.getSelectedPost()),
fromSearch, fromSearch,
fromFlaggedPosts fromFlaggedPosts,
fromPinnedPosts
}); });
} }
@@ -230,6 +231,7 @@ export default class SidebarRight extends React.Component {
<RhsThread <RhsThread
fromFlaggedPosts={this.state.fromFlaggedPosts} fromFlaggedPosts={this.state.fromFlaggedPosts}
fromSearch={this.state.fromSearch} fromSearch={this.state.fromSearch}
fromPinnedPosts={this.state.fromPinnedPosts}
isWebrtc={WebrtcStore.isBusy()} isWebrtc={WebrtcStore.isBusy()}
isMentionSearch={this.state.isMentionSearch} isMentionSearch={this.state.isMentionSearch}
currentUser={this.state.currentUser} currentUser={this.state.currentUser}

View File

@@ -1875,6 +1875,7 @@
"rhs_comment.permalink": "Permalink", "rhs_comment.permalink": "Permalink",
"rhs_header.backToCallTooltip": "Back to Call", "rhs_header.backToCallTooltip": "Back to Call",
"rhs_header.backToFlaggedTooltip": "Back to Flagged Posts", "rhs_header.backToFlaggedTooltip": "Back to Flagged Posts",
"rhs_header.backToPinnedTooltip": "Back to Pinned Posts",
"rhs_header.backToResultsTooltip": "Back to Search Results", "rhs_header.backToResultsTooltip": "Back to Search Results",
"rhs_header.closeSidebarTooltip": "Close Sidebar", "rhs_header.closeSidebarTooltip": "Close Sidebar",
"rhs_header.closeTooltip": "Close Sidebar", "rhs_header.closeTooltip": "Close Sidebar",

View File

@@ -509,8 +509,8 @@ class PostStoreClass extends EventEmitter {
return threadPosts; return threadPosts;
} }
emitSelectedPostChange(fromSearch, fromFlaggedPosts) { emitSelectedPostChange(fromSearch, fromFlaggedPosts, fromPinnedPosts) {
this.emit(SELECTED_POST_CHANGE_EVENT, fromSearch, fromFlaggedPosts); this.emit(SELECTED_POST_CHANGE_EVENT, fromSearch, fromFlaggedPosts, fromPinnedPosts);
} }
addSelectedPostChangeListener(callback) { addSelectedPostChangeListener(callback) {
@@ -717,7 +717,7 @@ PostStore.dispatchToken = AppDispatcher.register((payload) => {
break; break;
case ActionTypes.RECEIVED_POST_SELECTED: case ActionTypes.RECEIVED_POST_SELECTED:
PostStore.storeSelectedPostId(action.postId); PostStore.storeSelectedPostId(action.postId);
PostStore.emitSelectedPostChange(action.from_search, action.from_flagged_posts); PostStore.emitSelectedPostChange(action.from_search, action.from_flagged_posts, action.from_pinned_posts);
break; break;
case ActionTypes.RECEIVED_POST_PINNED: case ActionTypes.RECEIVED_POST_PINNED:
case ActionTypes.RECEIVED_POST_UNPINNED: case ActionTypes.RECEIVED_POST_UNPINNED: