Skip to content
Snippets Groups Projects
Store.js 2.79 KiB
Newer Older
/*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,
      education : '',
      isCollaborativeTeacher : false,
      userAvatar : ''
  }
}

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,
    }
    case 'USER_SIGNED_UP':
      return {
          ...state,
          userIsLoggedIn:action.userLoggedIn,
    }
    case 'USER_LOGGED_OUT':
        return {
            ...state,
            userIsLoggedIn:action.userLoggedOut,
        }
    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>
  )