Skip to content
Snippets Groups Projects
Select Git revision
  • Develop
  • master default protected
  • Develop_copy_to_implement_acessibility
  • Develop_copy_to_implement_acessibility_in_admin
  • vinicius_accessibility_from_copy
  • luis_accesibility_before_develop
  • vinicius_accessiblity
  • Fixing_bugs
  • Otimizando_Vinicius
  • Password_recovery_fix
  • fix_admin_bugs_luis
  • luis_gamefication
  • gamificacaoLucas
  • GameficationAdmin
  • fixHomeScreen
  • Fix_perfil
  • fix_remaining_bugs
  • homologa
  • centraliza-axios
  • Gamification
  • v1.2.0
  • v1.1.1
  • v1.1.0
  • V1.0.1
  • V1.0.0
  • V1.0.0-RC
26 results

Store.js

Blame
  • Store.js 4.07 KiB
    /*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 : false,
      userAgreedToPublicationTerms: false,
      userAgreedToPublicationPermissions: false,
      modalColaborarPlataformaOpen : false,
      search: {
        query: '*',
        class: 'LearningObject'
      },
      windowSize: {
        width: 0,
        height: 0
    },
      currentUser: {
          askTeacherQuestion : false,
          id : '',
          username : '',
          email : '',
          accessToken : '',
          clientToken : '',
          userAvatar : '',
          userCover : '',
          uid : '',
          followCount : 0,
          collectionsCount : 0,
          submitter_request : 'default',
          roles : []
      }
    }
    
    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':
            sessionStorage.clear()
            return {
                ...state,
                userIsLoggedIn:action.userLoggedOut,
                currentUser:action.login,
                userAgreedToPublicationTerms: false,
                userAgreedToPublicationPermissions: false
            }
        case 'USER_AGREED_TO_PUBLICATION_TERMS':
            return {
                ...state,
                userAgreedToPublicationTerms: action.userAgreement
            }
        case 'USER_AGREED_TO_PUBLICATION_PERMISSIONS':
            return {
                ...state,
                userAgreedToPublicationPermissions : action.userAgreement
            }
        case 'USER_ACCESSED_USER_PAGE':
            return {
                ...state,
                currentUser : action.set
            }
        case 'USER_CHANGED_COVER':
            return {
                ...state,
                currentUser : action.currUser
            }
        case 'USER_DELETED_ACCOUNT':
            localStorage.clear()
            return {
                ...state,
                userIsLoggedIn:false,
                currentUser: {
                     askTeacherQuestion : true,
                     id : '',
                     username : '',
                     email : '',
                     accessToken : '',
                     clientToken : '',
                     userAvatar : '',
                     userCover : '',
                     uid : '',
                     followCount : 0,
                     collectionsCount : 0,
                     submitter_request : 'default',
                     roles : []
                 },
            }
        case 'TOGGLE_MODAL_COLABORAR_PLATAFORMA':
            return {
                ...state,
                modalColaborarPlataformaOpen : action.modalColaborarPlataformaOpen
            }
        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>
      )
    }