feat: Add language selector

Closes #212
This commit is contained in:
Maksim Eltyshev
2022-07-26 12:26:42 +02:00
parent 7c1b885d2a
commit a148a3aae5
31 changed files with 277 additions and 40 deletions

View File

@@ -4,7 +4,6 @@ import { fetchCoreRequest } from '../requests';
import { initializeCore } from '../../../actions';
import i18n from '../../../i18n';
// eslint-disable-next-line import/prefer-default-export
export function* initializeCoreService() {
const {
user,
@@ -25,6 +24,7 @@ export function* initializeCoreService() {
notifications,
} = yield call(fetchCoreRequest); // TODO: handle error
yield call(i18n.changeLanguage, user.language);
yield call(i18n.loadCoreLocale);
yield put(
@@ -48,3 +48,14 @@ export function* initializeCoreService() {
),
);
}
export function* changeCoreLanguageService(language) {
if (language === null) {
yield call(i18n.detectLanguage);
yield call(i18n.loadCoreLocale);
yield call(i18n.changeLanguage, i18n.resolvedLanguage);
} else {
yield call(i18n.loadCoreLocale, language);
yield call(i18n.changeLanguage, language);
}
}

View File

@@ -1,6 +1,7 @@
import { call, put, select } from 'redux-saga/effects';
import { logoutService } from './login';
import { changeCoreLanguageService } from './core';
import request from '../request';
import { currentUserIdSelector, currentUserSelector, pathSelector } from '../../../selectors';
import {
@@ -81,6 +82,21 @@ export function* handleUserUpdateService(user) {
yield put(handleUserUpdate(user, users, isCurrent));
}
// TODO: add loading state
export function* updateUserLanguageService(id, language) {
yield call(changeCoreLanguageService, language);
yield call(updateUserService, id, {
language,
});
}
export function* updateCurrentUserLanguageService(language) {
const id = yield select(currentUserIdSelector);
yield call(updateUserLanguageService, id, language);
}
export function* updateUserEmailService(id, data) {
yield put(updateUserEmail(id, data));