Fix account language selector (#39801)
This commit is contained in:
parent
c45bcd990b
commit
32cbeb3952
@ -15,16 +15,21 @@ import { IconButton } from 'mastodon/components/icon_button';
|
|||||||
import { injectIntl } from '@/mastodon/components/intl';
|
import { injectIntl } from '@/mastodon/components/intl';
|
||||||
import Option from 'mastodon/features/report/components/option';
|
import Option from 'mastodon/features/report/components/option';
|
||||||
import { languages as preloadedLanguages } from 'mastodon/initial_state';
|
import { languages as preloadedLanguages } from 'mastodon/initial_state';
|
||||||
|
import { selectTimelinesByAccount } from '@/mastodon/selectors/timelines';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
close: { id: 'lightbox.close', defaultMessage: 'Close' },
|
close: { id: 'lightbox.close', defaultMessage: 'Close' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const getAccountLanguages = createSelector([
|
const getAccountLanguages = createSelector(
|
||||||
(state, accountId) => state.getIn(['timelines', `account:${accountId}`, 'items'], ImmutableList()),
|
[selectTimelinesByAccount, (state) => state.get('statuses')],
|
||||||
state => state.get('statuses'),
|
(timelines, statuses) => ImmutableSet(
|
||||||
], (statusIds, statuses) =>
|
timelines
|
||||||
ImmutableSet(statusIds.map(statusId => statuses.get(statusId)).filter(status => !status.get('reblog')).map(status => status.get('language'))));
|
.reduce((statusIds, timeline) => statusIds.concat(timeline.get('items')), ImmutableList())
|
||||||
|
.map(statusId => statuses.get(statusId))
|
||||||
|
.filter(status => !status.get('reblog'))
|
||||||
|
.map(status => status.get('language'))
|
||||||
|
));
|
||||||
|
|
||||||
const mapStateToProps = (state, { accountId }) => ({
|
const mapStateToProps = (state, { accountId }) => ({
|
||||||
acct: state.getIn(['accounts', accountId, 'acct']),
|
acct: state.getIn(['accounts', accountId, 'acct']),
|
||||||
@ -37,7 +42,6 @@ const mapDispatchToProps = (dispatch, { accountId }) => ({
|
|||||||
onSubmit (languages) {
|
onSubmit (languages) {
|
||||||
dispatch(followAccount(accountId, { languages }));
|
dispatch(followAccount(accountId, { languages }));
|
||||||
},
|
},
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
class SubscribedLanguagesModal extends ImmutablePureComponent {
|
class SubscribedLanguagesModal extends ImmutablePureComponent {
|
||||||
|
|||||||
@ -32,6 +32,12 @@ export const selectTimelineByParams = createAppSelector(
|
|||||||
(key, timelines) => toTypedTimeline(timelines.get(key)),
|
(key, timelines) => toTypedTimeline(timelines.get(key)),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const selectTimelinesByAccount = createAppSelector(
|
||||||
|
[(state) => state.timelines, (_, accountId: string) => accountId],
|
||||||
|
(timelines, accountId) =>
|
||||||
|
timelines.filter((_, key) => key.startsWith(`account:${accountId}:`)),
|
||||||
|
);
|
||||||
|
|
||||||
export function toTypedTimeline(timeline?: ImmutableMap<string, unknown>) {
|
export function toTypedTimeline(timeline?: ImmutableMap<string, unknown>) {
|
||||||
if (!timeline) {
|
if (!timeline) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user