diff options
Diffstat (limited to 'src/lib/utils.js')
| -rw-r--r-- | src/lib/utils.js | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/src/lib/utils.js b/src/lib/utils.js index 595d2dd8..669b2b5e 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -1,10 +1,53 @@ +import { browser } from '$app/env'; + export function scroll(section) { section.scrollIntoView({ behavior: 'smooth' }); } +const base = browser ? '' : import.meta.env.VITE_COINOS_URL; + +export const get = (url, headers = { accept: 'application/json' }) => + fetch(base + url, { headers }) + .then((r) => r.text()) + .then((body) => { + try { + return JSON.parse(body); + } catch (e) { + throw new Error(body); + } + }); + export const post = (url, body) => - fetch(url, { + fetch(base + url, { method: 'POST', body: JSON.stringify(body), - headers: { 'accept': 'application/json', 'content-type': 'application/json' } - }); + headers: { accept: 'application/json', 'content-type': 'application/json' } + }) + .then((r) => r.text()) + .then((body) => { + try { + body = JSON.parse(body); + } catch (e) { + throw new Error(body); + } + + if (body instanceof Error) throw body; + if (body.name === 'Error') throw new Error(body.message); + + return body; + }); + +export const copy = (text) => { + navigator.clipboard.writeText(text); +}; + +export function reverseFormat(val, locale) { + let parts = new Intl.NumberFormat(locale).formatToParts(1111.1); + let group = parts.find((part) => part.type === 'group').value; + let decimal = parts.find((part) => part.type === 'decimal').value; + let reversedVal = val.replace(new RegExp('\\' + group, 'g'), ''); + reversedVal = reversedVal.replace(new RegExp('\\' + decimal, 'g'), '.'); + return Number.isNaN(reversedVal) ? 0 : +reversedVal; +} + +export let protectedRoutes = [/receive/, /customers/, /dashboard/, /settings/, /transactions/]; |
