@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ import {
|
||||
updateUserService,
|
||||
updateCurrentUserAvatarService,
|
||||
updateCurrentUserEmailService,
|
||||
updateCurrentUserLanguageService,
|
||||
updateCurrentUserPasswordService,
|
||||
updateCurrentUserService,
|
||||
updateCurrentUserUsernameService,
|
||||
@@ -49,6 +50,9 @@ export default function* userWatchers() {
|
||||
takeEvery(EntryActionTypes.USER_UPDATE_HANDLE, ({ payload: { user } }) =>
|
||||
handleUserUpdateService(user),
|
||||
),
|
||||
takeEvery(EntryActionTypes.CURRENT_USER_LANGUAGE_UPDATE, ({ payload: { language } }) =>
|
||||
updateCurrentUserLanguageService(language),
|
||||
),
|
||||
takeEvery(EntryActionTypes.USER_EMAIL_UPDATE, ({ payload: { id, data } }) =>
|
||||
updateUserEmailService(id, data),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user