aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-11-09 23:57:21 -0800
committerAdam Soltys <[email protected]>2022-11-09 23:57:21 -0800
commit13ded49a1934f9afa171de440c82629c5818eac3 (patch)
tree4caeb1dfbb950068b2d761199243e90ab4d4655c
parentc01e1c12c3e1c231bd818c824ee9f246f707e304 (diff)
downloadcoinos-ui-13ded49a1934f9afa171de440c82629c5818eac3.tar.gz
coinos-ui-13ded49a1934f9afa171de440c82629c5818eac3.zip
camera button in menu
-rw-r--r--src/components/AppHeader.svelte10
-rw-r--r--src/locales/en.json1
-rw-r--r--src/routes/(app)/+layout.server.js12
-rw-r--r--src/routes/(app)/[username]/+layout.server.js11
-rw-r--r--src/routes/(app)/scan/+page.svelte2
-rw-r--r--static/icons/camera.svg49
6 files changed, 77 insertions, 8 deletions
diff --git a/src/components/AppHeader.svelte b/src/components/AppHeader.svelte
index 81660ea4..1784f13b 100644
--- a/src/components/AppHeader.svelte
+++ b/src/components/AppHeader.svelte
@@ -17,6 +17,7 @@
menuButtons = [
{ key: 'nav.profile', icon: 'profile', href: `/${user.username}` },
{ key: 'nav.settings', icon: 'settings', href: `/${user.username}/settings` },
+ { key: 'nav.scan', icon: 'camera', href: `/${user.username}/scan` },
{ key: 'nav.support', icon: 'support', href: `/support` },
{ key: 'nav.signOut', icon: 'logout', href: `/logout` }
];
@@ -57,6 +58,15 @@
><Icon icon="numpad" style="mx-auto" />
</button>
</a>
+ <a href={`/scan`}>
+ <button
+ class="bg-white p-2 rounded-full w-12 h-12 drop-shadow-xl border border-black/10 {$page
+ .url.pathname === `/scan`
+ ? 'opacity-100'
+ : 'opacity-70 hover:opacity-80'}"
+ ><Icon icon="camera" style="mx-auto w-6" />
+ </button>
+ </a>
<a href={`/${user.username}/transactions`}>
<button
class="bg-white p-2 rounded-full w-12 h-12 drop-shadow-xl border border-black/10 {$page
diff --git a/src/locales/en.json b/src/locales/en.json
index 89ccb8a5..81ae2cd3 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -144,6 +144,7 @@
"failed": "Login failed"
},
"nav": {
+ "scan": "Scan",
"profile": "Profile",
"startInSeconds": "Start in Seconds",
"account": "Account",
diff --git a/src/routes/(app)/+layout.server.js b/src/routes/(app)/+layout.server.js
index ee4c257e..64ebc3e2 100644
--- a/src/routes/(app)/+layout.server.js
+++ b/src/routes/(app)/+layout.server.js
@@ -7,8 +7,9 @@ export const { PUBLIC_BTC: btc } = env;
export async function load({ cookies, locals, request, url, params }) {
url.pathname;
let token = cookies.get('token');
- let rates;
- let subject;
+ let rate,
+ rates = { USD: 1 },
+ subject;
let { user } = locals;
if (user) {
@@ -21,8 +22,11 @@ export async function load({ cookies, locals, request, url, params }) {
}
}
- let rate = await get('/rate');
- rates = await get('/rates');
+ try {
+ rate = await get('/rate');
+ rates = await get('/rates');
+ } catch (e) {
+ }
return { subject, user, token, rate, rates };
}
diff --git a/src/routes/(app)/[username]/+layout.server.js b/src/routes/(app)/[username]/+layout.server.js
index e875b5e6..a352fe45 100644
--- a/src/routes/(app)/[username]/+layout.server.js
+++ b/src/routes/(app)/[username]/+layout.server.js
@@ -1,5 +1,10 @@
import { get } from '$lib/utils';
+import { error } from '@sveltejs/kit';
-export let load = async ({ params: { username } }) => ({
- subject: await get(`/users/${username}`)
-});
+export let load = async ({ params: { username } }) => {
+ try {
+ return { subject: await get(`/users/${username}`) };
+ } catch (e) {
+ throw error(500, 'Unable to retrieve user account data');
+ }
+};
diff --git a/src/routes/(app)/scan/+page.svelte b/src/routes/(app)/scan/+page.svelte
index 4e06e1b5..9c96f1ae 100644
--- a/src/routes/(app)/scan/+page.svelte
+++ b/src/routes/(app)/scan/+page.svelte
@@ -25,7 +25,7 @@
<div class="bg-black mx-auto rounded-3xl">
<video
bind:this={vid}
- class="border-4 rounded-3xl border-black md:max-w-[600px] !max-h-[300px]"
+ class="border-4 rounded-3xl border-black md:max-w-[600px] !max-h-[80vh] !min-w-[300px]"
/>
</div>
</div>
diff --git a/static/icons/camera.svg b/static/icons/camera.svg
new file mode 100644
index 00000000..b615c7b5
--- /dev/null
+++ b/static/icons/camera.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 490 490" style="enable-background:new 0 0 490 490;" xml:space="preserve">
+<g>
+ <g>
+ <g>
+ <path d="M295,160c-74.439,0-135,60.561-135,135s60.561,135,135,135s135-60.561,135-135S369.439,160,295,160z M295,400
+ c-57.897,0-105-47.103-105-105c0-57.897,47.103-105,105-105c57.897,0,105,47.103,105,105C400,352.897,352.897,400,295,400z"/>
+ <path d="M295,235c-33.084,0-60,26.916-60,60s26.916,60,60,60s60-26.916,60-60S328.084,235,295,235z M295,325
+ c-16.542,0-30-13.458-30-30s13.458-30,30-30s30,13.458,30,30S311.542,325,295,325z"/>
+ <path d="M425,100h-0.076l-42.5-100H207.577l-42.5,100H65c-35.841,0-65,29.159-65,65v260c0,35.841,29.159,65,65,65h360
+ c35.841,0,65-29.159,65-65V165C490,129.159,460.841,100,425,100z M227.423,30h135.153l29.75,70H197.674L227.423,30z M100,460H65
+ c-19.299,0-35-15.701-35-35V190h70V460z M100,160H30.363c2.434-16.938,17.036-30,34.637-30h35V160z M460,425
+ c0,19.299-15.701,35-35,35H130V130h295c19.299,0,35,15.701,35,35V425z"/>
+ </g>
+ </g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>