~cytrogen/masto-fe

ref: f8dc013b0d81d5d463c086e291ce99ab1d796a9d masto-fe/app/javascript/mastodon/features/compose/containers/language_dropdown_container.js -rw-r--r-- 1.1 KiB
f8dc013b — Cytrogen [feature] Add language selector to local settings 14 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { Map as ImmutableMap } from "immutable";
import { connect } from "react-redux";
import { createSelector } from "reselect";

import { changeComposeLanguage } from "mastodon/actions/compose";
import { useLanguage } from "mastodon/actions/languages";

import LanguageDropdown from "../components/language_dropdown";

const getFrequentlyUsedLanguages = createSelector([
  state => state.getIn(["settings", "frequentlyUsedLanguages"], ImmutableMap()),
], languageCounters => (
  languageCounters.keySeq()
    .sort((a, b) => languageCounters.get(a) - languageCounters.get(b))
    .reverse()
    .toArray()
));

const mapStateToProps = state => ({
  frequentlyUsedLanguages: getFrequentlyUsedLanguages(state),
  value: state.getIn(["compose", "language"]),
});

const mapDispatchToProps = dispatch => ({

  onChange (value) {
    dispatch(changeComposeLanguage(value));
  },

  onClose (value) {
    // eslint-disable-next-line react-hooks/rules-of-hooks
    dispatch(useLanguage(value));
  },

});

export default connect(mapStateToProps, mapDispatchToProps)(LanguageDropdown);