123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- /*
- * <<
- * Davinci
- * ==
- * Copyright (C) 2016 - 2017 EDP
- * ==
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * >>
- */
- import produce, { setAutoFreeze } from 'immer'
- // @FIXME temporary not Object.freeze from immer produce to avoid current bugs
- setAutoFreeze(false)
- import {
- LOGIN,
- LOGGED,
- LOGIN_ERROR,
- LOGOUT,
- SHOW_NAVIGATOR,
- HIDE_NAVIGATOR,
- ACTIVE_SUCCESS,
- UPLOAD_AVATAR_SUCCESS,
- LOAD_DOWNLOAD_LIST,
- LOAD_DOWNLOAD_LIST_SUCCESS,
- LOAD_DOWNLOAD_LIST_FAILURE,
- DOWNLOAD_FILE_SUCCESS,
- UPDATE_PROFILE_SUCCESS,
- GET_EXTERNAL_AUTH_PROVIDERS_SUCESS,
- DownloadStatus,
- GET_SERVER_CONFIGURATIONS_SUCCESS
- } from './constants'
- const initialState = {
- externalAuthProviders: null,
- logged: null,
- loginUser: null,
- loginLoading: false,
- navigator: true,
- downloadListLoading: false,
- downloadList: null,
- downloadListInfo: null,
- version: '',
- oauth2Enabled: false
- }
- const appReducer = (state = initialState, action) =>
- produce(state, (draft) => {
- switch (action.type) {
- case GET_EXTERNAL_AUTH_PROVIDERS_SUCESS:
- draft.externalAuthProviders = action.payload.externalAuthProviders
- break
- case LOGIN:
- draft.loginLoading = true
- break
- case LOGGED:
- draft.loginLoading = false
- draft.logged = true
- draft.loginUser = action.payload.user
- break
- case LOGIN_ERROR:
- draft.loginLoading = false
- break
- case ACTIVE_SUCCESS:
- draft.logged = true
- draft.loginUser = action.payload.user
- break
- case GET_SERVER_CONFIGURATIONS_SUCCESS:
- draft.version = action.payload.configurations.version
- draft.oauth2Enabled =
- action.payload.configurations.security.oauth2.enable
- break
- case LOGOUT:
- draft.logged = false
- draft.loginUser = null
- break
- case UPLOAD_AVATAR_SUCCESS:
- draft.loginUser.avatar = action.payload.path
- break
- case UPDATE_PROFILE_SUCCESS:
- const { id, name, department, description } = action.payload.user
- draft.loginUser = {
- ...draft.loginUser,
- id,
- name,
- department,
- description
- }
- break
- case SHOW_NAVIGATOR:
- draft.navigator = true
- break
- case HIDE_NAVIGATOR:
- draft.navigator = false
- break
- case LOAD_DOWNLOAD_LIST:
- draft.downloadListLoading = true
- break
- case LOAD_DOWNLOAD_LIST_SUCCESS:
- draft.downloadListLoading = false
- draft.downloadList = action.payload.list
- draft.downloadListInfo = action.payload.list.reduce((info, item) => {
- info[item.id] = {
- loading: false
- }
- return info
- }, {})
- break
- case LOAD_DOWNLOAD_LIST_FAILURE:
- draft.downloadListLoading = false
- break
- case DOWNLOAD_FILE_SUCCESS:
- draft.downloadList.find(({ id }) => action.payload.id === id).status =
- DownloadStatus.Downloaded
- break
- }
- })
- export { initialState as appInitialState }
- export default appReducer
|