fix ordering on search, copy note

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin
2022-05-09 12:09:51 -07:00
parent cac139fff1
commit bd49c8a9d1
5 changed files with 22 additions and 5 deletions

View File

@@ -41,7 +41,7 @@ class SearchModel: ObservableObject {
return
}
if insert_uniq_sorted_event(events: &self.events, new_ev: ev) {
if insert_uniq_sorted_event(events: &self.events, new_ev: ev, cmp: { $0.created_at > $1.created_at } ) {
objectWillChange.send()
}
}

View File

@@ -140,7 +140,7 @@ class ThreadModel: ObservableObject {
self.replies.add(id: ev.id, reply_id: reply.ref_id)
}
if insert_uniq_sorted_event(events: &self.events, new_ev: ev) {
if insert_uniq_sorted_event(events: &self.events, new_ev: ev, cmp: { $0.created_at < $1.created_at }) {
objectWillChange.send()
}
//self.events.append(ev)

View File

@@ -354,3 +354,14 @@ func gather_reply_ids(our_pubkey: String, from: NostrEvent) -> [ReferencedId] {
}
return ids
}
func event_to_json(ev: NostrEvent) -> String {
let encoder = JSONEncoder()
guard let res = try? encoder.encode(ev) else {
return "{}"
}
guard let str = String(data: res, encoding: .utf8) else {
return "{}"
}
return str
}

View File

@@ -8,7 +8,7 @@
import Foundation
func insert_uniq_sorted_event(events: inout [NostrEvent], new_ev: NostrEvent) -> Bool {
func insert_uniq_sorted_event(events: inout [NostrEvent], new_ev: NostrEvent, cmp: (NostrEvent, NostrEvent) -> Bool) -> Bool {
var i: Int = 0
for event in events {
@@ -17,7 +17,7 @@ func insert_uniq_sorted_event(events: inout [NostrEvent], new_ev: NostrEvent) ->
return false
}
if new_ev.created_at < event.created_at {
if cmp(new_ev, event) {
events.insert(new_ev, at: i)
return true
}

View File

@@ -95,7 +95,7 @@ struct EventView: View {
Button {
UIPasteboard.general.string = event.content
} label: {
Label("Copy", systemImage: "doc.on.doc")
Label("Copy Text", systemImage: "doc.on.doc")
}
Button {
@@ -104,6 +104,12 @@ struct EventView: View {
Label("Copy ID", systemImage: "tag")
}
Button {
UIPasteboard.general.string = event_to_json(ev: event)
} label: {
Label("Copy Note", systemImage: "note")
}
Button {
NotificationCenter.default.post(name: .broadcast_event, object: event)
} label: {