aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/utils.js
diff options
context:
space:
mode:
authorAdrien Hopkins <[email protected]>2022-08-02 13:13:27 -0500
committerAdrien Hopkins <[email protected]>2022-08-02 13:13:27 -0500
commitc21ee41b206db79b2157d8743b0473a094448dfb (patch)
treefac1a595e451c0b32ceedfe4fb70855270456377 /src/lib/utils.js
parent3b216dd6c170a7d71d21a391098c554008c8bdb4 (diff)
parent05f5001fc7d325e31d9c777be11343604c72fbfd (diff)
downloadcoinos-ui-c21ee41b206db79b2157d8743b0473a094448dfb.tar.gz
coinos-ui-c21ee41b206db79b2157d8743b0473a094448dfb.zip
Merge branch 'master' into i18n
Diffstat (limited to 'src/lib/utils.js')
-rw-r--r--src/lib/utils.js49
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/];