/
themeSaga.js
58 lines (46 loc) · 1.08 KB
/
themeSaga.js
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { all, takeLatest, call, fork, put } from 'redux-saga/effects';
import { getThemeFromStorage, setThemeToStorage } from '../../utils/theme';
import {
setThemeState, setTheme,
CHANGE_THEME, CHECK_THEME_STATE, SET_THEME
} from '../../redux/modules/app/theme';
function* checkThemeStateIterator() {
const theme = yield call(getThemeFromStorage);
if (theme) {
yield put(setThemeState(theme));
} else {
yield put(setThemeState(''));
}
}
function* checkThemeSaga() {
yield takeLatest(
CHECK_THEME_STATE,
checkThemeStateIterator
);
}
function* setThemeIterator({ payload }) {
yield call(setThemeToStorage, payload);
yield put(setThemeState(payload));
}
function* setThemeStateSaga() {
yield takeLatest(
SET_THEME,
setThemeIterator
);
}
function* changeThemeIterator({ payload }) {
yield put(setTheme(payload));
}
function* changeThemeSaga() {
yield takeLatest(
CHANGE_THEME,
changeThemeIterator
);
}
export default function* () {
yield all([
fork(checkThemeSaga),
fork(setThemeStateSaga),
fork(changeThemeSaga)
]);
}