From d268ddf7fbb6ef025564c1a6f1d935a1267185df Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sun, 23 Jan 2022 22:28:22 +0100 Subject: feat: Redo entry-card style, add ability to delete entries --- src/webapp/src/components/entry-card.svelte | 35 ++++++++++++++++++++++++----- src/webapp/src/lib/stores/entries.ts | 21 +++++++++++++---- 2 files changed, 47 insertions(+), 9 deletions(-) (limited to 'src/webapp') diff --git a/src/webapp/src/components/entry-card.svelte b/src/webapp/src/components/entry-card.svelte index 30408fb..e264589 100644 --- a/src/webapp/src/components/entry-card.svelte +++ b/src/webapp/src/components/entry-card.svelte @@ -1,13 +1,38 @@ + +
+
+ {entry.url} + + alert("Not implemented")}/> + delete_entry(entry.id)} + text="Delete"/> + +
{#if entry.tags.length > 0} {#each entry.tags.split(" ") as tag} {tag} @@ -16,4 +41,4 @@ {#if entry.description}

{@html entry.description.replace("\n", "
")}

{/if} - +
diff --git a/src/webapp/src/lib/stores/entries.ts b/src/webapp/src/lib/stores/entries.ts index 66be0cf..d5f7bb8 100644 --- a/src/webapp/src/lib/stores/entries.ts +++ b/src/webapp/src/lib/stores/entries.ts @@ -1,6 +1,6 @@ import {StoreType, writable_persistent} from "@/lib/stores/persistent-store"; import {storage_keys} from "@/lib/configuration"; -import {create_new_entry_async, get_all_entries_async} from "@/lib/api/entries"; +import {create_new_entry_async, get_all_entries_async, delete_entry_async} from "@/lib/api/entries"; import {get} from "svelte/store"; import type {IEntryDto} from "@/lib/models/IEntryDto"; import {merge_obj_arr} from "@/lib/helpers"; @@ -25,7 +25,11 @@ export async function hydrate_entry_cache_async() { if (get_entries_request.ok) { const all_entries = await get_entries_request.json(); const stored_entries = get(entries); - entries.set(merge_obj_arr(all_entries, stored_entries, "id")); + if (stored_entries.length > all_entries.length) { + entries.set(all_entries); + } else { + entries.set(merge_obj_arr(all_entries, stored_entries, "id")); + } } } @@ -51,8 +55,17 @@ export async function edit_entry_async(entry: IEntryDto) { if (!entry.id) return; } -export async function delete_entry_async(entry: IEntryDto) { - if (!entry.id) return; +export async function del_entry_async(entry_id: string) { + if (!entry_id) return; + const http_request = await delete_entry_async(entry_id); + if (http_request.ok) { + const stored_entries = get(entries); + const new_entries = []; + for (const entry of stored_entries) { + if (entry.id !== entry_id) new_entries.push(entry); + } + entries.set(new_entries); + } } export default entries; -- cgit v1.3