From ebab36f676fd216c90916b716e228ca458118819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sof=C3=ADa=20Aritz?= Date: Wed, 26 Jun 2024 13:39:06 +0200 Subject: [PATCH] more progressgit add . --- asset-api/index.js | 6 +- identity-api/src/index.js | 28 ++++++++ identity-web/package.json | 1 + identity-web/src/lib/api.ts | 21 ++++++ identity-web/src/routes/+layout.svelte | 4 +- .../src/routes/auth/account/+page.svelte | 15 +++- .../src/routes/dashboard/+page.svelte | 6 +- .../src/routes/dashboard/Entries.svelte | 5 +- .../src/routes/dashboard/utils/Entry.svelte | 33 ++++++--- .../src/routes/entry/new/+page.svelte | 70 +++++++++++-------- identity-web/tailwind.config.js | 4 +- identity-web/yarn.lock | 21 ++++++ 12 files changed, 170 insertions(+), 44 deletions(-) diff --git a/asset-api/index.js b/asset-api/index.js index a56965e..352174a 100644 --- a/asset-api/index.js +++ b/asset-api/index.js @@ -63,7 +63,11 @@ fastify.put("/asset", { }), }); - promisify(pipeline)(file.file, createWriteStream(`.assets/${full_id}`)); + await promisify(pipeline)(file.file, createWriteStream(`.assets/${full_id}`)); + + return { + asset_id: full_id, + } }, schema: { query: { diff --git a/identity-api/src/index.js b/identity-api/src/index.js index 94eee26..593e607 100644 --- a/identity-api/src/index.js +++ b/identity-api/src/index.js @@ -50,6 +50,34 @@ app.get("/asset/endpoint", { } }) +app.delete("/entry", { + async handler(request, reply) { + let jwt = request.headers["authorization"].replace("Bearer", "").trim(); + let { payload } = await auth.verifyJwt(jwt); + + let user = await auth.user(payload.uid); + user.entries = user.entries.filter(v => v.id !== request.query.entry_id); + + await auth.updateUser(payload.uid, user); + }, + schema: { + headers: { + type: "object", + properties: { + authorization: { type: "string" }, + }, + required: ["authorization"], + }, + query: { + type: "object", + properties: { + entry_id: { type: "string" }, + }, + required: ["entry_id"], + }, + }, +}) + app.put("/entry", { async handler(request, reply) { let jwt = request.headers["authorization"].replace("Bearer", "").trim(); diff --git a/identity-web/package.json b/identity-web/package.json index 282d4b3..17ae64c 100644 --- a/identity-web/package.json +++ b/identity-web/package.json @@ -16,6 +16,7 @@ "@sveltejs/adapter-auto": "^3.0.0", "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@tailwindcss/forms": "^0.5.7", "@types/eslint": "^8.56.7", "autoprefixer": "^10.4.19", "eslint": "^9.0.0", diff --git a/identity-web/src/lib/api.ts b/identity-web/src/lib/api.ts index 9ad31c9..e4f9bc2 100644 --- a/identity-web/src/lib/api.ts +++ b/identity-web/src/lib/api.ts @@ -1,6 +1,7 @@ import type { Entry, IdlessEntry } from "./entry" const ENDPOINT = 'http://localhost:3000/' +const ASSET_API_ENDPOINT = 'http://localhost:3001/' export type Credentials = { token: string, @@ -81,4 +82,24 @@ export async function addEntry(credentials: Credentials, entry: IdlessEntry): Pr }, body: JSON.stringify({entry}), }) +} + +export async function deleteEntry(credentials: Credentials, entry_id: string): Promise { + await sendRequest('/entry', credentials, { method: 'DELETE' }, `?entry_id=${entry_id}`) +} + +export async function uploadAsset(session_key: string, file: File): Promise { + let url = new URL('/asset', ASSET_API_ENDPOINT); + url.search = `?session_key=${session_key}` + + let form = new FormData() + form.append("file", file); + + let res = await fetch(url, { + method: "PUT", + body: form, + }) + + let { asset_id } = await res.json(); + return asset_id; } \ No newline at end of file diff --git a/identity-web/src/routes/+layout.svelte b/identity-web/src/routes/+layout.svelte index 2116cc7..3374ae3 100644 --- a/identity-web/src/routes/+layout.svelte +++ b/identity-web/src/routes/+layout.svelte @@ -17,13 +17,13 @@
{#if $credentials == null} | - | + | | | {:else} | | - | + | | {/if}
diff --git a/identity-web/src/routes/auth/account/+page.svelte b/identity-web/src/routes/auth/account/+page.svelte index a596126..24ded02 100644 --- a/identity-web/src/routes/auth/account/+page.svelte +++ b/identity-web/src/routes/auth/account/+page.svelte @@ -1 +1,14 @@ -

Account management

\ No newline at end of file + + +
+
+

Welcome back, {$account?.name}.

+

+ The account panel is still work in progress, feel free to contact support with any inquires. +

+
+
\ No newline at end of file diff --git a/identity-web/src/routes/dashboard/+page.svelte b/identity-web/src/routes/dashboard/+page.svelte index a080944..3715097 100644 --- a/identity-web/src/routes/dashboard/+page.svelte +++ b/identity-web/src/routes/dashboard/+page.svelte @@ -7,6 +7,10 @@ credentials.subscribe((v) => v == null && (setTimeout(() => window.location.pathname = '/auth/login', 200))) let entries = entryPage($credentials!, 0, 20); let overview = Promise.allSettled([entryPage($credentials!, 0, 3), entryPage($credentials!, 20, 3)]) + + function refreshEntries() { + entries = entryPage($credentials!, 0, 20); + } {#if $account != null} @@ -43,7 +47,7 @@ + Add an entry
- + refreshEntries()} entries={entries}/>
{/if} diff --git a/identity-web/src/routes/dashboard/Entries.svelte b/identity-web/src/routes/dashboard/Entries.svelte index bb7b963..da29069 100644 --- a/identity-web/src/routes/dashboard/Entries.svelte +++ b/identity-web/src/routes/dashboard/Entries.svelte @@ -5,12 +5,15 @@ import Entry from "./utils/Entry.svelte"; import EntryDescription from "./utils/EntryDescription.svelte"; import AssetPreview from "./utils/AssetPreview.svelte"; + import { createEventDispatcher } from "svelte"; + + let dispatch = createEventDispatcher() export let entries: EntryType[] {#each entries as entry (entry.id)} - + { dispatch('deleted',event.detail) }} id={entry.id} kind={entry.base.kind} creationDate={new Date(entry.creationDate)} title={entry.base.kind === "date" ? new Date(entry.base.referencedDate).toLocaleDateString() : entry.title}>
{#if entry.base.kind === "song" || entry.base.kind === "album"} {entry.base.artist} ‐ {entry.base.title} diff --git a/identity-web/src/routes/dashboard/utils/Entry.svelte b/identity-web/src/routes/dashboard/utils/Entry.svelte index 192578f..7381357 100644 --- a/identity-web/src/routes/dashboard/utils/Entry.svelte +++ b/identity-web/src/routes/dashboard/utils/Entry.svelte @@ -1,6 +1,11 @@