|
1 | | -import React, { Component } from 'react'; |
| 1 | +import React from 'react'; |
| 2 | +import { useSelector } from 'react-redux'; |
2 | 3 |
|
3 | 4 | import { TheGame } from './the-game'; |
4 | | -import { Language, LanguageSelector } from './components'; |
| 5 | +import { SelectLanguage } from './containers'; |
5 | 6 | import { isEmpty } from 'lodash'; |
6 | | -import { i18nService, SupportedLocale } from '../i18n/I18nService'; |
| 7 | +import { i18nService } from '../i18n/I18nService'; |
7 | 8 | import './App.scss'; |
8 | 9 |
|
9 | | -type AppProps = {}; |
| 10 | +export const App = () => { |
| 11 | + i18nService.init(); |
10 | 12 |
|
11 | | -type AppState = { |
12 | | - selectedLanguage: string; |
13 | | - availableLanguages: Language[]; |
14 | | -}; |
15 | | - |
16 | | -export class App extends Component<AppProps, AppState> { |
17 | | - constructor(props: AppProps) { |
18 | | - super(props); |
19 | | - |
20 | | - i18nService.init(); |
21 | | - |
22 | | - this.state = { |
23 | | - selectedLanguage: '', |
24 | | - availableLanguages: [{ code: 'en', name: 'English' }, { code: 'fr', name: 'Français' }], |
25 | | - }; |
26 | | - } |
| 13 | + const selectedLanguage = useSelector(state => state.language.selectedLanguage); |
27 | 14 |
|
28 | | - setActiveLanguage(language: SupportedLocale) { |
29 | | - this.setState({ ...this.state, selectedLanguage: language }); |
30 | | - return i18nService.setLanguage(language); |
| 15 | + let component = <SelectLanguage />; |
| 16 | + if (!isEmpty(selectedLanguage)) { |
| 17 | + component = <TheGame />; |
31 | 18 | } |
32 | 19 |
|
33 | | - render() { |
34 | | - let component = ( |
35 | | - <LanguageSelector |
36 | | - languages={this.state.availableLanguages} |
37 | | - setActiveLanguage={l => this.setActiveLanguage(l)} |
38 | | - /> |
39 | | - ); |
40 | | - |
41 | | - if (!isEmpty(this.state.selectedLanguage)) { |
42 | | - component = <TheGame />; |
43 | | - } |
44 | | - |
45 | | - return component; |
46 | | - } |
47 | | -} |
| 20 | + return component; |
| 21 | +}; |
0 commit comments