[ui] add deletion of objects

feat/vaults
Tomáš Mládek 2022-02-20 18:04:47 +01:00
parent 1470d91719
commit a2337fde30
No known key found for this signature in database
GPG Key ID: 65E225C8B3E2ED8A
3 changed files with 31 additions and 5 deletions

View File

@ -54,6 +54,7 @@
{index}
{detail}
on:resolved
on:close
/>
</div>

View File

@ -4,7 +4,7 @@
import UpObject from "./display/UpObject.svelte";
import { UpType } from "../lib/types";
import BlobPreview from "./display/BlobPreview.svelte";
import { setContext } from "svelte";
import { createEventDispatcher, setContext } from "svelte";
import { writable } from "svelte/store";
import type { UpEntry } from "upend";
import Spinner from "./utils/Spinner.svelte";
@ -17,6 +17,8 @@
import { useParams } from "svelte-navigator";
import { GROUP_TYPE_ADDR } from "upend/constants";
import { deleteEntry, putEntityAttribute, putEntry } from "../lib/api";
import Icon from "./utils/Icon.svelte";
const dispatch = createEventDispatcher();
const params = useParams();
export let address: string;
@ -139,6 +141,12 @@
revalidate();
}
let identities = [address];
function onResolved(ev: CustomEvent<string[]>) {
identities = ev.detail;
dispatch("resolved", ev.detail);
}
let groupToAdd: IValue | undefined;
async function addGroup() {
if (!groupToAdd) {
@ -166,17 +174,24 @@
groupToAdd = undefined;
}
async function removeGroup(address: string) {
await deleteEntry(address);
async function removeGroup(groupAddress: string) {
await deleteEntry(groupAddress);
revalidate();
}
async function deleteObject() {
if (confirm(`Really delete "${identities.join(" | ")}"?`)) {
await deleteEntry(address);
dispatch("close");
}
}
</script>
<div class="inspect">
<header>
<h2>
{#if $entity}
<UpObject banner {address} on:resolved />
<UpObject banner {address} on:resolved={onResolved} />
{:else}
<Spinner centered />
{/if}
@ -244,6 +259,12 @@
/>
{/if}
</div>
{#if editable}
<div class="button" on:click={deleteObject}>
<Icon name="trash" />
</div>
{/if}
{:else}
<Spinner centered />
{/if}

View File

@ -12,7 +12,11 @@
function close(idx: number) {
let _addresses = addresses.concat();
_addresses.splice(idx, 1);
navigate(`/browse/${_addresses.join(",")}`);
if (_addresses.length) {
navigate(`/browse/${_addresses.join(",")}`);
} else {
navigate("/");
}
}
$: {