FitTrackee/fittrackee_client/src/utils/index.js

84 lines
2.3 KiB
JavaScript
Raw Normal View History

2019-01-04 10:07:24 +01:00
import { format, parse } from 'date-fns'
import { DateTime } from 'luxon'
const suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']
export const getFileSize = (fileSize, asText = true) => {
const i = Math.floor(Math.log(fileSize) / Math.log(1024))
if (!fileSize) {
return asText ? '0 bytes' : { size: 0, suffix: 'bytes' }
}
const size = (fileSize / Math.pow(1024, i)).toFixed(1)
const suffix = suffixes[i]
return asText ? `${size}${suffix}` : { size, suffix }
}
export const getFileSizeInMB = fileSize => {
const value = fileSize / 1048576
return (!fileSize && 0) || +value.toFixed(2)
}
2020-01-31 14:23:09 +01:00
export const version = '0.2.5-beta' // version stored in 'utils' for now
2019-01-04 10:07:24 +01:00
export const apiUrl = `${process.env.REACT_APP_API_URL}/api/`
2019-08-28 15:35:22 +02:00
/* prettier-ignore */
2019-01-04 10:07:24 +01:00
export const thunderforestApiKey = `${
process.env.REACT_APP_THUNDERFOREST_API_KEY
2019-08-28 15:35:22 +02:00
}`
2019-01-04 10:07:24 +01:00
export const isLoggedIn = () => !!window.localStorage.authToken
export const generateIds = arr => {
let i = 0
return arr.map(val => {
const obj = { id: i, value: val }
i++
return obj
})
}
2019-02-07 09:53:12 +01:00
export const createApiRequest = params => {
2019-01-04 10:07:24 +01:00
const headers = {}
if (!params.noAuthorization) {
2019-08-28 15:35:22 +02:00
headers.Authorization = `Bearer ${window.localStorage.getItem('authToken')}`
2019-01-04 10:07:24 +01:00
}
if (params.type) {
headers['Content-Type'] = params.type
}
const requestParams = {
method: params.method,
headers: headers,
}
if (params.type === 'application/json' && params.body) {
requestParams.body = JSON.stringify(params.body)
} else if (params.body) {
requestParams.body = params.body
}
2019-02-07 09:53:12 +01:00
const request = new Request(`${apiUrl}${params.url}`, requestParams)
2019-01-04 10:07:24 +01:00
return fetch(request)
.then(response =>
params.method === 'DELETE' || response.status === 413
? response
: response.json()
)
2019-02-07 09:53:12 +01:00
.catch(error => {
console.error(error)
return new Error('An error occurred. Please contact the administrator.')
})
2019-01-04 10:07:24 +01:00
}
export const getDateWithTZ = (date, tz) => {
if (!date) {
return ''
}
const dt = DateTime.fromISO(
2019-08-28 15:35:22 +02:00
format(new Date(date), "yyyy-MM-dd'T'HH:mm:ss.SSSxxx")
).setZone(tz)
return parse(
2019-08-28 15:35:22 +02:00
dt.toFormat('yyyy-MM-dd HH:mm:ss'),
'yyyy-MM-dd HH:mm:ss',
new Date()
)
2019-01-04 10:07:24 +01:00
}
2019-09-18 13:58:20 +02:00
export const capitalize = target =>
target.charAt(0).toUpperCase() + target.slice(1)