fix: Resolve API mismatches after merge with upstream
- Fix import paths to use desktop.subscriptions instead of commons.subscriptions - Update DesktopLocalCache to match ICacheProvider interface changes - Use correct commons.relayClient paths for ComposeSubscriptionManager - Add missing justConsumeMyOwnEvent and getOrCreateAddressableNote methods Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -29,6 +29,7 @@ import com.vitorpamplona.amethyst.commons.model.emphChat.EphemeralChatChannel
|
|||||||
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel
|
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel
|
||||||
import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActivitiesChannel
|
import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActivitiesChannel
|
||||||
import com.vitorpamplona.amethyst.commons.model.privateChats.ChatroomList
|
import com.vitorpamplona.amethyst.commons.model.privateChats.ChatroomList
|
||||||
|
import com.vitorpamplona.amethyst.commons.services.nwc.NwcPaymentTracker
|
||||||
import com.vitorpamplona.amethyst.isDebug
|
import com.vitorpamplona.amethyst.isDebug
|
||||||
import com.vitorpamplona.amethyst.model.nip51Lists.HiddenUsersState
|
import com.vitorpamplona.amethyst.model.nip51Lists.HiddenUsersState
|
||||||
import com.vitorpamplona.amethyst.model.observables.LatestByKindAndAuthor
|
import com.vitorpamplona.amethyst.model.observables.LatestByKindAndAuthor
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@
|
|||||||
package com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel
|
package com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel
|
||||||
|
|
||||||
import com.vitorpamplona.amethyst.commons.model.Channel
|
import com.vitorpamplona.amethyst.commons.model.Channel
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager
|
import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.mixChatsLive.ChannelMetadataAndLiveActivityWatcherSubAssembler
|
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.mixChatsLive.ChannelMetadataAndLiveActivityWatcherSubAssembler
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip28PublicChats.ChannelLoaderSubAssembler
|
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip28PublicChats.ChannelLoaderSubAssembler
|
||||||
import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient
|
import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import com.vitorpamplona.amethyst.commons.model.Channel
|
import com.vitorpamplona.amethyst.commons.model.Channel
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.KeyDataSourceSubscription
|
import com.vitorpamplona.amethyst.commons.relayClient.subscriptions.KeyDataSourceSubscription
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ package com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.mixCha
|
|||||||
|
|
||||||
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel
|
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel
|
||||||
import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActivitiesChannel
|
import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActivitiesChannel
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.SingleSubEoseManager
|
import com.vitorpamplona.amethyst.commons.relayClient.eoseManagers.SingleSubEoseManager
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.ChannelFinderQueryState
|
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.ChannelFinderQueryState
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip28PublicChats.filterChannelMetadataUpdatesById
|
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip28PublicChats.filterChannelMetadataUpdatesById
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip53LiveActivities.filterLiveStreamUpdatesByAddress
|
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip53LiveActivities.filterLiveStreamUpdatesByAddress
|
||||||
|
|||||||
+1
-1
@@ -21,8 +21,8 @@
|
|||||||
package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource
|
package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource
|
||||||
|
|
||||||
import com.vitorpamplona.amethyst.commons.model.Channel
|
import com.vitorpamplona.amethyst.commons.model.Channel
|
||||||
|
import com.vitorpamplona.amethyst.commons.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager
|
||||||
import com.vitorpamplona.amethyst.model.Account
|
import com.vitorpamplona.amethyst.model.Account
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.composeSubscriptionManagers.ComposeSubscriptionManager
|
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource.subassemblies.ChannelFromUserFilterSubAssembler
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource.subassemblies.ChannelFromUserFilterSubAssembler
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource.subassemblies.ChannelPublicFilterSubAssembler
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datasource.subassemblies.ChannelPublicFilterSubAssembler
|
||||||
import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient
|
import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.datas
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import com.vitorpamplona.amethyst.commons.model.Channel
|
import com.vitorpamplona.amethyst.commons.model.Channel
|
||||||
import com.vitorpamplona.amethyst.service.relayClient.KeyDataSourceSubscription
|
import com.vitorpamplona.amethyst.commons.relayClient.subscriptions.KeyDataSourceSubscription
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.vitorpamplona.amethyst.desktop
|
package com.vitorpamplona.amethyst.desktop
|
||||||
|
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.FeedMode
|
import com.vitorpamplona.amethyst.desktop.subscriptions.FeedMode
|
||||||
import java.util.prefs.Preferences
|
import java.util.prefs.Preferences
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Vendored
+23
-6
@@ -20,12 +20,15 @@
|
|||||||
*/
|
*/
|
||||||
package com.vitorpamplona.amethyst.desktop.cache
|
package com.vitorpamplona.amethyst.desktop.cache
|
||||||
|
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.AddressableNote
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.Channel
|
||||||
import com.vitorpamplona.amethyst.commons.model.Note
|
import com.vitorpamplona.amethyst.commons.model.Note
|
||||||
import com.vitorpamplona.amethyst.commons.model.User
|
import com.vitorpamplona.amethyst.commons.model.User
|
||||||
import com.vitorpamplona.amethyst.commons.model.cache.ICacheEventStream
|
import com.vitorpamplona.amethyst.commons.model.cache.ICacheEventStream
|
||||||
import com.vitorpamplona.amethyst.commons.model.cache.ICacheProvider
|
import com.vitorpamplona.amethyst.commons.model.cache.ICacheProvider
|
||||||
import com.vitorpamplona.amethyst.commons.model.cache.IChannel
|
|
||||||
import com.vitorpamplona.amethyst.commons.services.nwc.NwcPaymentTracker
|
import com.vitorpamplona.amethyst.commons.services.nwc.NwcPaymentTracker
|
||||||
|
import com.vitorpamplona.quartz.nip01Core.core.Address
|
||||||
|
import com.vitorpamplona.quartz.nip01Core.core.Event
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||||
import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent
|
import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent
|
||||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
||||||
@@ -48,6 +51,7 @@ import java.util.concurrent.ConcurrentHashMap
|
|||||||
class DesktopLocalCache : ICacheProvider {
|
class DesktopLocalCache : ICacheProvider {
|
||||||
private val users = ConcurrentHashMap<HexKey, User>()
|
private val users = ConcurrentHashMap<HexKey, User>()
|
||||||
private val notes = ConcurrentHashMap<HexKey, Note>()
|
private val notes = ConcurrentHashMap<HexKey, Note>()
|
||||||
|
private val addressableNotes = ConcurrentHashMap<String, AddressableNote>()
|
||||||
private val deletedEvents = ConcurrentHashMap.newKeySet<HexKey>()
|
private val deletedEvents = ConcurrentHashMap.newKeySet<HexKey>()
|
||||||
|
|
||||||
private val eventStream = DesktopCacheEventStream()
|
private val eventStream = DesktopCacheEventStream()
|
||||||
@@ -63,10 +67,10 @@ class DesktopLocalCache : ICacheProvider {
|
|||||||
// Create placeholder notes for relay lists
|
// Create placeholder notes for relay lists
|
||||||
val nip65Note = getOrCreateNote("nip65:$pubkey")
|
val nip65Note = getOrCreateNote("nip65:$pubkey")
|
||||||
val dmNote = getOrCreateNote("dm:$pubkey")
|
val dmNote = getOrCreateNote("dm:$pubkey")
|
||||||
User(pubkey, nip65Note, dmNote, this)
|
User(pubkey, nip65Note, dmNote)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun countUsers(predicate: (String, Any) -> Boolean): Int = users.count { (key, user) -> predicate(key, user) }
|
override fun countUsers(predicate: (String, User) -> Boolean): Int = users.count { (key, user) -> predicate(key, user) }
|
||||||
|
|
||||||
override fun findUsersStartingWith(
|
override fun findUsersStartingWith(
|
||||||
prefix: String,
|
prefix: String,
|
||||||
@@ -188,12 +192,17 @@ class DesktopLocalCache : ICacheProvider {
|
|||||||
|
|
||||||
fun getOrCreateNote(hexKey: HexKey): Note =
|
fun getOrCreateNote(hexKey: HexKey): Note =
|
||||||
notes.getOrPut(hexKey) {
|
notes.getOrPut(hexKey) {
|
||||||
Note(hexKey, this)
|
Note(hexKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getOrCreateAddressableNote(key: Address): AddressableNote =
|
||||||
|
addressableNotes.getOrPut(key.toValue()) {
|
||||||
|
AddressableNote(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----- Channel operations -----
|
// ----- Channel operations -----
|
||||||
|
|
||||||
override fun getAnyChannel(note: Any?): IChannel? {
|
override fun getAnyChannel(note: Note): Channel? {
|
||||||
// Desktop doesn't support channels yet
|
// Desktop doesn't support channels yet
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@@ -203,7 +212,7 @@ class DesktopLocalCache : ICacheProvider {
|
|||||||
override fun hasBeenDeleted(event: Any): Boolean =
|
override fun hasBeenDeleted(event: Any): Boolean =
|
||||||
when (event) {
|
when (event) {
|
||||||
is Note -> deletedEvents.contains(event.idHex)
|
is Note -> deletedEvents.contains(event.idHex)
|
||||||
is com.vitorpamplona.quartz.nip01Core.core.Event -> deletedEvents.contains(event.id)
|
is Event -> deletedEvents.contains(event.id)
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,6 +220,13 @@ class DesktopLocalCache : ICacheProvider {
|
|||||||
deletedEvents.add(eventId)
|
deletedEvents.add(eventId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----- Own event consumption -----
|
||||||
|
|
||||||
|
override fun justConsumeMyOwnEvent(event: Event): Boolean {
|
||||||
|
// Desktop doesn't track own events separately
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// ----- Event stream -----
|
// ----- Event stream -----
|
||||||
|
|
||||||
override fun getEventStream(): ICacheEventStream = eventStream
|
override fun getEventStream(): ICacheEventStream = eventStream
|
||||||
@@ -238,6 +254,7 @@ class DesktopLocalCache : ICacheProvider {
|
|||||||
fun clear() {
|
fun clear() {
|
||||||
users.clear()
|
users.clear()
|
||||||
notes.clear()
|
notes.clear()
|
||||||
|
addressableNotes.clear()
|
||||||
deletedEvents.clear()
|
deletedEvents.clear()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-6
@@ -44,18 +44,17 @@ import androidx.compose.runtime.setValue
|
|||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.vitorpamplona.amethyst.commons.account.AccountState
|
|
||||||
import com.vitorpamplona.amethyst.commons.state.EventCollectionState
|
import com.vitorpamplona.amethyst.commons.state.EventCollectionState
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.FilterBuilders
|
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.SubscriptionConfig
|
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.rememberSubscription
|
|
||||||
import com.vitorpamplona.amethyst.commons.ui.components.EmptyState
|
import com.vitorpamplona.amethyst.commons.ui.components.EmptyState
|
||||||
import com.vitorpamplona.amethyst.commons.ui.components.LoadingState
|
import com.vitorpamplona.amethyst.commons.ui.components.LoadingState
|
||||||
import com.vitorpamplona.amethyst.commons.ui.note.NoteCard
|
import com.vitorpamplona.amethyst.desktop.account.AccountState
|
||||||
import com.vitorpamplona.amethyst.commons.util.toNoteDisplayData
|
|
||||||
import com.vitorpamplona.amethyst.desktop.cache.DesktopLocalCache
|
import com.vitorpamplona.amethyst.desktop.cache.DesktopLocalCache
|
||||||
import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager
|
import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager
|
||||||
import com.vitorpamplona.amethyst.desktop.subscriptions.DesktopRelaySubscriptionsCoordinator
|
import com.vitorpamplona.amethyst.desktop.subscriptions.DesktopRelaySubscriptionsCoordinator
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.FilterBuilders
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.SubscriptionConfig
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.rememberSubscription
|
||||||
|
import com.vitorpamplona.amethyst.desktop.ui.note.NoteCard
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.Event
|
import com.vitorpamplona.quartz.nip01Core.core.Event
|
||||||
import com.vitorpamplona.quartz.nip51Lists.bookmarkList.BookmarkListEvent
|
import com.vitorpamplona.quartz.nip51Lists.bookmarkList.BookmarkListEvent
|
||||||
import com.vitorpamplona.quartz.nip51Lists.bookmarkList.tags.EventBookmark
|
import com.vitorpamplona.quartz.nip51Lists.bookmarkList.tags.EventBookmark
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager
|
|||||||
import com.vitorpamplona.amethyst.desktop.subscriptions.DesktopRelaySubscriptionsCoordinator
|
import com.vitorpamplona.amethyst.desktop.subscriptions.DesktopRelaySubscriptionsCoordinator
|
||||||
import com.vitorpamplona.amethyst.desktop.subscriptions.FeedMode
|
import com.vitorpamplona.amethyst.desktop.subscriptions.FeedMode
|
||||||
import com.vitorpamplona.amethyst.desktop.subscriptions.FilterBuilders
|
import com.vitorpamplona.amethyst.desktop.subscriptions.FilterBuilders
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.SubscriptionConfig
|
||||||
import com.vitorpamplona.amethyst.desktop.subscriptions.createBatchMetadataSubscription
|
import com.vitorpamplona.amethyst.desktop.subscriptions.createBatchMetadataSubscription
|
||||||
import com.vitorpamplona.amethyst.desktop.subscriptions.createContactListSubscription
|
import com.vitorpamplona.amethyst.desktop.subscriptions.createContactListSubscription
|
||||||
import com.vitorpamplona.amethyst.desktop.subscriptions.createFollowingFeedSubscription
|
import com.vitorpamplona.amethyst.desktop.subscriptions.createFollowingFeedSubscription
|
||||||
@@ -207,7 +208,7 @@ fun FeedScreen(
|
|||||||
rememberSubscription(relayStatuses, account, relayManager = relayManager) {
|
rememberSubscription(relayStatuses, account, relayManager = relayManager) {
|
||||||
val configuredRelays = relayStatuses.keys
|
val configuredRelays = relayStatuses.keys
|
||||||
if (configuredRelays.isNotEmpty() && account != null) {
|
if (configuredRelays.isNotEmpty() && account != null) {
|
||||||
com.vitorpamplona.amethyst.commons.subscriptions.SubscriptionConfig(
|
SubscriptionConfig(
|
||||||
subId = "bookmarks-${account.pubKeyHex.take(8)}",
|
subId = "bookmarks-${account.pubKeyHex.take(8)}",
|
||||||
filters =
|
filters =
|
||||||
listOf(
|
listOf(
|
||||||
|
|||||||
@@ -53,17 +53,17 @@ import androidx.compose.ui.Alignment
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.vitorpamplona.amethyst.commons.account.AccountState
|
|
||||||
import com.vitorpamplona.amethyst.commons.state.EventCollectionState
|
import com.vitorpamplona.amethyst.commons.state.EventCollectionState
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.FeedMode
|
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.createContactListSubscription
|
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.createFollowingLongFormFeedSubscription
|
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.createLongFormFeedSubscription
|
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.rememberSubscription
|
|
||||||
import com.vitorpamplona.amethyst.commons.ui.components.EmptyState
|
import com.vitorpamplona.amethyst.commons.ui.components.EmptyState
|
||||||
import com.vitorpamplona.amethyst.commons.ui.components.LoadingState
|
import com.vitorpamplona.amethyst.commons.ui.components.LoadingState
|
||||||
|
import com.vitorpamplona.amethyst.desktop.account.AccountState
|
||||||
import com.vitorpamplona.amethyst.desktop.cache.DesktopLocalCache
|
import com.vitorpamplona.amethyst.desktop.cache.DesktopLocalCache
|
||||||
import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager
|
import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.FeedMode
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.createContactListSubscription
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.createFollowingLongFormFeedSubscription
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.createLongFormFeedSubscription
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.rememberSubscription
|
||||||
import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent
|
import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent
|
||||||
import com.vitorpamplona.quartz.nip23LongContent.LongTextNoteEvent
|
import com.vitorpamplona.quartz.nip23LongContent.LongTextNoteEvent
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
|
|||||||
@@ -62,14 +62,14 @@ import androidx.compose.ui.focus.focusRequester
|
|||||||
import androidx.compose.ui.text.font.FontFamily
|
import androidx.compose.ui.text.font.FontFamily
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.vitorpamplona.amethyst.commons.search.SearchResult
|
import com.vitorpamplona.amethyst.commons.search.SearchResult
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.createMetadataSubscription
|
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.createSearchPeopleSubscription
|
|
||||||
import com.vitorpamplona.amethyst.commons.subscriptions.rememberSubscription
|
|
||||||
import com.vitorpamplona.amethyst.commons.ui.components.UserSearchCard
|
import com.vitorpamplona.amethyst.commons.ui.components.UserSearchCard
|
||||||
import com.vitorpamplona.amethyst.commons.viewmodels.SearchBarState
|
import com.vitorpamplona.amethyst.commons.viewmodels.SearchBarState
|
||||||
import com.vitorpamplona.amethyst.desktop.cache.DesktopLocalCache
|
import com.vitorpamplona.amethyst.desktop.cache.DesktopLocalCache
|
||||||
import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager
|
import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager
|
||||||
import com.vitorpamplona.amethyst.desktop.subscriptions.DesktopRelaySubscriptionsCoordinator
|
import com.vitorpamplona.amethyst.desktop.subscriptions.DesktopRelaySubscriptionsCoordinator
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.createMetadataSubscription
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.createSearchPeopleSubscription
|
||||||
|
import com.vitorpamplona.amethyst.desktop.subscriptions.rememberSubscription
|
||||||
import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent
|
import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent
|
||||||
import com.vitorpamplona.quartz.nip19Bech32.decodePublicKeyAsHexOrNull
|
import com.vitorpamplona.quartz.nip19Bech32.decodePublicKeyAsHexOrNull
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user