diff options
| author | Adam Soltys <[email protected]> | 2024-08-30 18:52:00 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-08-30 18:52:00 -0700 |
| commit | 8346eb9e052d10abf4fb65b66838aaab47152e2a (patch) | |
| tree | 0f5efabd144b720598441d9a638fd27d849628ff /src/lib/invoice.ts | |
| parent | cb2edf24e48a49417ed6ec4a386e566470ff046c (diff) | |
| download | coinos-ui-8346eb9e052d10abf4fb65b66838aaab47152e2a.tar.gz coinos-ui-8346eb9e052d10abf4fb65b66838aaab47152e2a.zip | |
typescript
Diffstat (limited to 'src/lib/invoice.ts')
| -rw-r--r-- | src/lib/invoice.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/lib/invoice.ts b/src/lib/invoice.ts new file mode 100644 index 00000000..d2d3d13d --- /dev/null +++ b/src/lib/invoice.ts @@ -0,0 +1,32 @@ +import { auth, get, post } from "$lib/utils"; +import { redirect } from "@sveltejs/kit"; + +export default async ({ cookies, request, url }) => { + let form = await request.formData(); + + let rates = await get("/rates"); + let amount = parseInt(form.get("amount")); + + let invoice = { + amount, + items: JSON.parse(form.get("items")), + memo: form.get("memo"), + memoPrompt: form.get("memoPrompt"), + tip: parseInt(form.get("tip")) || 0, + type: form.get("type"), + prompt: form.get("prompt") === "true", + rate: parseFloat(form.get("rate")) || rates[form.get("currency")], + }; + + let user = { username: form.get("username"), currency: form.get("currency") }; + + invoice = await post("/invoice", { invoice, user }, auth(cookies)); + let { id } = invoice; + + if (invoice.prompt && invoice.tip === null) + redirect(307, `/${user.username}/invoice/${id}/tip`); + + if (invoice.memoPrompt && !invoice.memo) { + redirect(307, `/${user.username}/invoice/${id}/memo`); + } else redirect(307, `/${user.username}/invoice/${id}`); +}; |
