damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

commit 754ee254e9cb914b51742ef8bef36400da1648fb
parent 963cb377629384db986b10d9d2967d7a27bdf446
Author: William Casarin <jb55@jb55.com>
Date:   Sun, 26 Mar 2023 09:35:53 -0600

Revert "Revert "New Timeline""

This reverts commit f5ed9cd5d4dbe7b184b5bf32d02a4a5a229b6fef.

Diffstat:
Mdamus.xcodeproj/project.pbxproj | 8++++++++
Mdamus/Components/ImageCarousel.swift | 9+++------
Mdamus/Components/Reposted.swift | 2--
Mdamus/Views/ChatView.swift | 2+-
Mdamus/Views/DMView.swift | 2+-
Mdamus/Views/EventView.swift | 14++------------
Mdamus/Views/Events/EmbeddedEventView.swift | 2+-
Mdamus/Views/Events/EventBody.swift | 12+++++-------
Mdamus/Views/Events/MutedEventView.swift | 2+-
Mdamus/Views/Events/SelectedEventView.swift | 8+++++---
Mdamus/Views/Events/TextEvent.swift | 171+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------
Adamus/Views/Events/WideEventView.swift | 22++++++++++++++++++++++
Mdamus/Views/NoteContentView.swift | 32++++++++++++++++++++++++--------
Adamus/Views/Reposts/RepostedEvent.swift | 37+++++++++++++++++++++++++++++++++++++
Mdamus/Views/Timeline/InnerTimelineView.swift | 4++--
15 files changed, 244 insertions(+), 83 deletions(-)

diff --git a/damus.xcodeproj/project.pbxproj b/damus.xcodeproj/project.pbxproj @@ -225,6 +225,8 @@ 4CFF8F6329CC9AD7008DB934 /* ImageContextMenuModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFF8F6229CC9AD7008DB934 /* ImageContextMenuModifier.swift */; }; 4CFF8F6729CC9E3A008DB934 /* ImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFF8F6629CC9E3A008DB934 /* ImageView.swift */; }; 4CFF8F6929CC9ED1008DB934 /* ImageContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFF8F6829CC9ED1008DB934 /* ImageContainerView.swift */; }; + 4CFF8F6B29CD0079008DB934 /* RepostedEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFF8F6A29CD0079008DB934 /* RepostedEvent.swift */; }; + 4CFF8F6D29CD022E008DB934 /* WideEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFF8F6C29CD022E008DB934 /* WideEventView.swift */; }; 4FE60CDD295E1C5E00105A1F /* Wallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FE60CDC295E1C5E00105A1F /* Wallet.swift */; }; 50A50A8D29A09E1C00C01BE7 /* RequestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A50A8C29A09E1C00C01BE7 /* RequestTests.swift */; }; 5C513FBA297F72980072348F /* CustomPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C513FB9297F72980072348F /* CustomPicker.swift */; }; @@ -601,6 +603,8 @@ 4CFF8F6229CC9AD7008DB934 /* ImageContextMenuModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageContextMenuModifier.swift; sourceTree = "<group>"; }; 4CFF8F6629CC9E3A008DB934 /* ImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageView.swift; sourceTree = "<group>"; }; 4CFF8F6829CC9ED1008DB934 /* ImageContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageContainerView.swift; sourceTree = "<group>"; }; + 4CFF8F6A29CD0079008DB934 /* RepostedEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RepostedEvent.swift; sourceTree = "<group>"; }; + 4CFF8F6C29CD022E008DB934 /* WideEventView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WideEventView.swift; sourceTree = "<group>"; }; 4FE60CDC295E1C5E00105A1F /* Wallet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Wallet.swift; sourceTree = "<group>"; }; 50A50A8C29A09E1C00C01BE7 /* RequestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestTests.swift; sourceTree = "<group>"; }; 5C513FB9297F72980072348F /* CustomPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomPicker.swift; sourceTree = "<group>"; }; @@ -672,6 +676,7 @@ isa = PBXGroup; children = ( 3AA24801297E3DC20090C62D /* RepostView.swift */, + 4CFF8F6A29CD0079008DB934 /* RepostedEvent.swift */, ); path = Reposts; sourceTree = "<group>"; @@ -987,6 +992,7 @@ 4CF0ABE6298444FC00D66079 /* MutedEventView.swift */, 4C3D52B5298DB4E6001C5831 /* ZapEvent.swift */, 4C3D52B7298DB5C6001C5831 /* TextEvent.swift */, + 4CFF8F6C29CD022E008DB934 /* WideEventView.swift */, ); path = Events; sourceTree = "<group>"; @@ -1502,6 +1508,7 @@ 4CE879582996C45300F758CC /* ZapsView.swift in Sources */, 4C30AC7429A5680900E2BD5A /* EventGroupView.swift in Sources */, 4C633352283D419F00B1C9C3 /* SignalModel.swift in Sources */, + 4CFF8F6D29CD022E008DB934 /* WideEventView.swift in Sources */, 9609F058296E220800069BF3 /* BannerImageView.swift in Sources */, 4C363A94282704FA006E126D /* Post.swift in Sources */, 4C216F32286E388800040376 /* DMChatView.swift in Sources */, @@ -1530,6 +1537,7 @@ 4C3EA64F28FF59F200C48A62 /* tal.c in Sources */, 4CB88393296F798300DC99E7 /* ReactionsModel.swift in Sources */, 4CB88396296F7F8B00DC99E7 /* ReactionView.swift in Sources */, + 4CFF8F6B29CD0079008DB934 /* RepostedEvent.swift in Sources */, 4C8682872814DE470026224F /* ProfileView.swift in Sources */, 4C5F9114283D694D0052CD1C /* FollowTarget.swift in Sources */, 4CF0ABD629817F5B00D66079 /* ReportView.swift in Sources */, diff --git a/damus/Components/ImageCarousel.swift b/damus/Components/ImageCarousel.swift @@ -33,8 +33,6 @@ struct ShareSheet: UIViewControllerRepresentable { - - struct ImageCarousel: View { var urls: [URL] @@ -53,8 +51,8 @@ struct ImageCarousel: View { .configure { view in view.framePreloadCount = 3 } - .aspectRatio(contentMode: .fit) - .cornerRadius(10) + .aspectRatio(contentMode: .fill) + //.cornerRadius(10) .tabItem { Text(url.absoluteString) } @@ -70,8 +68,7 @@ struct ImageCarousel: View { .fullScreenCover(isPresented: $open_sheet) { ImageView(urls: urls) } - .frame(height: 200) - .clipped() + .frame(height: 350) .onTapGesture { open_sheet = true } diff --git a/damus/Components/Reposted.swift b/damus/Components/Reposted.swift @@ -15,12 +15,10 @@ struct Reposted: View { var body: some View { HStack(alignment: .center) { Image(systemName: "arrow.2.squarepath") - .font(.system(size: 13, weight: .heavy)) .foregroundColor(Color.gray) ProfileName(pubkey: pubkey, profile: profile, damus: damus, show_friend_confirmed: true, show_nip5_domain: false) .foregroundColor(Color.gray) Text("Reposted", comment: "Text indicating that the post was reposted (i.e. re-shared).") - .font(.system(size: 14, weight: .heavy)) .foregroundColor(Color.gray) } } diff --git a/damus/Views/ChatView.swift b/damus/Views/ChatView.swift @@ -114,7 +114,7 @@ struct ChatView: View { show_images: show_images, size: .normal, artifacts: .just_content(event.content), - truncate: false) + options: []) if is_active || next_ev == nil || next_ev!.pubkey != event.pubkey { let bar = make_actionbar_model(ev: event.id, damus: damus_state) diff --git a/damus/Views/DMView.swift b/damus/Views/DMView.swift @@ -23,7 +23,7 @@ struct DMView: View { let should_show_img = should_show_images(settings: damus_state.settings, contacts: damus_state.contacts, ev: event, our_pubkey: damus_state.pubkey) - NoteContentView(damus_state: damus_state, event: event, show_images: should_show_img, size: .normal, artifacts: .just_content(event.get_content(damus_state.keypair.privkey)), truncate: false) + NoteContentView(damus_state: damus_state, event: event, show_images: should_show_img, size: .normal, artifacts: .just_content(event.get_content(damus_state.keypair.privkey)), options: []) .padding([.top, .leading, .trailing], 10) .padding([.bottom], 25) .background(VisualEffectView(effect: UIBlurEffect(style: .prominent)) diff --git a/damus/Views/EventView.swift b/damus/Views/EventView.swift @@ -60,17 +60,7 @@ struct EventView: View { VStack { if event.known_kind == .boost { if let inner_ev = event.inner_event { - VStack(alignment: .leading) { - let prof = damus.profiles.lookup(id: event.pubkey) - let booster_profile = ProfileView(damus_state: damus, pubkey: event.pubkey) - - NavigationLink(destination: booster_profile) { - Reposted(damus: damus, pubkey: event.pubkey, profile: prof) - } - .buttonStyle(PlainButtonStyle()) - TextEvent(damus: damus, event: inner_ev, pubkey: inner_ev.pubkey, options: options) - .padding([.top], 1) - } + RepostedEvent(damus: damus, event: event, inner_ev: inner_ev, options: options) } else { EmptyView() } @@ -82,7 +72,7 @@ struct EventView: View { } } else { TextEvent(damus: damus, event: event, pubkey: pubkey, options: options) - .padding([.top], 6) + //.padding([.top], 6) } } } diff --git a/damus/Views/Events/EmbeddedEventView.swift b/damus/Views/Events/EmbeddedEventView.swift @@ -30,7 +30,7 @@ struct EmbeddedEventView: View { .minimumScaleFactor(0.75) .lineLimit(1) - EventBody(damus_state: damus_state, event: event, size: .small) + EventBody(damus_state: damus_state, event: event, size: .small, options: [.truncate_content]) } } } diff --git a/damus/Views/Events/EventBody.swift b/damus/Views/Events/EventBody.swift @@ -12,11 +12,13 @@ struct EventBody: View { let event: NostrEvent let size: EventViewKind let should_show_img: Bool + let options: EventViewOptions - init(damus_state: DamusState, event: NostrEvent, size: EventViewKind, should_show_img: Bool? = nil) { + init(damus_state: DamusState, event: NostrEvent, size: EventViewKind, should_show_img: Bool? = nil, options: EventViewOptions) { self.damus_state = damus_state self.event = event self.size = size + self.options = options self.should_show_img = should_show_img ?? should_show_images(settings: damus_state.settings, contacts: damus_state.contacts, ev: event, our_pubkey: damus_state.pubkey) } @@ -25,17 +27,13 @@ struct EventBody: View { } var body: some View { - if event_is_reply(event, privkey: damus_state.keypair.privkey) { - ReplyDescription(event: event, profiles: damus_state.profiles) - } - - NoteContentView(damus_state: damus_state, event: event, show_images: should_show_img, size: size, artifacts: .just_content(content), truncate: true) + NoteContentView(damus_state: damus_state, event: event, show_images: should_show_img, size: size, artifacts: .just_content(content), options: options) .frame(maxWidth: .infinity, alignment: .leading) } } struct EventBody_Previews: PreviewProvider { static var previews: some View { - EventBody(damus_state: test_damus_state(), event: test_event, size: .normal) + EventBody(damus_state: test_damus_state(), event: test_event, size: .normal, options: []) } } diff --git a/damus/Views/Events/MutedEventView.swift b/damus/Views/Events/MutedEventView.swift @@ -51,7 +51,7 @@ struct MutedEventView: View { var Event: some View { Group { if selected { - SelectedEventView(damus: damus_state, event: event) + SelectedEventView(damus: damus_state, event: event, size: .selected) } else { EventView(damus: damus_state, event: event) } diff --git a/damus/Views/Events/SelectedEventView.swift b/damus/Views/Events/SelectedEventView.swift @@ -10,6 +10,7 @@ import SwiftUI struct SelectedEventView: View { let damus: DamusState let event: NostrEvent + let size: EventViewKind var pubkey: String { event.pubkey @@ -17,9 +18,10 @@ struct SelectedEventView: View { @StateObject var bar: ActionBarModel - init(damus: DamusState, event: NostrEvent) { + init(damus: DamusState, event: NostrEvent, size: EventViewKind) { self.damus = damus self.event = event + self.size = size self._bar = StateObject(wrappedValue: make_actionbar_model(ev: event.id, damus: damus)) } @@ -40,7 +42,7 @@ struct SelectedEventView: View { .minimumScaleFactor(0.75) .lineLimit(1) - EventBody(damus_state: damus, event: event, size: .selected) + EventBody(damus_state: damus, event: event, size: size, options: []) if let mention = first_eref_mention(ev: event, privkey: damus.keypair.privkey) { BuilderEventView(damus: damus, event_id: mention.ref.id) @@ -78,7 +80,7 @@ struct SelectedEventView: View { struct SelectedEventView_Previews: PreviewProvider { static var previews: some View { - SelectedEventView(damus: test_damus_state(), event: test_event) + SelectedEventView(damus: test_damus_state(), event: test_event, size: .selected) .padding() } } diff --git a/damus/Views/Events/TextEvent.swift b/damus/Views/Events/TextEvent.swift @@ -12,6 +12,9 @@ struct EventViewOptions: OptionSet { static let no_action_bar = EventViewOptions(rawValue: 1 << 0) static let no_replying_to = EventViewOptions(rawValue: 1 << 1) static let no_images = EventViewOptions(rawValue: 1 << 2) + static let wide = EventViewOptions(rawValue: 1 << 3) + static let truncate_content = EventViewOptions(rawValue: 1 << 4) + static let pad_content = EventViewOptions(rawValue: 1 << 5) } struct TextEvent: View { @@ -25,63 +28,140 @@ struct TextEvent: View { } var body: some View { + Group { + if options.contains(.wide) { + WideStyle + } else { + ThreadedStyle + } + } + .contentShape(Rectangle()) + .background(event_validity_color(event.validity)) + .id(event.id) + .frame(maxWidth: .infinity, minHeight: PFP_SIZE) + .padding([.bottom], 2) + } + + func Pfp(is_anon: Bool) -> some View { + MaybeAnonPfpView(state: damus, is_anon: is_anon, pubkey: pubkey) + } + + func TopPart(is_anon: Bool) -> some View { + HStack(alignment: .center, spacing: 0) { + ProfileName(is_anon: is_anon) + TimeDot + Time + Spacer() + ContextButton + } + .lineLimit(1) + } + + var ReplyPart: some View { + Group { + if event_is_reply(event, privkey: damus.keypair.privkey) { + ReplyDescription(event: event, profiles: damus.profiles) + } else { + EmptyView() + } + } + } + + var WideStyle: some View { + VStack(alignment: .leading) { + let is_anon = event_is_anonymous(ev: event) + + HStack(spacing: 10) { + Pfp(is_anon: is_anon) + VStack { + TopPart(is_anon: is_anon) + ReplyPart + } + } + .padding(.horizontal) + + EvBody(options: [.truncate_content, .pad_content]) + + if let mention = first_eref_mention(ev: event, privkey: damus.keypair.privkey) { + Mention(mention) + .padding(.horizontal) + } + + if has_action_bar { + //EmptyRect + ActionBar + .padding(.horizontal) + } + } + } + + var TimeDot: some View { + Text(verbatim: "⋅") + .font(.footnote) + .foregroundColor(.gray) + } + + var Time: some View { + Text(verbatim: "\(format_relative_time(event.created_at))") + .font(.system(size: 16)) + .foregroundColor(.gray) + } + + var ContextButton: some View { + EventMenuContext(event: event, keypair: damus.keypair, target_pubkey: event.pubkey, bookmarks: damus.bookmarks) + .padding([.bottom], 4) + } + + func ProfileName(is_anon: Bool) -> some View { + let profile = damus.profiles.lookup(id: pubkey) + let pk = is_anon ? "anon" : pubkey + return EventProfileName(pubkey: pk, profile: profile, damus: damus, show_friend_confirmed: true, size: .normal) + } + + func EvBody(options: EventViewOptions) -> some View { + return EventBody(damus_state: damus, event: event, size: .normal, options: options) + } + + func Mention(_ mention: Mention) -> some View { + return BuilderEventView(damus: damus, event_id: mention.ref.id) + } + + var ActionBar: some View { + return EventActionBar(damus_state: damus, event: event) + .padding([.top], 4) + } + + var EmptyRect: some View { + return Rectangle().frame(height: 2).opacity(0) + } + + var ThreadedStyle: some View { HStack(alignment: .top) { - let profile = damus.profiles.lookup(id: pubkey) let is_anon = event_is_anonymous(ev: event) VStack { - MaybeAnonPfpView(state: damus, is_anon: is_anon, pubkey: pubkey) + Pfp(is_anon: is_anon) Spacer() } - VStack(alignment: .leading, spacing: 1) { - HStack(alignment: .center, spacing: 0) { - let pk = is_anon ? "anon" : pubkey - - EventProfileName(pubkey: pk, profile: profile, damus: damus, show_friend_confirmed: true, size: .normal) - - Text(verbatim: "⋅") - .font(.footnote) - .foregroundColor(.gray) - Text(verbatim: "\(format_relative_time(event.created_at))") - .font(.system(size: 16)) - .foregroundColor(.gray) - - Spacer() - - EventMenuContext(event: event, keypair: damus.keypair, target_pubkey: event.pubkey, bookmarks: damus.bookmarks) - .padding([.bottom], 4) - - } - .lineLimit(1) + VStack(alignment: .leading) { + TopPart(is_anon: is_anon) - EventBody(damus_state: damus, event: event, size: .normal) + ReplyPart + EvBody(options: []) if let mention = first_eref_mention(ev: event, privkey: damus.keypair.privkey) { - BuilderEventView(damus: damus, event_id: mention.ref.id) + Mention(mention) } if has_action_bar { - Rectangle().frame(height: 2).opacity(0) - - EventActionBar(damus_state: damus, event: event) - .padding([.top], 4) + EmptyRect + ActionBar } } .padding([.leading], 2) } - .contentShape(Rectangle()) - .background(event_validity_color(event.validity)) - .id(event.id) - .frame(maxWidth: .infinity, minHeight: PFP_SIZE) - .padding([.bottom], 2) - } -} - -struct TextEvent_Previews: PreviewProvider { - static var previews: some View { - TextEvent(damus: test_damus_state(), event: test_event, pubkey: "pk", options: []) } } @@ -99,3 +179,16 @@ func event_has_tag(ev: NostrEvent, tag: String) -> Bool { func event_is_anonymous(ev: NostrEvent) -> Bool { return ev.known_kind == .zap_request && event_has_tag(ev: ev, tag: "anon") } + +struct TextEvent_Previews: PreviewProvider { + static var previews: some View { + VStack(spacing: 20) { + TextEvent(damus: test_damus_state(), event: test_event, pubkey: "pk", options: []) + .frame(height: 400) + + TextEvent(damus: test_damus_state(), event: test_event, pubkey: "pk", options: [.wide]) + .frame(height: 400) + } + } +} + diff --git a/damus/Views/Events/WideEventView.swift b/damus/Views/Events/WideEventView.swift @@ -0,0 +1,22 @@ +// +// WideEventView.swift +// damus +// +// Created by William Casarin on 2023-03-23. +// + +import SwiftUI + +struct WideEventView: View { + let event: NostrEvent + + var body: some View { + EmptyView() + } +} + +struct WideEventView_Previews: PreviewProvider { + static var previews: some View { + WideEventView(event: test_event) + } +} diff --git a/damus/Views/NoteContentView.swift b/damus/Views/NoteContentView.swift @@ -28,32 +28,48 @@ struct NoteContentView: View { let show_images: Bool let size: EventViewKind let preview_height: CGFloat? - let truncate: Bool + let options: EventViewOptions @State var artifacts: NoteArtifacts @State var preview: LinkViewRepresentable? - init(damus_state: DamusState, event: NostrEvent, show_images: Bool, size: EventViewKind, artifacts: NoteArtifacts, truncate: Bool) { + init(damus_state: DamusState, event: NostrEvent, show_images: Bool, size: EventViewKind, artifacts: NoteArtifacts, options: EventViewOptions) { self.damus_state = damus_state self.event = event self.show_images = show_images self.size = size + self.options = options self._artifacts = State(initialValue: artifacts) self.preview_height = lookup_cached_preview_size(previews: damus_state.previews, evid: event.id) self._preview = State(initialValue: load_cached_preview(previews: damus_state.previews, evid: event.id)) self._artifacts = State(initialValue: render_note_content(ev: event, profiles: damus_state.profiles, privkey: damus_state.keypair.privkey)) - self.truncate = truncate + } + + var truncate: Bool { + return options.contains(.truncate_content) + } + + var with_padding: Bool { + return options.contains(.pad_content) + } + + var truncatedText: some View { + TruncatedText(text: artifacts.content, maxChars: (truncate ? 280 : nil)) + .font(eventviewsize_to_font(size)) } func MainContent() -> some View { return VStack(alignment: .leading) { - if size == .selected { SelectableText(attributedString: artifacts.content) TranslateView(damus_state: damus_state, event: event) } else { - TruncatedText(text: artifacts.content, maxChars: (truncate ? 280 : nil)) - .font(eventviewsize_to_font(size)) + if with_padding { + truncatedText + .padding(.horizontal) + } else { + truncatedText + } } if show_images && artifacts.images.count > 0 { @@ -64,7 +80,7 @@ struct NoteContentView: View { Blur() .disabled(true) } - .cornerRadius(10) + //.cornerRadius(10) } if artifacts.invoices.count > 0 { @@ -177,7 +193,7 @@ struct NoteContentView_Previews: PreviewProvider { let state = test_damus_state() let content = "hi there ¯\\_(ツ)_/¯ https://jb55.com/s/Oct12-150217.png 5739a762ef6124dd.jpg" let artifacts = NoteArtifacts(content: AttributedString(stringLiteral: content), images: [], invoices: [], links: []) - NoteContentView(damus_state: state, event: NostrEvent(content: content, pubkey: "pk"), show_images: true, size: .normal, artifacts: artifacts, truncate: false) + NoteContentView(damus_state: state, event: NostrEvent(content: content, pubkey: "pk"), show_images: true, size: .normal, artifacts: artifacts, options: []) } } diff --git a/damus/Views/Reposts/RepostedEvent.swift b/damus/Views/Reposts/RepostedEvent.swift @@ -0,0 +1,37 @@ +// +// RepostedEvent.swift +// damus +// +// Created by William Casarin on 2023-03-23. +// + +import SwiftUI + +struct RepostedEvent: View { + let damus: DamusState + let event: NostrEvent + let inner_ev: NostrEvent + let options: EventViewOptions + + var body: some View { + VStack(alignment: .leading) { + let prof = damus.profiles.lookup(id: event.pubkey) + let booster_profile = ProfileView(damus_state: damus, pubkey: event.pubkey) + + NavigationLink(destination: booster_profile) { + Reposted(damus: damus, pubkey: event.pubkey, profile: prof) + .padding(.horizontal) + } + .buttonStyle(PlainButtonStyle()) + + //SelectedEventView(damus: damus, event: inner_ev, size: .normal) + TextEvent(damus: damus, event: inner_ev, pubkey: inner_ev.pubkey, options: options) + } + } +} + +struct RepostedEvent_Previews: PreviewProvider { + static var previews: some View { + RepostedEvent(damus: test_damus_state(), event: test_event, inner_ev: test_event, options: []) + } +} diff --git a/damus/Views/Timeline/InnerTimelineView.swift b/damus/Views/Timeline/InnerTimelineView.swift @@ -37,7 +37,7 @@ struct InnerTimelineView: View { EmptyTimelineView() } else { ForEach(events.filter(filter), id: \.id) { (ev: NostrEvent) in - EventView(damus: damus, event: ev) + EventView(damus: damus, event: ev, options: [.wide]) .onTapGesture { nav_target = ev.inner_event ?? ev navigating = true @@ -49,7 +49,7 @@ struct InnerTimelineView: View { } } } - .padding(.horizontal) + //.padding(.horizontal) } }