Use item components on recent page

This commit is contained in:
Jon Staab
2026-02-04 09:07:26 -08:00
parent 8793912b65
commit ec54a0dbce
4 changed files with 26 additions and 56 deletions
+12 -11
View File
@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import {onMount} from 'svelte' import {onMount} from "svelte"
import {setKey, popKey} from '@lib/implicit' import {setKey, popKey} from "@lib/implicit"
import {sleep} from "@welshman/lib" import {sleep} from "@welshman/lib"
import {ManagementMethod} from "@welshman/util" import {ManagementMethod} from "@welshman/util"
import {manageRelay} from "@welshman/app" import {manageRelay} from "@welshman/app"
@@ -81,16 +81,17 @@
const nonSpaceMembers = pubkeysSnapshot.filter(pubkey => !$spaceMembers.includes(pubkey)) const nonSpaceMembers = pubkeysSnapshot.filter(pubkey => !$spaceMembers.includes(pubkey))
if (nonSpaceMembers.length > 0) { if (nonSpaceMembers.length > 0) {
setKey('RoomMembersAdd.pubkeys', pubkeysSnapshot) setKey("RoomMembersAdd.pubkeys", pubkeysSnapshot)
pushModal(Confirm, { pushModal(Confirm, {
title: "New Space Members", title: "New Space Members",
subtitle: "Automatically add members to space", subtitle: "Automatically add members to space",
message: nonSpaceMembers.length === 1 message:
? `${displayProfileByPubkey(nonSpaceMembers[0])} is not a member of this space. Add them?` nonSpaceMembers.length === 1
: `${nonSpaceMembers.length} people are not members of this space. Add them?`, ? `${displayProfileByPubkey(nonSpaceMembers[0])} is not a member of this space. Add them?`
: `${nonSpaceMembers.length} people are not members of this space. Add them?`,
confirm: async () => { confirm: async () => {
setKey('RoomMembersAdd.confirm', true) setKey("RoomMembersAdd.confirm", true)
back() back()
}, },
}) })
@@ -100,12 +101,12 @@
} }
let loading = $state(false) let loading = $state(false)
let pubkeys: string[] = $state(popKey('RoomMembersAdd.pubkeys') || []) let pubkeys: string[] = $state(popKey("RoomMembersAdd.pubkeys") || [])
onMount(() => { onMount(() => {
console.log('=====') console.log("=====")
if (popKey('RoomMembersAdd.confirm')) { if (popKey("RoomMembersAdd.confirm")) {
console.log('hi') console.log("hi")
addMembers() addMembers()
} }
}) })
+1 -1
View File
@@ -1,5 +1,5 @@
import type {Component} from "svelte" import type {Component} from "svelte"
import {derived, writable} from "svelte/store" import {writable} from "svelte/store"
import {randomId, always, assoc, Emitter} from "@welshman/lib" import {randomId, always, assoc, Emitter} from "@welshman/lib"
import {deriveDeduplicated} from "@welshman/store" import {deriveDeduplicated} from "@welshman/store"
import {goto} from "$app/navigation" import {goto} from "$app/navigation"
@@ -18,7 +18,6 @@
import NoteContent from "@app/components/NoteContent.svelte" import NoteContent from "@app/components/NoteContent.svelte"
import NoteCard from "@app/components/NoteCard.svelte" import NoteCard from "@app/components/NoteCard.svelte"
import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte"
import GoalSummary from "@app/components/GoalSummary.svelte"
import GoalActions from "@app/components/GoalActions.svelte" import GoalActions from "@app/components/GoalActions.svelte"
import CommentActions from "@app/components/CommentActions.svelte" import CommentActions from "@app/components/CommentActions.svelte"
import EventReply from "@app/components/EventReply.svelte" import EventReply from "@app/components/EventReply.svelte"
@@ -86,7 +85,6 @@
<NoteCard event={$event} {url} class="card2 bg-alt z-feature w-full"> <NoteCard event={$event} {url} class="card2 bg-alt z-feature w-full">
<div class="col-3 ml-12"> <div class="col-3 ml-12">
<NoteContent showEntire event={{...$event, content: summary}} {url} /> <NoteContent showEntire event={{...$event, content: summary}} {url} />
<GoalSummary event={$event} {url} />
<GoalActions showRoom event={$event} {url} /> <GoalActions showRoom event={$event} {url} />
</div> </div>
</NoteCard> </NoteCard>
+13 -42
View File
@@ -10,7 +10,6 @@
ZAP_GOAL, ZAP_GOAL,
EVENT_TIME, EVENT_TIME,
COMMENT, COMMENT,
getAddress,
getTagValue, getTagValue,
getTagValues, getTagValues,
getIdAndAddress, getIdAndAddress,
@@ -18,23 +17,18 @@
import type {TrustedEvent} from "@welshman/util" import type {TrustedEvent} from "@welshman/util"
import {repository} from "@welshman/app" import {repository} from "@welshman/app"
import History from "@assets/icons/history.svg?dataurl" import History from "@assets/icons/history.svg?dataurl"
import AltArrowRight from "@assets/icons/alt-arrow-right.svg?dataurl"
import {createScroller} from "@lib/html" import {createScroller} from "@lib/html"
import Icon from "@lib/components/Icon.svelte" import Icon from "@lib/components/Icon.svelte"
import Link from "@lib/components/Link.svelte"
import PageBar from "@lib/components/PageBar.svelte" import PageBar from "@lib/components/PageBar.svelte"
import PageContent from "@lib/components/PageContent.svelte" import PageContent from "@lib/components/PageContent.svelte"
import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte"
import NoteItem from "@app/components/NoteItem.svelte" import NoteItem from "@app/components/NoteItem.svelte"
import ThreadItem from "@app/components/ThreadItem.svelte"
import ClassifiedItem from "@app/components/ClassifiedItem.svelte"
import GoalItem from "@app/components/GoalItem.svelte"
import CalendarEventItem from "@app/components/CalendarEventItem.svelte"
import RecentConversation from "@app/components/RecentConversation.svelte" import RecentConversation from "@app/components/RecentConversation.svelte"
import ClassifiedStatus from "@app/components/ClassifiedStatus.svelte"
import {decodeRelay, deriveEventsForUrl, CONTENT_KINDS} from "@app/core/state" import {decodeRelay, deriveEventsForUrl, CONTENT_KINDS} from "@app/core/state"
import {
makeThreadPath,
makeClassifiedPath,
makeCalendarPath,
makeGoalPath,
} from "@app/util/routes"
const url = decodeRelay($page.params.relay!) const url = decodeRelay($page.params.relay!)
const since = ago(MONTH) const since = ago(MONTH)
@@ -134,39 +128,16 @@
{#each $recentActivity.slice(0, limit) as { type, event, count = 0 } (event.id)} {#each $recentActivity.slice(0, limit) as { type, event, count = 0 } (event.id)}
{#if type === "message"} {#if type === "message"}
<RecentConversation {url} {event} {count} /> <RecentConversation {url} {event} {count} />
{:else if event.kind === THREAD}
<ThreadItem {url} {event} />
{:else if event.kind === CLASSIFIED}
<ClassifiedItem {url} {event} />
{:else if event.kind === ZAP_GOAL}
<GoalItem {url} {event} />
{:else if event.kind === EVENT_TIME}
<CalendarEventItem {url} {event} />
{:else} {:else}
<NoteItem {url} {event}> <NoteItem {url} {event} />
{#if event.kind === THREAD}
<Link
href={makeThreadPath(url, event.id)}
class="btn btn-primary btn-xs rounded-full">
View Thread
<Icon icon={AltArrowRight} />
</Link>
{:else if event.kind === CLASSIFIED}
<div class="flex gap-2">
<ClassifiedStatus {event} />
<Link
href={makeClassifiedPath(url, getAddress(event))}
class="btn btn-primary btn-xs rounded-full">
View Listing
<Icon icon={AltArrowRight} />
</Link>
</div>
{:else if event.kind === ZAP_GOAL}
<Link href={makeGoalPath(url, event.id)} class="btn btn-primary btn-xs rounded-full">
View Goal
<Icon icon={AltArrowRight} />
</Link>
{:else if event.kind === EVENT_TIME}
<Link
href={makeCalendarPath(url, getAddress(event))}
class="btn btn-primary btn-xs rounded-full">
View Event
<Icon icon={AltArrowRight} />
</Link>
{/if}
</NoteItem>
{/if} {/if}
{/each} {/each}
{/if} {/if}