Merge branch 'master' into v0.2

This commit is contained in:
Sam 2019-02-07 09:53:12 +01:00
commit 72e1529b81
6 changed files with 39 additions and 35 deletions

View File

@ -1,7 +1,7 @@
language: node_js language: node_js
node_js: '11' node_js: '11'
dist: xenial dist: trusty
sudo: required sudo: required
addons: addons:

View File

@ -1,22 +1,24 @@
# Change log # Change log
## Version 0.1.1 - Fix and improvements (2019/01/xx) ## Version 0.1.1 - Fix and improvements (2019/02/07)
### Issues Closed ### Issues Closed
#### Bugs Fixed
* [#31](https://github.com/SamR1/FitTrackee/issues/31) - Use moving duration for stats
* [#29](https://github.com/SamR1/FitTrackee/issues/29) - Pause duration calculation with segments
* [#26](https://github.com/SamR1/FitTrackee/issues/26) - Total is incorrect in tooltip when duration is displayed
* [#24](https://github.com/SamR1/FitTrackee/issues/24) - Some distances are not displayed correctly on current month statistics
#### New Features #### New Features
* [#25](https://github.com/SamR1/FitTrackee/issues/25) - Display records on calendar * [#25](https://github.com/SamR1/FitTrackee/issues/25) - Display records on calendar
* [#22](https://github.com/SamR1/FitTrackee/issues/22) - Add a total on current month statistics * [#22](https://github.com/SamR1/FitTrackee/issues/22) - Add a total on current month statistics
In this release 6 issues were closed. #### Bugs Fixed
* [#31](https://github.com/SamR1/FitTrackee/issues/31) - Use moving duration for stats
* [#29](https://github.com/SamR1/FitTrackee/issues/29) - Pause duration calculation with segments
* [#28](https://github.com/SamR1/FitTrackee/issues/28) - Error on uploading gpx file
* [#26](https://github.com/SamR1/FitTrackee/issues/26) - Total is incorrect in tooltip when duration is displayed
* [#24](https://github.com/SamR1/FitTrackee/issues/24) - Some distances are not displayed correctly on current month statistics
In this release 7 issues were closed.
## Version 0.1 - Minimal version (2018-07-04) ## Version 0.1 - Minimal version (2018-07-04)

View File

@ -27,7 +27,7 @@ export const getOrUpdateData = (action, target, data) => dispatch => {
if (ret.status === 'success') { if (ret.status === 'success') {
dispatch(setData(target, ret.data)) dispatch(setData(target, ret.data))
} else { } else {
dispatch(setError(`${target}: ${ret.message}`)) dispatch(setError(`${target}: ${ret.message || ret.status}`))
} }
}) })
.catch(error => dispatch(setError(`${target}: ${error}`))) .catch(error => dispatch(setError(`${target}: ${error}`)))
@ -54,7 +54,7 @@ export const deleteData = (target, id) => dispatch => {
if (ret.status === 204) { if (ret.status === 204) {
history.push(`/admin/${target}`) history.push(`/admin/${target}`)
} else { } else {
dispatch(setError(`${target}: ${ret.message}`)) dispatch(setError(`${target}: ${ret.message || ret.status}`))
} }
}) })
.catch(error => dispatch(setError(`${target}: ${error}`))) .catch(error => dispatch(setError(`${target}: ${error}`)))

View File

@ -1,10 +1,9 @@
import { apiUrl, createRequest } from '../utils' import { createApiRequest } from '../utils'
export default class FitTrackeeApi { export default class FitTrackeeApi {
static getData(target, static getData(target, data = {}) {
data = {}) { let url = target
let url = `${apiUrl}${target}`
if (data.id) { if (data.id) {
url = `${url}/${data.id}` url = `${url}/${data.id}`
} else if (Object.keys(data).length > 0) { } else if (Object.keys(data).length > 0) {
@ -16,54 +15,54 @@ export default class FitTrackeeApi {
method: 'GET', method: 'GET',
type: 'application/json', type: 'application/json',
} }
return createRequest(params) return createApiRequest(params)
} }
static addData(target, data) { static addData(target, data) {
const params = { const params = {
url: `${apiUrl}${target}`, url: target,
method: 'POST', method: 'POST',
body: data, body: data,
type: 'application/json', type: 'application/json',
} }
return createRequest(params) return createApiRequest(params)
} }
static addDataWithFile(target, data) { static addDataWithFile(target, data) {
const params = { const params = {
url: `${apiUrl}${target}`, url: target,
method: 'POST', method: 'POST',
body: data, body: data,
} }
return createRequest(params) return createApiRequest(params)
} }
static postData(target, data) { static postData(target, data) {
const params = { const params = {
url: `${apiUrl}${target}${data.id ? `/${data.id}` : '' }`, url: `${target}${data.id ? `/${data.id}` : '' }`,
method: 'POST', method: 'POST',
body: data, body: data,
type: 'application/json', type: 'application/json',
} }
return createRequest(params) return createApiRequest(params)
} }
static updateData(target, data) { static updateData(target, data) {
const params = { const params = {
url: `${apiUrl}${target}/${data.id}`, url: `${target}/${data.id}`,
method: 'PATCH', method: 'PATCH',
body: data, body: data,
type: 'application/json', type: 'application/json',
} }
return createRequest(params) return createApiRequest(params)
} }
static deleteData(target, id) { static deleteData(target, id) {
const params = { const params = {
url: `${apiUrl}${target}/${id}`, url: `${target}/${id}`,
method: 'DELETE', method: 'DELETE',
type: 'application/json', type: 'application/json',
} }
return createRequest(params) return createApiRequest(params)
} }
} }

View File

@ -1,23 +1,23 @@
import { apiUrl, createRequest } from '../utils' import { createApiRequest } from '../utils'
export default class FitTrackeeApi { export default class FitTrackeeApi {
static loginOrRegister(target, data) { static loginOrRegister(target, data) {
const params = { const params = {
url: `${apiUrl}auth/${target}`, url: `auth/${target}`,
method: 'POST', method: 'POST',
noAuthorization: true, noAuthorization: true,
body: data, body: data,
type: 'application/json', type: 'application/json',
} }
return createRequest(params) return createApiRequest(params)
} }
static deletePicture() { static deletePicture() {
const params = { const params = {
url: `${apiUrl}auth/picture`, url: 'auth/picture',
method: 'DELETE', method: 'DELETE',
} }
return createRequest(params) return createApiRequest(params)
} }
} }

View File

@ -20,7 +20,7 @@ export const generateIds = arr => {
} }
export const createRequest = params => { export const createApiRequest = params => {
const headers = {} const headers = {}
if (!params.noAuthorization) { if (!params.noAuthorization) {
headers.Authorization = `Bearer ${ headers.Authorization = `Bearer ${
@ -38,12 +38,15 @@ export const createRequest = params => {
} else if (params.body) { } else if (params.body) {
requestParams.body = params.body requestParams.body = params.body
} }
const request = new Request(params.url, requestParams) const request = new Request(`${apiUrl}${params.url}`, requestParams)
return fetch(request) return fetch(request)
.then(response => params.method === 'DELETE' .then(response => params.method === 'DELETE'
? response ? response
: response.json()) : response.json())
.catch(error => error) .catch(error => {
console.error(error)
return new Error('An error occurred. Please contact the administrator.')
})
} }