Pārlūkot izejas kodu

Fix #3773 - Pin favourites column (#4201)

master
Eugen Rochko pirms 6 gadiem
committed by GitHub
vecāks
revīzija
3fbf1bf35a
2 mainītis faili ar 48 papildinājumiem un 19 dzēšanām
  1. +46
    -18
      app/javascript/mastodon/features/favourited_statuses/index.js
  2. +2
    -1
      app/javascript/mastodon/features/ui/components/columns_area.js

+ 46
- 18
app/javascript/mastodon/features/favourited_statuses/index.js Parādīt failu

@@ -2,11 +2,11 @@ import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import LoadingIndicator from '../../components/loading_indicator';
import { fetchFavouritedStatuses, expandFavouritedStatuses } from '../../actions/favourites';
import Column from '../ui/components/column';
import ColumnHeader from '../../components/column_header';
import { addColumn, removeColumn, moveColumn } from '../../actions/columns';
import StatusList from '../../components/status_list';
import ColumnBackButtonSlim from '../../components/column_back_button_slim';
import { defineMessages, injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';

@@ -16,8 +16,6 @@ const messages = defineMessages({

const mapStateToProps = state => ({
statusIds: state.getIn(['status_lists', 'favourites', 'items']),
loaded: state.getIn(['status_lists', 'favourites', 'loaded']),
me: state.getIn(['meta', 'me']),
});

@connect(mapStateToProps)
@@ -27,34 +25,64 @@ export default class Favourites extends ImmutablePureComponent {
static propTypes = {
dispatch: PropTypes.func.isRequired,
statusIds: ImmutablePropTypes.list.isRequired,
loaded: PropTypes.bool,
intl: PropTypes.object.isRequired,
me: PropTypes.number.isRequired,
columnId: PropTypes.string,
multiColumn: PropTypes.bool,
};

componentWillMount () {
this.props.dispatch(fetchFavouritedStatuses());
}

handlePin = () => {
const { columnId, dispatch } = this.props;

if (columnId) {
dispatch(removeColumn(columnId));
} else {
dispatch(addColumn('FAVOURITES', {}));
}
}

handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
}

handleHeaderClick = () => {
this.column.scrollTop();
}

setRef = c => {
this.column = c;
}

handleScrollToBottom = () => {
this.props.dispatch(expandFavouritedStatuses());
}

render () {
const { loaded, intl } = this.props;

if (!loaded) {
return (
<Column>
<LoadingIndicator />
</Column>
);
}
const { intl, statusIds, columnId, multiColumn } = this.props;
const pinned = !!columnId;

return (
<Column icon='star' heading={intl.formatMessage(messages.heading)}>
<ColumnBackButtonSlim />
<StatusList {...this.props} scrollKey='favourited_statuses' onScrollToBottom={this.handleScrollToBottom} />
<Column ref={this.setRef}>
<ColumnHeader
icon='star'
title={intl.formatMessage(messages.heading)}
onPin={this.handlePin}
onMove={this.handleMove}
onClick={this.handleHeaderClick}
pinned={pinned}
multiColumn={multiColumn}
/>

<StatusList
trackScroll={!pinned}
statusIds={statusIds}
scrollKey={`favourited_statuses-${columnId}`}
onScrollToBottom={this.handleScrollToBottom}
/>
</Column>
);
}


+ 2
- 1
app/javascript/mastodon/features/ui/components/columns_area.js Parādīt failu

@@ -9,7 +9,7 @@ import { links, getIndex, getLink } from './tabs_bar';
import BundleContainer from '../containers/bundle_container';
import ColumnLoading from './column_loading';
import BundleColumnError from './bundle_column_error';
import { Compose, Notifications, HomeTimeline, CommunityTimeline, PublicTimeline, HashtagTimeline } from '../../ui/util/async-components';
import { Compose, Notifications, HomeTimeline, CommunityTimeline, PublicTimeline, HashtagTimeline, FavouritedStatuses } from '../../ui/util/async-components';

const componentMap = {
'COMPOSE': Compose,
@@ -18,6 +18,7 @@ const componentMap = {
'PUBLIC': PublicTimeline,
'COMMUNITY': CommunityTimeline,
'HASHTAG': HashtagTimeline,
'FAVOURITES': FavouritedStatuses,
};

export default class ColumnsArea extends ImmutablePureComponent {


Notiek ielāde…
Atcelt
Saglabāt