Use new Address utility

This commit is contained in:
Jon Staab 2024-03-01 15:55:38 -08:00
parent f424fceba6
commit 954584c375
17 changed files with 36 additions and 32 deletions

View File

@ -10,7 +10,8 @@
"check:es": "eslint 'src/**/*.{js,ts,svelte}' --quiet",
"check:ts": "svelte-check --tsconfig ./tsconfig.json --threshold error",
"check:fmt": "prettier --check $(git diff head --name-only --diff-filter d | grep -E '(js|ts|svelte)$' | xargs)",
"check:errors": "run-p check:es check:ts",
"check:cycles": "madge --circular src/main.js",
"check:errors": "run-p check:es check:ts check:cycles",
"check": "run-p check:errors check:fmt",
"format": "prettier --write $(git diff head --name-only --diff-filter d | grep -E '(js|ts|svelte)$' | xargs)",
"watch": "find src -type f | entr -r"
@ -30,6 +31,7 @@
"cypress": "^13.6.0",
"eslint": "^8.54.0",
"eslint-plugin-svelte3": "^4.0.0",
"madge": "^6.1.0",
"postcss": "^8.4.31",
"prettier": "^3.1.0",
"prettier-plugin-svelte": "^3.1.2",

View File

@ -13,7 +13,7 @@ export const decodeJson = json => tryJson(() => JSON.parse(json))
export const encodeCsv = xs => xs.join(",")
export const decodeCsv = x => x.split(",")
export const encodeRelays = xs => xs.map(url => last(url.split("//"))).join(",")
export const encodeNaddr = a => Address.fromRaw(a).asNaddr()
export const encodeNaddr = a => Address.fromRaw(a, []).asNaddr()
export const encodeFilter = f =>
Object.entries(f)

View File

@ -1,12 +1,11 @@
<script lang="ts">
import {Address} from "paravel"
import OverflowMenu from "src/partials/OverflowMenu.svelte"
import {router} from "src/app/router"
import {pubkey, isDeleted} from "src/engine"
import {pubkey, isDeleted, hints} from "src/engine"
export let event
const addr = Address.fromEvent(event)
const address = hints.address(event)
let actions = []
@ -15,20 +14,20 @@
if (!$isDeleted(event)) {
actions.push({
onClick: () => router.at("qrcode").of(addr.asNaddr()).open(),
onClick: () => router.at("qrcode").of(address.asNaddr()).open(),
label: "Share",
icon: "share-nodes",
})
if (event.pubkey === $pubkey) {
actions.push({
onClick: () => router.at("events").of(addr.asRaw()).cx({event}).at("edit").open(),
onClick: () => router.at("events").of(address.asRaw()).cx({event}).at("edit").open(),
label: "Edit",
icon: "edit",
})
actions.push({
onClick: () => router.at("events").of(addr.asRaw()).cx({event}).at("delete").open(),
onClick: () => router.at("events").of(address.asRaw()).cx({event}).at("delete").open(),
label: "Delete",
icon: "trash",
})

View File

@ -13,7 +13,7 @@
export let note
export let showMedia = false
const naddr = hints.getNaddr(note)
const naddr = hints.address(note).asNaddr()
const {title, summary, image, status, p} = fromPairs(note.tags) as Record<string, string>
</script>

View File

@ -1,6 +1,6 @@
<script lang="ts">
import cx from "classnames"
import {Tags, Address, getAddress} from "paravel"
import {Tags, getAddress} from "paravel"
import {commaFormat} from "hurdak"
import FlexColumn from "src/partials/FlexColumn.svelte"
import Carousel from "src/partials/Carousel.svelte"
@ -11,7 +11,7 @@
import NoteContentTopics from "src/app/shared/NoteContentTopics.svelte"
import NoteContentKind1 from "src/app/shared/NoteContentKind1.svelte"
import {router} from "src/app/router"
import {pubkey, isDeleted} from "src/engine"
import {hints, pubkey, isDeleted} from "src/engine"
export let note
export let showMedia = false
@ -26,7 +26,7 @@
const deleteLink = router.at("listings").of(address).at("delete").toString()
const sendMessage = () => {
const naddr = Address.fromEvent(note).asNaddr()
const naddr = hints.address(note).asNaddr()
const initialMessage = `Hi, I'd like to make an offer on this listing:\n${naddr}`
router.at("channels").of([$pubkey, note.pubkey]).cx({initialMessage}).push()

View File

@ -16,11 +16,11 @@
{:else if type === "note"}
<NoteDetail eid={data} {relays} />
{:else if type === "naddr"}
{@const naddr = Address.fromNaddr(entity)}
{@const address = Address.fromNaddr(entity)}
{#if [35834, 34550].includes(data.kind)}
<GroupDetail address={naddr.asRaw()} relays={naddr.relays} activeTab="notes" />
<GroupDetail address={address.asRaw()} relays={address.relays} activeTab="notes" />
{:else if data.kind === 31923}
<EventDetail address={naddr.asRaw()} relays={naddr.relays} />
<EventDetail address={address.asRaw()} relays={address.relays} />
{:else}
<NoteDetail {...data} />
{/if}

View File

@ -49,7 +49,7 @@
onMount(async () => {
if (!event) {
event = await dereferenceNote(Address.fromRaw(address))
event = await dereferenceNote(Address.fromRaw(address, []))
}
loading = false

View File

@ -62,7 +62,7 @@
return toast.show("error", "That name is already in use")
}
const id = address ? Address.fromRaw(address).identifier : randomId()
const id = address ? Address.getIdentifier(address) : randomId()
const {title, description, params, relays} = values
publishBookmarksList(id, title, description, [...params, ...relays])

View File

@ -53,7 +53,7 @@
onMount(async () => {
if (!event) {
event = await dereferenceNote(Address.fromRaw(address))
event = await dereferenceNote(Address.fromRaw(address, []))
}
loading = false

View File

@ -14,7 +14,6 @@
const settings = getSettings()
const submit = () => {
console.log(settings.platform_zap_split)
publishSettings(settings)
toast.show("info", "Your settings have been saved!")

View File

@ -84,9 +84,8 @@ export const wrapWithFallback = async (template, {author = null, wrap}) => {
// Utils for publishing
export const publishToGroupAdmin = async (address, template) => {
const addr = Address.fromRaw(address)
const relays = hints.WithinContext(address).getUrls()
const pubkeys = [addr.pubkey, session.get().pubkey]
const pubkeys = [Address.getPubkey(address), session.get().pubkey]
const pubs = []
const events = []

View File

@ -65,7 +65,8 @@ projections.addHandler(24, (e: Event) => {
}
if (relays.length > 0) {
const {identifier: id, pubkey} = Address.fromRaw(address)
const pubkey = Address.getPubkey(address)
const id = Address.getIdentifier(address)
if (!groups.key(address).get()) {
groups.key(address).set({address, pubkey, id, relays})

View File

@ -38,9 +38,9 @@ export const getStaleAddrs = (addrs: string[]) => {
}
export const loadGroups = async (rawAddrs: string[], relays: string[] = []) => {
const addrs = getStaleAddrs(rawAddrs).map(a => Address.fromRaw(a))
const authors = addrs.map(addr => addr.pubkey)
const identifiers = addrs.map(addr => addr.identifier)
const addrs = getStaleAddrs(rawAddrs)
const authors = addrs.map(a => Address.getPubkey(a))
const identifiers = addrs.map(a => Address.getIdentifier(a))
if (addrs.length > 0) {
load({

View File

@ -20,9 +20,10 @@ export const getGroupName = (group: Group) => group.meta?.name || group.id || ""
export const displayGroup = (group: Group) => ellipsize(group ? getGroupName(group) : "No name", 60)
export const deriveGroup = address => {
const {identifier, pubkey} = Address.fromRaw(address)
const pubkey = Address.getPubkey(address)
const id = Address.getIdentifier(address)
return groups.key(address).derived(defaultTo({id: identifier, pubkey, address}))
return groups.key(address).derived(defaultTo({id, pubkey, address}))
}
export const getGroupSearch = $groups => fuzzy($groups, {keys: ["meta.name", "meta.about"]})
@ -65,7 +66,7 @@ export const getGroupReqInfo = (address = null) => {
const recipients = [pubkey.get()]
for (const key of [...$groupSharedKeys, ...$groupAdminKeys]) {
admins.push(Address.fromRaw(key.group).pubkey)
admins.push(Address.getPubkey(key.group))
addresses.push(key.group)
recipients.push(key.pubkey)
}

View File

@ -1,11 +1,14 @@
import {Tags, Address} from "paravel"
import {Tags} from "paravel"
import {updateRecord} from "src/engine/core/commands"
import {projections} from "src/engine/core/projections"
import type {Event} from "src/engine/events/model"
import {_lists} from "./state"
const handleBookmarkList = (e: Event) => {
const addr = Address.fromEvent(e)
const handleBookmarkList = async (e: Event) => {
// TODO: Evil hack; there is a circular dependency somewhere
const {hints} = await import("src/engine/relays/utils")
const addr = hints.address(e)
const {title, name, description} = Tags.fromEvent(e).asObject()
const realTitle = title || name || addr.identifier

View File

@ -44,7 +44,7 @@ export const getIdFilters = values => {
for (const value of values) {
if (value.includes(":")) {
aFilters.push(Address.fromRaw(value).asFilter())
aFilters.push(Address.fromRaw(value, []).asFilter())
} else {
ids.push(value)
}

BIN
yarn.lock

Binary file not shown.