2019-09-16 14:19:21 +02:00
|
|
|
import i18next from 'i18next'
|
|
|
|
|
2018-06-07 14:45:43 +02:00
|
|
|
import FitTrackeeApi from '../fitTrackeeApi/index'
|
2018-04-30 21:38:09 +02:00
|
|
|
import { history } from '../index'
|
2018-04-29 18:23:46 +02:00
|
|
|
|
|
|
|
export const setData = (target, data) => ({
|
|
|
|
type: 'SET_DATA',
|
|
|
|
data,
|
|
|
|
target,
|
|
|
|
})
|
|
|
|
|
2018-04-30 20:08:18 +02:00
|
|
|
export const setError = message => ({
|
2018-04-29 18:23:46 +02:00
|
|
|
type: 'SET_ERROR',
|
2018-04-30 20:08:18 +02:00
|
|
|
message,
|
2018-04-29 18:23:46 +02:00
|
|
|
})
|
|
|
|
|
2019-09-08 17:14:48 +02:00
|
|
|
export const setLanguage = language => ({
|
|
|
|
type: 'SET_LANGUAGE',
|
|
|
|
language,
|
|
|
|
})
|
|
|
|
|
2018-06-11 19:15:38 +02:00
|
|
|
export const setLoading = loading => ({
|
2018-05-29 20:08:34 +02:00
|
|
|
type: 'SET_LOADING',
|
2019-08-28 15:35:22 +02:00
|
|
|
loading,
|
2018-05-29 20:08:34 +02:00
|
|
|
})
|
|
|
|
|
2019-09-22 23:03:56 +02:00
|
|
|
export const updateSportsData = data => ({
|
|
|
|
type: 'UPDATE_SPORT_DATA',
|
|
|
|
data,
|
|
|
|
})
|
2020-05-01 12:12:48 +02:00
|
|
|
|
|
|
|
export const updateUsersData = data => ({
|
|
|
|
type: 'UPDATE_USER_DATA',
|
|
|
|
data,
|
|
|
|
})
|
|
|
|
|
2019-09-22 23:03:56 +02:00
|
|
|
export const getOrUpdateData = (
|
|
|
|
action,
|
|
|
|
target,
|
|
|
|
data,
|
|
|
|
canDispatch = true
|
|
|
|
) => dispatch => {
|
2020-01-31 11:03:03 +01:00
|
|
|
dispatch(setLoading(true))
|
2018-06-04 14:55:09 +02:00
|
|
|
if (data && data.id && isNaN(data.id)) {
|
2020-01-31 11:03:03 +01:00
|
|
|
dispatch(setLoading(false))
|
2019-09-16 18:55:58 +02:00
|
|
|
return dispatch(setError(`${target}|Incorrect id`))
|
2018-04-30 21:38:09 +02:00
|
|
|
}
|
2019-09-22 23:03:56 +02:00
|
|
|
dispatch(setError(''))
|
2018-06-12 13:12:18 +02:00
|
|
|
return FitTrackeeApi[action](target, data)
|
2019-08-28 15:35:22 +02:00
|
|
|
.then(ret => {
|
|
|
|
if (ret.status === 'success') {
|
2019-09-22 23:03:56 +02:00
|
|
|
if (canDispatch) {
|
|
|
|
dispatch(setData(target, ret.data))
|
|
|
|
} else if (action === 'updateData' && target === 'sports') {
|
|
|
|
dispatch(updateSportsData(ret.data.sports[0]))
|
2020-05-01 12:12:48 +02:00
|
|
|
} else if (action === 'updateData' && target === 'users') {
|
|
|
|
dispatch(updateUsersData(ret.data.users[0]))
|
2019-09-22 23:03:56 +02:00
|
|
|
}
|
2019-08-28 15:35:22 +02:00
|
|
|
} else {
|
2019-09-16 18:55:58 +02:00
|
|
|
dispatch(setError(`${target}|${ret.message || ret.status}`))
|
2019-08-28 15:35:22 +02:00
|
|
|
}
|
2020-01-31 11:03:03 +01:00
|
|
|
dispatch(setLoading(false))
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
dispatch(setLoading(false))
|
|
|
|
dispatch(setError(`${target}|${error}`))
|
2019-08-28 15:35:22 +02:00
|
|
|
})
|
2018-04-30 21:38:09 +02:00
|
|
|
}
|
|
|
|
|
2019-08-28 15:35:22 +02:00
|
|
|
export const addData = (target, data) => dispatch =>
|
|
|
|
FitTrackeeApi.addData(target, data)
|
|
|
|
.then(ret => {
|
|
|
|
if (ret.status === 'created') {
|
|
|
|
history.push(`/admin/${target}`)
|
|
|
|
} else {
|
2019-09-16 18:55:58 +02:00
|
|
|
dispatch(setError(`${target}|${ret.status}`))
|
2019-08-28 15:35:22 +02:00
|
|
|
}
|
|
|
|
})
|
2019-09-16 18:55:58 +02:00
|
|
|
.catch(error => dispatch(setError(`${target}|${error}`)))
|
2018-05-04 23:04:44 +02:00
|
|
|
|
|
|
|
export const deleteData = (target, id) => dispatch => {
|
|
|
|
if (isNaN(id)) {
|
2019-09-16 18:55:58 +02:00
|
|
|
return dispatch(setError(target, `${target}|Incorrect id`))
|
2018-04-30 21:38:09 +02:00
|
|
|
}
|
2019-08-28 15:35:22 +02:00
|
|
|
return FitTrackeeApi.deleteData(target, id)
|
|
|
|
.then(ret => {
|
|
|
|
if (ret.status === 204) {
|
|
|
|
history.push(`/admin/${target}`)
|
|
|
|
} else {
|
2019-09-16 18:55:58 +02:00
|
|
|
dispatch(setError(`${target}|${ret.message || ret.status}`))
|
2019-08-28 15:35:22 +02:00
|
|
|
}
|
|
|
|
})
|
2019-09-16 18:55:58 +02:00
|
|
|
.catch(error => dispatch(setError(`${target}|${error}`)))
|
2018-04-30 21:38:09 +02:00
|
|
|
}
|
2019-09-16 14:19:21 +02:00
|
|
|
|
|
|
|
export const updateLanguage = language => dispatch => {
|
|
|
|
i18next.changeLanguage(language).then(dispatch(setLanguage(language)))
|
|
|
|
}
|