diff --git a/client/src/actions/cities.ts b/client/src/actions/cities.ts index 594a43c43355f1c63d9248a2f98d28b4c243c820..efdb8c1dec986b31ce5aa41e006e181c26eb08c0 100644 --- a/client/src/actions/cities.ts +++ b/client/src/actions/cities.ts @@ -1,7 +1,12 @@ +/* +This file handles actions for the cities redux state +*/ + import axios from 'axios' import { AppDispatch } from './../store' import Types from './types' +// Action creator to get all cities from api and send appropriate actions to reducer export const getCities = () => async (dispatch: AppDispatch) => { await axios .get('/api/misc/cities') diff --git a/client/src/actions/competitionLogin.ts b/client/src/actions/competitionLogin.ts index ff177a2bc82f8d37174f4f2df4bd050ebb3822de..093abdb8dfb638752f9968815fd8bb2bc2159930 100644 --- a/client/src/actions/competitionLogin.ts +++ b/client/src/actions/competitionLogin.ts @@ -1,9 +1,14 @@ +/* +This file handles actions for the competitionLogin redux state +*/ + import axios from 'axios' import { History } from 'history' import { AppDispatch } from '../store' import { AccountLoginModel } from './../interfaces/FormModels' import Types from './types' +// Action creator to attempt to login with competition code export const loginCompetition = (code: string, history: History) => async (dispatch: AppDispatch) => { dispatch({ type: Types.LOADING_COMPETITION_LOGIN }) await axios diff --git a/client/src/actions/competitions.ts b/client/src/actions/competitions.ts index 1a9d789c09d6646657b622de1d4c43d0c9be1dbd..87b2b26ba844c0be6eafe5ee4f02920f9067d9e4 100644 --- a/client/src/actions/competitions.ts +++ b/client/src/actions/competitions.ts @@ -1,8 +1,13 @@ +/* +This file handles actions for the competitions redux state +*/ + import axios from 'axios' import { CompetitionFilterParams } from '../interfaces/FilterParams' import { AppDispatch, RootState } from './../store' import Types from './types' +// Get all competitions using filterParams from current state export const getCompetitions = () => async (dispatch: AppDispatch, getState: () => RootState) => { const currentParams: CompetitionFilterParams = getState().competitions.filterParams // Send params in snake-case for api @@ -34,6 +39,8 @@ export const getCompetitions = () => async (dispatch: AppDispatch, getState: () console.log(err) }) } + +// Dispatch action to set filter params export const setFilterParams = (params: CompetitionFilterParams) => (dispatch: AppDispatch) => { dispatch({ type: Types.SET_COMPETITIONS_FILTER_PARAMS, payload: params }) } diff --git a/client/src/actions/editor.ts b/client/src/actions/editor.ts index 45fbce986abae8df3da0c987be6faa4212cac2bf..db688dcb59f3732c6bda801b0aada1b3063a1238 100644 --- a/client/src/actions/editor.ts +++ b/client/src/actions/editor.ts @@ -1,7 +1,12 @@ +/* +This file handles actions for the editor redux state +*/ + import axios from 'axios' import { AppDispatch, RootState } from './../store' import Types from './types' +// Save competition in editor state from input id export const getEditorCompetition = (id: string) => async (dispatch: AppDispatch, getState: () => RootState) => { await axios .get(`/api/competitions/${id}`) @@ -19,6 +24,7 @@ export const getEditorCompetition = (id: string) => async (dispatch: AppDispatch }) } +// Set currentSlideId in editor state export const setEditorSlideId = (id: number) => (dispatch: AppDispatch) => { dispatch({ type: Types.SET_EDITOR_SLIDE_ID, diff --git a/client/src/actions/presentation.ts b/client/src/actions/presentation.ts index 97c611dfb27015f37fa33693ee90c6f8a1159ef3..9e7881d86239b1d1225a983a86ac73034d609a35 100644 --- a/client/src/actions/presentation.ts +++ b/client/src/actions/presentation.ts @@ -1,9 +1,14 @@ +/* +This file handles actions for the presentation redux state +*/ + import axios from 'axios' import { Slide } from '../interfaces/ApiModels' import { Timer } from '../interfaces/Timer' import store, { AppDispatch } from './../store' import Types from './types' +// Save competition in presentation state from input id export const getPresentationCompetition = (id: string) => async (dispatch: AppDispatch) => { await axios .get(`/api/competitions/${id}`) @@ -18,6 +23,7 @@ export const getPresentationCompetition = (id: string) => async (dispatch: AppDi }) } +// Get all teams from current presentation competition export const getPresentationTeams = (id: string) => async (dispatch: AppDispatch) => { await axios .get(`/api/competitions/${id}/teams`) diff --git a/client/src/actions/roles.ts b/client/src/actions/roles.ts index 19a148c7a01d9dc4ccd6552f06dbf954509f16dc..3f27d3a8ddc3f4c5f6963470a6eb5d4fe18cb014 100644 --- a/client/src/actions/roles.ts +++ b/client/src/actions/roles.ts @@ -1,7 +1,12 @@ +/* +This file handles actions for the roles redux state +*/ + import axios from 'axios' import { AppDispatch } from './../store' import Types from './types' +// Get all roles and dispatch action to save them to roles state export const getRoles = () => async (dispatch: AppDispatch) => { await axios .get('/api/misc/roles') diff --git a/client/src/actions/searchUser.ts b/client/src/actions/searchUser.ts index a3ea55c7ce7ef5afc1468de7cc1d350303b3674a..c47ee9f3d0018763d7b2c134f7edbbf1094c2492 100644 --- a/client/src/actions/searchUser.ts +++ b/client/src/actions/searchUser.ts @@ -1,8 +1,13 @@ +/* +This file handles actions for the searchUser redux state +*/ + import axios from 'axios' import { UserFilterParams } from '../interfaces/FilterParams' import { AppDispatch, RootState } from './../store' import Types from './types' +// Get all users using current filterParams in searchUser state export const getSearchUsers = () => async (dispatch: AppDispatch, getState: () => RootState) => { const currentParams: UserFilterParams = getState().searchUsers.filterParams // Send params in snake-case for api @@ -34,6 +39,7 @@ export const getSearchUsers = () => async (dispatch: AppDispatch, getState: () = console.log(err) }) } + export const setFilterParams = (params: UserFilterParams) => (dispatch: AppDispatch) => { dispatch({ type: Types.SET_SEARCH_USERS_FILTER_PARAMS, payload: params }) } diff --git a/client/src/actions/statistics.ts b/client/src/actions/statistics.ts index a32dce3553ba56ed47410b1499aeca57f7490f75..acde4316ef929b05ed38543aa9c5095ede63fa36 100644 --- a/client/src/actions/statistics.ts +++ b/client/src/actions/statistics.ts @@ -1,7 +1,12 @@ +/* +This file handles actions for the statistics redux state +*/ + import axios from 'axios' import { AppDispatch } from './../store' import Types from './types' +// Get all statistics and dispatch actions to save them to statistics state export const getStatistics = () => async (dispatch: AppDispatch) => { await axios .get('/api/misc/statistics') diff --git a/client/src/actions/types.ts b/client/src/actions/types.ts index 512572bcf6f73dbbeb4c76fcdc1207b00333149a..2e529a8839fd374504a8d2a0e9d79939cdc3ec09 100644 --- a/client/src/actions/types.ts +++ b/client/src/actions/types.ts @@ -1,3 +1,7 @@ +/* +This file includes all redux action types +*/ + export default { LOADING_UI: 'LOADING_UI', LOADING_USER: 'LOADING_USER', diff --git a/client/src/actions/typesAction.ts b/client/src/actions/typesAction.ts index 32a212b0c5fc270d62dd6528efbea51824acdb8e..b6e9c98ad4f5b0a2593f1fe4d4cde9590f4d6370 100644 --- a/client/src/actions/typesAction.ts +++ b/client/src/actions/typesAction.ts @@ -1,7 +1,12 @@ +/* +This file handles actions for the types redux state +*/ + import axios from 'axios' import { AppDispatch } from './../store' import Types from './types' +// Get all types and save them to types state export const getTypes = () => async (dispatch: AppDispatch) => { await axios .get('/api/misc/types') diff --git a/client/src/actions/user.ts b/client/src/actions/user.ts index e2ad88acf776490ee49189236f2f921297c33d5c..3448fa995dd6f10ed8ec61049ad041bcf164e1b7 100644 --- a/client/src/actions/user.ts +++ b/client/src/actions/user.ts @@ -1,9 +1,14 @@ +/* +This file handles actions for the user redux state +*/ + import axios from 'axios' import { History } from 'history' import { AppDispatch } from '../store' import { AccountLoginModel } from './../interfaces/FormModels' import Types from './types' +// Attempt to log in user, dispatch correct actions and save jwt token to localStorage and axios auth header export const loginUser = (userData: AccountLoginModel, history: History) => async (dispatch: AppDispatch) => { dispatch({ type: Types.LOADING_UI }) await axios @@ -25,6 +30,7 @@ export const loginUser = (userData: AccountLoginModel, history: History) => asyn }) } +// Get data for user and save to user state export const getUserData = () => async (dispatch: AppDispatch) => { dispatch({ type: Types.LOADING_USER }) await axios @@ -40,6 +46,7 @@ export const getUserData = () => async (dispatch: AppDispatch) => { }) } +// Log out user and remove jwt token from local storage and axios export const logoutUser = () => async (dispatch: AppDispatch) => { localStorage.removeItem('token') await axios.post('/api/auth/logout').then(() => {