/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre Departamento de Informatica - Universidade Federal do Parana This file is part of Plataforma Integrada MEC. Plataforma Integrada MEC is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Plataforma Integrada MEC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ import React from 'react' export const Store = React.createContext() const initialState = { searchOpen: false, userIsLoggedIn : true, userAgreedToPublicationTerms: false, userAgreedToPublicationPermissions: false, modalColaborarPlataformaOpen : false, search: { query: '*', class: 'LearningObject' }, windowSize: { width: 0, height: 0 }, currentUser: { id : '', username : 'Horstmann', email : '', accessToken : '', clientToken : '', education : '', isCollaborativeTeacher : false, userAvatar : '', userCover : '' } } function reducer(state, action) { switch (action.type){ case 'SAVE_SEARCH': return { ...state, search: action.newSearch } case 'HANDLE_SEARCH_BAR': return { ...state, searchOpen: action.opened } case 'WINDOW_SIZE': return { ...state, windowSize: action.innerWindow } case 'USER_LOGGED_IN': return { ...state, userIsLoggedIn:action.userLoggedIn, currentUser:action.login } case 'USER_SIGNED_UP': return { ...state, userIsLoggedIn:action.userLoggedIn, currentUser:action.login } case 'USER_LOGGED_OUT': return { ...state, userIsLoggedIn:action.userLoggedOut, currentUser:action.login } case 'USER_AGREED_TO_PUBLICATION_TERMS': return { ...state, userAgreedToPublicationTerms: action.userAgreement } case 'USER_AGREED_TO_PUBLICATION_PERMISSIONS': return { ...state, userAgreedToPublicationPermissions : action.userAgreement } default: return state } } export function StoreProvider(props) { const [state, dispatch] = React.useReducer(reducer, initialState); const value = { state, dispatch }; return ( <Store.Provider value={value}> {props.children} </Store.Provider> ) }