aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2025-07-17 16:18:30 -0700
committerAdam Soltys <[email protected]>2025-07-17 16:18:30 -0700
commitfd6e5957f2625e4e12e22c4f018c68ce28f99128 (patch)
treeaebba6be6c74aeae46053aaf46fb9587b90664ca
parente9a3bccbdd065934a4ac48574d144e79cd5b25bb (diff)
downloadcoinos-ui-fd6e5957f2625e4e12e22c4f018c68ce28f99128.tar.gz
coinos-ui-fd6e5957f2625e4e12e22c4f018c68ce28f99128.zip
square connection
-rw-r--r--src/locales/en.json2
-rw-r--r--src/routes/(app)/settings/account/+page.server.ts6
-rw-r--r--src/routes/(app)/settings/account/+page.svelte16
-rw-r--r--src/routes/(app)/settings/square/+page.server.ts18
-rw-r--r--src/routes/(app)/settings/square/+page.svelte0
-rw-r--r--static/images/square.svg15
6 files changed, 54 insertions, 3 deletions
diff --git a/src/locales/en.json b/src/locales/en.json
index 77b2cb20..0ff021cd 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -296,6 +296,8 @@
"placeholder": "Enter an address, invoice or username"
},
"settings": {
+ "connectSquare": "Connect to Square",
+ "revokeSquare": "Revoke Square Connection",
"confirmAutoWithdrawal": "Confirm auto withdrawal settings",
"confirmAutoWithdrawalDesc": "Your auto withdrawals have been disabled. Please double check your destination address before re-enabling them or remove the address to dismiss this message.",
"tip": "Default tip",
diff --git a/src/routes/(app)/settings/account/+page.server.ts b/src/routes/(app)/settings/account/+page.server.ts
index f0cc700e..ebb90f05 100644
--- a/src/routes/(app)/settings/account/+page.server.ts
+++ b/src/routes/(app)/settings/account/+page.server.ts
@@ -1,9 +1,11 @@
import getRates from "$lib/rates";
import updateUser from "$lib/settings";
+import { auth, get } from "$lib/utils";
-export async function load() {
+export async function load({ cookies }) {
const rates = await getRates();
- return { rates };
+ const connect = await get("/square/connect", auth(cookies));
+ return { connect, rates };
}
export const actions = {
diff --git a/src/routes/(app)/settings/account/+page.svelte b/src/routes/(app)/settings/account/+page.svelte
index d8b61170..26013cbb 100644
--- a/src/routes/(app)/settings/account/+page.svelte
+++ b/src/routes/(app)/settings/account/+page.svelte
@@ -13,7 +13,7 @@
let { data } = $props();
let { user } = $state(data);
- let { rates, subscriptions } = data;
+ let { connect, rates, subscriptions } = data;
let { currency, email, tip, verified } = $state(user);
let rate = rates[currency];
@@ -97,6 +97,8 @@
$effect(() => {
if (email !== user.email) verified = false;
});
+
+ let revoke = () => {};
</script>
<div>
@@ -319,3 +321,15 @@
</div>
</div>
{/if}
+
+{#if connect !== "connected"}
+ <a href={connect} class="btn flex">
+ <img src="/images/square.svg" class="w-12" />
+ <div>{$t("user.settings.connectSquare")}</div></a
+ >
+{:else}
+ <button type="button" onclick={revoke} class="btn">
+ <img src="/images/square.svg" class="w-12" />
+ <div>{$t("user.settings.revokeSquare")}</div>
+ </button>
+{/if}
diff --git a/src/routes/(app)/settings/square/+page.server.ts b/src/routes/(app)/settings/square/+page.server.ts
new file mode 100644
index 00000000..e00bdf1b
--- /dev/null
+++ b/src/routes/(app)/settings/square/+page.server.ts
@@ -0,0 +1,18 @@
+import { auth, get } from "$lib/utils";
+import { fail, redirect } from "@sveltejs/kit";
+
+export async function load({ cookies, url }) {
+ let connected;
+
+ const query = url.searchParams.toString();
+
+ try {
+ await get(`/square/auth?${query}`, auth(cookies));
+ connected = true;
+ } catch (e) {
+ const { message } = e as Error;
+ fail(400, { message });
+ }
+
+ if (connected) redirect(307, "/settings/account");
+}
diff --git a/src/routes/(app)/settings/square/+page.svelte b/src/routes/(app)/settings/square/+page.svelte
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/routes/(app)/settings/square/+page.svelte
diff --git a/static/images/square.svg b/static/images/square.svg
new file mode 100644
index 00000000..14432609
--- /dev/null
+++ b/static/images/square.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg fill="#000000" height="800px" width="800px" version="1.1" id="XMLID_21_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+ viewBox="0 0 24 24" xml:space="preserve">
+<g id="payment-square">
+ <g>
+ <path d="M17,22H7c-2.8,0-5-2.2-5-5V7c0-2.8,2.2-5,5-5h10c2.8,0,5,2.2,5,5v10C22,19.7,19.8,22,17,22z M7,4C5.3,4,4,5.3,4,7v10
+ c0,1.7,1.3,3,3,3h10c1.7,0,3-1.3,3-3V7c0-1.7-1.3-3-3-3H7z"/>
+ </g>
+ <g>
+ <path d="M14,9h-4c-0.6,0-1,0.4-1,1v4c0,0.6,0.4,1,1,1h4c0.6,0,1-0.4,1-1v-4C15,9.4,14.6,9,14,9z"/>
+ </g>
+</g>
+</svg> \ No newline at end of file