[ui] add deletion of objects
parent
1470d91719
commit
a2337fde30
|
@ -54,6 +54,7 @@
|
||||||
{index}
|
{index}
|
||||||
{detail}
|
{detail}
|
||||||
on:resolved
|
on:resolved
|
||||||
|
on:close
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
import UpObject from "./display/UpObject.svelte";
|
import UpObject from "./display/UpObject.svelte";
|
||||||
import { UpType } from "../lib/types";
|
import { UpType } from "../lib/types";
|
||||||
import BlobPreview from "./display/BlobPreview.svelte";
|
import BlobPreview from "./display/BlobPreview.svelte";
|
||||||
import { setContext } from "svelte";
|
import { createEventDispatcher, setContext } from "svelte";
|
||||||
import { writable } from "svelte/store";
|
import { writable } from "svelte/store";
|
||||||
import type { UpEntry } from "upend";
|
import type { UpEntry } from "upend";
|
||||||
import Spinner from "./utils/Spinner.svelte";
|
import Spinner from "./utils/Spinner.svelte";
|
||||||
|
@ -17,6 +17,8 @@
|
||||||
import { useParams } from "svelte-navigator";
|
import { useParams } from "svelte-navigator";
|
||||||
import { GROUP_TYPE_ADDR } from "upend/constants";
|
import { GROUP_TYPE_ADDR } from "upend/constants";
|
||||||
import { deleteEntry, putEntityAttribute, putEntry } from "../lib/api";
|
import { deleteEntry, putEntityAttribute, putEntry } from "../lib/api";
|
||||||
|
import Icon from "./utils/Icon.svelte";
|
||||||
|
const dispatch = createEventDispatcher();
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
|
|
||||||
export let address: string;
|
export let address: string;
|
||||||
|
@ -139,6 +141,12 @@
|
||||||
revalidate();
|
revalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let identities = [address];
|
||||||
|
function onResolved(ev: CustomEvent<string[]>) {
|
||||||
|
identities = ev.detail;
|
||||||
|
dispatch("resolved", ev.detail);
|
||||||
|
}
|
||||||
|
|
||||||
let groupToAdd: IValue | undefined;
|
let groupToAdd: IValue | undefined;
|
||||||
async function addGroup() {
|
async function addGroup() {
|
||||||
if (!groupToAdd) {
|
if (!groupToAdd) {
|
||||||
|
@ -166,17 +174,24 @@
|
||||||
groupToAdd = undefined;
|
groupToAdd = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function removeGroup(address: string) {
|
async function removeGroup(groupAddress: string) {
|
||||||
await deleteEntry(address);
|
await deleteEntry(groupAddress);
|
||||||
revalidate();
|
revalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function deleteObject() {
|
||||||
|
if (confirm(`Really delete "${identities.join(" | ")}"?`)) {
|
||||||
|
await deleteEntry(address);
|
||||||
|
dispatch("close");
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="inspect">
|
<div class="inspect">
|
||||||
<header>
|
<header>
|
||||||
<h2>
|
<h2>
|
||||||
{#if $entity}
|
{#if $entity}
|
||||||
<UpObject banner {address} on:resolved />
|
<UpObject banner {address} on:resolved={onResolved} />
|
||||||
{:else}
|
{:else}
|
||||||
<Spinner centered />
|
<Spinner centered />
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -244,6 +259,12 @@
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{#if editable}
|
||||||
|
<div class="button" on:click={deleteObject}>
|
||||||
|
<Icon name="trash" />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
{:else}
|
{:else}
|
||||||
<Spinner centered />
|
<Spinner centered />
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
@ -12,7 +12,11 @@
|
||||||
function close(idx: number) {
|
function close(idx: number) {
|
||||||
let _addresses = addresses.concat();
|
let _addresses = addresses.concat();
|
||||||
_addresses.splice(idx, 1);
|
_addresses.splice(idx, 1);
|
||||||
navigate(`/browse/${_addresses.join(",")}`);
|
if (_addresses.length) {
|
||||||
|
navigate(`/browse/${_addresses.join(",")}`);
|
||||||
|
} else {
|
||||||
|
navigate("/");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$: {
|
$: {
|
||||||
|
|
Loading…
Reference in New Issue