theme.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { createAction, NavigationActions } from '../../utils'
  2. import * as authService from '../../services/auth'
  3. import Theme from '../../containers/common/theme/config'
  4. import deviceStorage from '../../utils/storage'
  5. export default {
  6. namespace: 'theme',
  7. state: {
  8. appTheme: '',
  9. },
  10. reducers: {
  11. // updateState(state, { payload }) {
  12. // return { ...state, ...payload };
  13. // }
  14. updateState(state, { payload }) {
  15. return { ...state, ...payload }
  16. },
  17. },
  18. effects: {
  19. *getTheme(action, { call, put }) {
  20. try {
  21. let getColor
  22. if (action && action.payload && action.payload.getColor) {
  23. getColor = action.payload.getColor
  24. } else {
  25. getColor = yield call(deviceStorage.get, 'themeColor')
  26. if (getColor) {
  27. getColor = getColor.describeText
  28. } else {
  29. getColor = 'white'
  30. }
  31. }
  32. const res = Theme.switchTheme(getColor)
  33. // Theme.currentMap = res;
  34. // Theme.currentTheme = action.map;
  35. deviceStorage.set('themeColor', res)
  36. yield put(createAction('updateState')({ appTheme: res }))
  37. } catch (error) {}
  38. },
  39. },
  40. subscriptions: {
  41. setup({ dispatch }) {
  42. dispatch({ type: 'getTheme' })
  43. },
  44. },
  45. }