mirror of
https://github.com/mastodon/mastodon.git
synced 2026-08-12 18:36:04 -05:00
Fix account language selector (#39801)
This commit is contained in:
@@ -15,16 +15,21 @@ import { IconButton } from 'mastodon/components/icon_button';
|
||||
import { injectIntl } from '@/mastodon/components/intl';
|
||||
import Option from 'mastodon/features/report/components/option';
|
||||
import { languages as preloadedLanguages } from 'mastodon/initial_state';
|
||||
import { selectTimelinesByAccount } from '@/mastodon/selectors/timelines';
|
||||
|
||||
const messages = defineMessages({
|
||||
close: { id: 'lightbox.close', defaultMessage: 'Close' },
|
||||
});
|
||||
|
||||
const getAccountLanguages = createSelector([
|
||||
(state, accountId) => state.getIn(['timelines', `account:${accountId}`, 'items'], ImmutableList()),
|
||||
state => state.get('statuses'),
|
||||
], (statusIds, statuses) =>
|
||||
ImmutableSet(statusIds.map(statusId => statuses.get(statusId)).filter(status => !status.get('reblog')).map(status => status.get('language'))));
|
||||
const getAccountLanguages = createSelector(
|
||||
[selectTimelinesByAccount, (state) => state.get('statuses')],
|
||||
(timelines, statuses) => ImmutableSet(
|
||||
timelines
|
||||
.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 }) => ({
|
||||
acct: state.getIn(['accounts', accountId, 'acct']),
|
||||
@@ -37,7 +42,6 @@ const mapDispatchToProps = (dispatch, { accountId }) => ({
|
||||
onSubmit (languages) {
|
||||
dispatch(followAccount(accountId, { languages }));
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
class SubscribedLanguagesModal extends ImmutablePureComponent {
|
||||
|
||||
@@ -32,6 +32,12 @@ export const selectTimelineByParams = createAppSelector(
|
||||
(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>) {
|
||||
if (!timeline) {
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user