Add partial support for different repost variants

Changelog-Added: Add partial support for different repost variants
This commit is contained in:
William Casarin
2023-04-22 12:10:57 -07:00
parent f14ba7cce4
commit fd8ad494e9
7 changed files with 33 additions and 25 deletions

View File

@@ -111,14 +111,22 @@ class NostrEvent: Codable, Identifiable, CustomStringConvertible, Equatable, Has
return parse_mentions(content: content, tags: self.tags)
}
lazy var inner_event: NostrEvent? = {
// don't try to deserialize an inner event if we know there won't be one
if self.known_kind == .boost {
return event_from_json(dat: self.content)
}
return nil
private lazy var inner_event: NostrEvent? = {
return event_from_json(dat: self.content)
}()
func get_inner_event(cache: EventCache) -> NostrEvent? {
guard self.known_kind == .boost else {
return nil
}
if self.content == "", let ref = self.referenced_ids.first {
return cache.lookup(ref.ref_id)
}
return self.inner_event
}
private var _event_refs: [EventRef]? = nil
func event_refs(_ privkey: String?) -> [EventRef] {
if let rs = _event_refs {
@@ -998,8 +1006,8 @@ func last_etag(tags: [[String]]) -> String? {
return e
}
func inner_event_or_self(ev: NostrEvent) -> NostrEvent {
guard let inner_ev = ev.inner_event else {
func inner_event_or_self(ev: NostrEvent, cache: EventCache) -> NostrEvent {
guard let inner_ev = ev.get_inner_event(cache: cache) else {
return ev
}