forked from coracle/flotilla
rename conversations to rooms
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
# Flotilla
|
||||
|
||||
A discord-like nostr client. WIP.
|
||||
|
||||
Figure out state management. Add fetched_at to all events. `fetch` batches and loads, `get` gets the value, `derive` returns a store. For optimization, create getters for everything that uses `get` a lot.
|
||||
|
||||
+13
-13
@@ -669,36 +669,36 @@ export const groupMessages = deriveEventsMapped<GroupMessage>(repository, {
|
||||
itemToEvent: item => item.event,
|
||||
})
|
||||
|
||||
// Group Conversations
|
||||
// Group Chats
|
||||
|
||||
export type GroupConversation = {
|
||||
export type GroupChat = {
|
||||
nom: string
|
||||
messages: GroupMessage[]
|
||||
}
|
||||
|
||||
export const groupConversations = derived(groupMessages, $groupMessages => {
|
||||
export const groupChats = derived(groupMessages, $groupMessages => {
|
||||
const groupMessagesByNom = groupBy($groupMessage => $groupMessage.nom, $groupMessages)
|
||||
|
||||
return Array.from(groupMessagesByNom.entries()).map(([nom, messages]) => ({nom, messages}))
|
||||
})
|
||||
|
||||
export const {
|
||||
indexStore: groupConversationByNom,
|
||||
getIndex: getGroupConversationsByNom,
|
||||
deriveItem: deriveGroupConversation,
|
||||
loadItem: loadGroupConversation,
|
||||
indexStore: groupChatByNom,
|
||||
getIndex: getGroupChatsByNom,
|
||||
deriveItem: deriveGroupChat,
|
||||
loadItem: loadGroupChat,
|
||||
} = createCollection({
|
||||
name: "groupConversations",
|
||||
store: groupConversations,
|
||||
getKey: groupConversation => groupConversation.nom,
|
||||
name: "groupChats",
|
||||
store: groupChats,
|
||||
getKey: groupChat => groupChat.nom,
|
||||
load: (nom: string, hints = [], request: Partial<SubscribeRequest> = {}) => {
|
||||
const relays = [...hints, ...(get(relayUrlsByNom).get(nom) || [])]
|
||||
const conversation = get(groupConversations).find(c => c.nom === nom)
|
||||
const timestamps = conversation?.messages.map(m => m.event.created_at) || []
|
||||
const chat = get(groupChats).find(c => c.nom === nom)
|
||||
const timestamps = chat?.messages.map(m => m.event.created_at) || []
|
||||
const since = Math.max(0, max(timestamps) - 3600)
|
||||
|
||||
if (relays.length === 0) {
|
||||
console.warn(`Attempted to load conversation for ${nom} with no qualified groups`)
|
||||
console.warn(`Attempted to load chat for ${nom} with no qualified groups`)
|
||||
}
|
||||
|
||||
return load({...request, relays, filters: [{"#h": [nom], since}]})
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
</div>
|
||||
<div in:fly={{delay: 150}}>
|
||||
<SecondaryNavHeader>
|
||||
Conversations
|
||||
Chats
|
||||
<div class="cursor-pointer">
|
||||
<Icon icon="add-circle" />
|
||||
</div>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
import Spinner from "@lib/components/Spinner.svelte"
|
||||
import GroupNote from "@app/components/GroupNote.svelte"
|
||||
import GroupCompose from "@app/components/GroupCompose.svelte"
|
||||
import {deriveGroupConversation} from "@app/state"
|
||||
import {deriveGroupChat} from "@app/state"
|
||||
|
||||
const {nom} = $page.params
|
||||
const conversation = deriveGroupConversation(nom)
|
||||
const chat = deriveGroupChat(nom)
|
||||
|
||||
const assertEvent = (e: any) => e as TrustedEvent
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
let previousDate
|
||||
let previousPubkey
|
||||
|
||||
for (const {event} of sortBy(m => m.event.created_at, $conversation?.messages || [])) {
|
||||
for (const {event} of sortBy(m => m.event.created_at, $chat?.messages || [])) {
|
||||
const {id, pubkey, created_at} = event
|
||||
const date = formatTimestampAsDate(created_at)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user