[ui] refactor components to use addresses from context, not params

feat/vaults
Tomáš Mládek 2022-02-13 15:08:09 +01:00
parent 2a3144d22e
commit 12d3509a46
No known key found for this signature in database
GPG Key ID: 65E225C8B3E2ED8A
4 changed files with 30 additions and 18 deletions

View File

@ -13,6 +13,9 @@
import Selector from "./utils/Selector.svelte";
import type { IValue } from "upend/types";
import IconButton from "./utils/IconButton.svelte";
import type { BrowseContext } from "../util/browse";
import { useParams } from "svelte-navigator";
const params = useParams();
export let address: string;
export let index: number | undefined;
@ -22,7 +25,13 @@
let indexStore = writable(index);
$: $indexStore = index;
setContext("browse", { index: indexStore });
let addressesStore = writable([]);
$: $addressesStore = $params.addresses?.split(",") || [];
setContext("browse", {
index: indexStore,
addresses: addressesStore,
} as BrowseContext);
$: ({ entity, error, revalidate } = useEntity(address));

View File

@ -1,10 +1,10 @@
<script lang="ts">
import { getContext } from "svelte";
import { useNavigate, useLocation, useParams } from "svelte-navigator";
import { readable, Writable } from "svelte/store";
import { useNavigate, useLocation } from "svelte-navigator";
import { readable } from "svelte/store";
import type { Address, VALUE_TYPE } from "upend/types";
const params = useParams();
import type { BrowseContext } from "../../util/browse";
const location = useLocation();
const navigate = useNavigate();
@ -14,20 +14,18 @@
value?: { t: VALUE_TYPE; c: string };
};
const context = getContext("browse") as
| { index: Writable<number> }
| undefined;
const context = getContext("browse") as BrowseContext | undefined;
const index = context ? context.index : readable(0);
const addresses = context ? context.addresses : readable([]);
function onClick() {
if (to.entity) {
if ($location.pathname.startsWith("/browse")) {
let addresses = $params.addresses.split(",");
let newAddresses = $addresses.concat();
const routerTo =
"/browse/" +
addresses
newAddresses
.slice(0, $index + 1)
.concat([to.entity])
.join(",");

View File

@ -5,13 +5,12 @@
import Ellipsis from "../utils/Ellipsis.svelte";
import UpLink from "./UpLink.svelte";
import { useEntity } from "../../lib/entity";
import { Readable, readable } from "svelte/store";
import { readable } from "svelte/store";
import { notify, UpNotification } from "../../notifications";
import IconButton from "../utils/IconButton.svelte";
import { useParams } from "svelte-navigator";
import { vaultInfo } from "../../util/info";
import type { BrowseContext } from "../../util/browse";
const dispatch = createEventDispatcher();
const params = useParams();
export let address: string;
export let labels: string[] | undefined = undefined;
@ -36,9 +35,9 @@
$: dispatch("resolved", inferredIds);
// Navigation highlights
const index =
(getContext("browse") as { index: Readable<number> })?.index || undefined;
$: addresses = $params.addresses?.split(",") || [];
const context = getContext("browse") as BrowseContext | undefined;
const index = context?.index || undefined;
const addresses = context?.addresses || readable([]);
// Native open
function nativeOpen() {
@ -81,8 +80,8 @@
<div
class="upobject"
class:left-active={address == addresses[$index - 1]}
class:right-active={address == addresses[$index + 1]}
class:left-active={address == $addresses[$index - 1]}
class:right-active={address == $addresses[$index + 1]}
>
<div class="address" class:identified={Boolean(inferredIds)} class:banner>
<HashBadge {address} />

6
webui/src/util/browse.ts Normal file
View File

@ -0,0 +1,6 @@
import type { Readable } from "svelte/store";
export interface BrowseContext {
index: Readable<number>;
addresses: Readable<string[]>;
}