replace RelayMetadatas with RelayModelCache in DamusState
Signed-off-by: Bryan Montz <bryanmontz@me.com> Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
committed by
William Casarin
parent
f619fef410
commit
51d71f11c1
@@ -254,7 +254,6 @@
|
|||||||
4CE6DF0427F7A08200C66700 /* damusUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE6DF0327F7A08200C66700 /* damusUITestsLaunchTests.swift */; };
|
4CE6DF0427F7A08200C66700 /* damusUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE6DF0327F7A08200C66700 /* damusUITestsLaunchTests.swift */; };
|
||||||
4CE6DF1627F8DEBF00C66700 /* RelayConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE6DF1527F8DEBF00C66700 /* RelayConnection.swift */; };
|
4CE6DF1627F8DEBF00C66700 /* RelayConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE6DF1527F8DEBF00C66700 /* RelayConnection.swift */; };
|
||||||
4CE8794829941DA700F758CC /* RelayFilters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8794729941DA700F758CC /* RelayFilters.swift */; };
|
4CE8794829941DA700F758CC /* RelayFilters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8794729941DA700F758CC /* RelayFilters.swift */; };
|
||||||
4CE8794C2995B59E00F758CC /* RelayMetadatas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8794B2995B59E00F758CC /* RelayMetadatas.swift */; };
|
|
||||||
4CE8794E2996B16A00F758CC /* RelayToggle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8794D2996B16A00F758CC /* RelayToggle.swift */; };
|
4CE8794E2996B16A00F758CC /* RelayToggle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8794D2996B16A00F758CC /* RelayToggle.swift */; };
|
||||||
4CE879502996B2BD00F758CC /* RelayStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8794F2996B2BD00F758CC /* RelayStatusView.swift */; };
|
4CE879502996B2BD00F758CC /* RelayStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8794F2996B2BD00F758CC /* RelayStatusView.swift */; };
|
||||||
4CE879522996B68900F758CC /* RelayType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE879512996B68900F758CC /* RelayType.swift */; };
|
4CE879522996B68900F758CC /* RelayType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE879512996B68900F758CC /* RelayType.swift */; };
|
||||||
@@ -726,7 +725,6 @@
|
|||||||
4CE6DF0327F7A08200C66700 /* damusUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = damusUITestsLaunchTests.swift; sourceTree = "<group>"; };
|
4CE6DF0327F7A08200C66700 /* damusUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = damusUITestsLaunchTests.swift; sourceTree = "<group>"; };
|
||||||
4CE6DF1527F8DEBF00C66700 /* RelayConnection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayConnection.swift; sourceTree = "<group>"; };
|
4CE6DF1527F8DEBF00C66700 /* RelayConnection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayConnection.swift; sourceTree = "<group>"; };
|
||||||
4CE8794729941DA700F758CC /* RelayFilters.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayFilters.swift; sourceTree = "<group>"; };
|
4CE8794729941DA700F758CC /* RelayFilters.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayFilters.swift; sourceTree = "<group>"; };
|
||||||
4CE8794B2995B59E00F758CC /* RelayMetadatas.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayMetadatas.swift; sourceTree = "<group>"; };
|
|
||||||
4CE8794D2996B16A00F758CC /* RelayToggle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayToggle.swift; sourceTree = "<group>"; };
|
4CE8794D2996B16A00F758CC /* RelayToggle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayToggle.swift; sourceTree = "<group>"; };
|
||||||
4CE8794F2996B2BD00F758CC /* RelayStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayStatusView.swift; sourceTree = "<group>"; };
|
4CE8794F2996B2BD00F758CC /* RelayStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayStatusView.swift; sourceTree = "<group>"; };
|
||||||
4CE879512996B68900F758CC /* RelayType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayType.swift; sourceTree = "<group>"; };
|
4CE879512996B68900F758CC /* RelayType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayType.swift; sourceTree = "<group>"; };
|
||||||
@@ -1480,7 +1478,6 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
4CE8794729941DA700F758CC /* RelayFilters.swift */,
|
4CE8794729941DA700F758CC /* RelayFilters.swift */,
|
||||||
4CE8794B2995B59E00F758CC /* RelayMetadatas.swift */,
|
|
||||||
504323A82A3495B6006AE6DC /* RelayModelCache.swift */,
|
504323A82A3495B6006AE6DC /* RelayModelCache.swift */,
|
||||||
4CC6193929DC777C006A86D1 /* RelayBootstrap.swift */,
|
4CC6193929DC777C006A86D1 /* RelayBootstrap.swift */,
|
||||||
504323A62A34915F006AE6DC /* RelayModel.swift */,
|
504323A62A34915F006AE6DC /* RelayModel.swift */,
|
||||||
@@ -1778,7 +1775,6 @@
|
|||||||
4C64987C286D03E000EAE2B3 /* DirectMessagesView.swift in Sources */,
|
4C64987C286D03E000EAE2B3 /* DirectMessagesView.swift in Sources */,
|
||||||
7C902AE32981D55B002AB16E /* ZoomableScrollView.swift in Sources */,
|
7C902AE32981D55B002AB16E /* ZoomableScrollView.swift in Sources */,
|
||||||
4C190F252A547D2000027FD5 /* LoadScript.swift in Sources */,
|
4C190F252A547D2000027FD5 /* LoadScript.swift in Sources */,
|
||||||
4CE8794C2995B59E00F758CC /* RelayMetadatas.swift in Sources */,
|
|
||||||
4C363A8C28236B92006E126D /* PubkeyView.swift in Sources */,
|
4C363A8C28236B92006E126D /* PubkeyView.swift in Sources */,
|
||||||
4CDA128A29E9D10C0006FA5A /* SignalView.swift in Sources */,
|
4CDA128A29E9D10C0006FA5A /* SignalView.swift in Sources */,
|
||||||
4C5C7E68284ED36500A22DF5 /* SearchHomeModel.swift in Sources */,
|
4C5C7E68284ED36500A22DF5 /* SearchHomeModel.swift in Sources */,
|
||||||
|
|||||||
@@ -609,7 +609,7 @@ struct ContentView: View {
|
|||||||
|
|
||||||
func connect() {
|
func connect() {
|
||||||
let pool = RelayPool()
|
let pool = RelayPool()
|
||||||
let metadatas = RelayMetadatas()
|
let model_cache = RelayModelCache()
|
||||||
let relay_filters = RelayFilters(our_pubkey: pubkey)
|
let relay_filters = RelayFilters(our_pubkey: pubkey)
|
||||||
let bootstrap_relays = load_bootstrap_relays(pubkey: pubkey)
|
let bootstrap_relays = load_bootstrap_relays(pubkey: pubkey)
|
||||||
|
|
||||||
@@ -617,7 +617,7 @@ struct ContentView: View {
|
|||||||
for relay in bootstrap_relays {
|
for relay in bootstrap_relays {
|
||||||
if let url = RelayURL(relay) {
|
if let url = RelayURL(relay) {
|
||||||
let descriptor = RelayDescriptor(url: url, info: .rw)
|
let descriptor = RelayDescriptor(url: url, info: .rw)
|
||||||
add_new_relay(relay_filters: relay_filters, metadatas: metadatas, pool: pool, descriptor: descriptor, new_relay_filters: new_relay_filters)
|
add_new_relay(model_cache: model_cache, relay_filters: relay_filters, pool: pool, descriptor: descriptor, new_relay_filters: new_relay_filters)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -646,7 +646,7 @@ struct ContentView: View {
|
|||||||
lnurls: LNUrls(),
|
lnurls: LNUrls(),
|
||||||
settings: settings,
|
settings: settings,
|
||||||
relay_filters: relay_filters,
|
relay_filters: relay_filters,
|
||||||
relay_metadata: metadatas,
|
relay_model_cache: model_cache,
|
||||||
drafts: Drafts(),
|
drafts: Drafts(),
|
||||||
events: EventCache(),
|
events: EventCache(),
|
||||||
bookmarks: BookmarksManager(pubkey: pubkey),
|
bookmarks: BookmarksManager(pubkey: pubkey),
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ struct DamusState {
|
|||||||
let lnurls: LNUrls
|
let lnurls: LNUrls
|
||||||
let settings: UserSettingsStore
|
let settings: UserSettingsStore
|
||||||
let relay_filters: RelayFilters
|
let relay_filters: RelayFilters
|
||||||
let relay_metadata: RelayMetadatas
|
let relay_model_cache: RelayModelCache
|
||||||
let drafts: Drafts
|
let drafts: Drafts
|
||||||
let events: EventCache
|
let events: EventCache
|
||||||
let bookmarks: BookmarksManager
|
let bookmarks: BookmarksManager
|
||||||
@@ -60,5 +60,5 @@ struct DamusState {
|
|||||||
|
|
||||||
static var empty: DamusState {
|
static var empty: DamusState {
|
||||||
let user_search_cache = UserSearchCache()
|
let user_search_cache = UserSearchCache()
|
||||||
return DamusState.init(pool: RelayPool(), keypair: Keypair(pubkey: "", privkey: ""), likes: EventCounter(our_pubkey: ""), boosts: EventCounter(our_pubkey: ""), contacts: Contacts(our_pubkey: ""), profiles: Profiles(user_search_cache: user_search_cache), dms: DirectMessagesModel(our_pubkey: ""), previews: PreviewCache(), zaps: Zaps(our_pubkey: ""), lnurls: LNUrls(), settings: UserSettingsStore(), relay_filters: RelayFilters(our_pubkey: ""), relay_metadata: RelayMetadatas(), drafts: Drafts(), events: EventCache(), bookmarks: BookmarksManager(pubkey: ""), postbox: PostBox(pool: RelayPool()), bootstrap_relays: [], replies: ReplyCounter(our_pubkey: ""), muted_threads: MutedThreadsManager(keypair: Keypair(pubkey: "", privkey: nil)), wallet: WalletModel(settings: UserSettingsStore()), nav: NavigationCoordinator(), user_search_cache: user_search_cache) }
|
return DamusState.init(pool: RelayPool(), keypair: Keypair(pubkey: "", privkey: ""), likes: EventCounter(our_pubkey: ""), boosts: EventCounter(our_pubkey: ""), contacts: Contacts(our_pubkey: ""), profiles: Profiles(user_search_cache: user_search_cache), dms: DirectMessagesModel(our_pubkey: ""), previews: PreviewCache(), zaps: Zaps(our_pubkey: ""), lnurls: LNUrls(), settings: UserSettingsStore(), relay_filters: RelayFilters(our_pubkey: ""), relay_model_cache: RelayModelCache(), drafts: Drafts(), events: EventCache(), bookmarks: BookmarksManager(pubkey: ""), postbox: PostBox(pool: RelayPool()), bootstrap_relays: [], replies: ReplyCounter(our_pubkey: ""), muted_threads: MutedThreadsManager(keypair: Keypair(pubkey: "", privkey: nil)), wallet: WalletModel(settings: UserSettingsStore()), nav: NavigationCoordinator(), user_search_cache: user_search_cache) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -857,7 +857,7 @@ func load_our_relays(state: DamusState, m_old_ev: NostrEvent?, ev: NostrEvent) {
|
|||||||
if new.contains(d) {
|
if new.contains(d) {
|
||||||
if let url = RelayURL(d) {
|
if let url = RelayURL(d) {
|
||||||
let descriptor = RelayDescriptor(url: url, info: decoded[d] ?? .rw)
|
let descriptor = RelayDescriptor(url: url, info: decoded[d] ?? .rw)
|
||||||
add_new_relay(relay_filters: state.relay_filters, metadatas: state.relay_metadata, pool: state.pool, descriptor: descriptor, new_relay_filters: new_relay_filters)
|
add_new_relay(model_cache: state.relay_model_cache, relay_filters: state.relay_filters, pool: state.pool, descriptor: descriptor, new_relay_filters: new_relay_filters)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
state.pool.remove_relay(d)
|
state.pool.remove_relay(d)
|
||||||
@@ -871,12 +871,12 @@ func load_our_relays(state: DamusState, m_old_ev: NostrEvent?, ev: NostrEvent) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func add_new_relay(relay_filters: RelayFilters, metadatas: RelayMetadatas, pool: RelayPool, descriptor: RelayDescriptor, new_relay_filters: Bool) {
|
func add_new_relay(model_cache: RelayModelCache, relay_filters: RelayFilters, pool: RelayPool, descriptor: RelayDescriptor, new_relay_filters: Bool) {
|
||||||
try? pool.add_relay(descriptor)
|
try? pool.add_relay(descriptor)
|
||||||
let url = descriptor.url
|
let url = descriptor.url
|
||||||
|
|
||||||
let relay_id = url.id
|
let relay_id = url.id
|
||||||
guard metadatas.lookup(relay_id: relay_id) == nil else {
|
guard model_cache.model(withURL: url) == nil else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -885,8 +885,10 @@ func add_new_relay(relay_filters: RelayFilters, metadatas: RelayMetadatas, pool:
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
DispatchQueue.main.async {
|
await MainActor.run {
|
||||||
metadatas.insert(relay_id: relay_id, metadata: meta)
|
let model = RelayModel(url, metadata: meta)
|
||||||
|
model_cache.insert(model: model)
|
||||||
|
pool.setLog(model.log, for: relay_id)
|
||||||
|
|
||||||
// if this is the first time adding filters, we should filter non-paid relays
|
// if this is the first time adding filters, we should filter non-paid relays
|
||||||
if new_relay_filters && !meta.is_paid {
|
if new_relay_filters && !meta.is_paid {
|
||||||
|
|||||||
@@ -114,8 +114,13 @@ class RelayPool {
|
|||||||
}
|
}
|
||||||
let relay = Relay(descriptor: desc, connection: conn)
|
let relay = Relay(descriptor: desc, connection: conn)
|
||||||
self.relays.append(relay)
|
self.relays.append(relay)
|
||||||
|
}
|
||||||
|
|
||||||
relay.connection.log.add("Network state: \(network_monitor.currentPath.status)")
|
func setLog(_ log: RelayLog, for relay_id: String) {
|
||||||
|
// add the current network state to the log
|
||||||
|
log.add("Network state: \(network_monitor.currentPath.status)")
|
||||||
|
|
||||||
|
get_relay(relay_id)?.connection.log = log
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This is used to retry dead connections
|
/// This is used to retry dead connections
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
//
|
|
||||||
// RelayMetadatas.swift
|
|
||||||
// damus
|
|
||||||
//
|
|
||||||
// Created by William Casarin on 2023-02-09.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
|
|
||||||
class RelayMetadatas {
|
|
||||||
private var metadata: [String: RelayMetadata] = [:]
|
|
||||||
|
|
||||||
func lookup(relay_id: String) -> RelayMetadata? {
|
|
||||||
return metadata[relay_id]
|
|
||||||
}
|
|
||||||
|
|
||||||
func insert(relay_id: String, metadata: RelayMetadata) {
|
|
||||||
self.metadata[relay_id] = metadata
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -37,11 +37,11 @@ struct RecommendedRelayView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RelayType(is_paid: damus.relay_metadata.lookup(relay_id: relay)?.is_paid ?? false)
|
RelayType(is_paid: damus.relay_model_cache.model(with_relay_id: relay)?.metadata.is_paid ?? false)
|
||||||
|
|
||||||
Text(relay).layoutPriority(1)
|
Text(relay).layoutPriority(1)
|
||||||
|
|
||||||
if let meta = damus.relay_metadata.lookup(relay_id: relay) {
|
if let meta = damus.relay_model_cache.model(with_relay_id: relay)?.metadata {
|
||||||
NavigationLink(value: Route.RelayDetail(relay: relay, metadata: meta)){
|
NavigationLink(value: Route.RelayDetail(relay: relay, metadata: meta)){
|
||||||
EmptyView()
|
EmptyView()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ struct RelayToggle: View {
|
|||||||
if let relay_connection {
|
if let relay_connection {
|
||||||
RelayStatusView(connection: relay_connection)
|
RelayStatusView(connection: relay_connection)
|
||||||
}
|
}
|
||||||
RelayType(is_paid: state.relay_metadata.lookup(relay_id: relay_id)?.is_paid ?? false)
|
RelayType(is_paid: state.relay_model_cache.model(with_relay_id: relay_id)?.metadata.is_paid ?? false)
|
||||||
Toggle(relay_id, isOn: toggle_binding(relay_id: relay_id))
|
Toggle(relay_id, isOn: toggle_binding(relay_id: relay_id))
|
||||||
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
|
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ struct RelayView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RelayType(is_paid: state.relay_metadata.lookup(relay_id: relay)?.is_paid ?? false)
|
RelayType(is_paid: state.relay_model_cache.model(with_relay_id: relay)?.metadata.is_paid ?? false)
|
||||||
|
|
||||||
if let meta = state.relay_metadata.lookup(relay_id: relay) {
|
if let meta = state.relay_model_cache.model(with_relay_id: relay)?.metadata {
|
||||||
Text(relay)
|
Text(relay)
|
||||||
.background(
|
.background(
|
||||||
NavigationLink(value: Route.RelayDetail(relay: relay, metadata: meta), label: {
|
NavigationLink(value: Route.RelayDetail(relay: relay, metadata: meta), label: {
|
||||||
|
|||||||
Reference in New Issue
Block a user