/// The status is being displayed in a ``StatusList``, so we should make it smaller and more compact. private struct CompactStatusView: View { /// The ``Status`` data model from where we obtain all the data. var status: Status /// Used to trigger the navectigationLink to redirect the user to the thread. @Binding var goToThread: Bool /// Used to redirect the user to a specific profile. @Binding var profileViewActive: Bool var body: some View { ZStack { self.content .padding(.vertical, 5) .contextMenu( ContextMenu(menuItems: { Button(action: {}, label: { Label("Report post", systemImage: "flag") }) Button(action: {}, label: { Label("Report \(self.status.account.displayName)", systemImage: "flag") }) Button(action: {}, label: { Label("Share as Image", systemImage: "square.and.arrow.up") }) }) ) } .buttonStyle(PlainButtonStyle()) .navigationBarHidden(self.profileViewActive) } var content: some View { HStack(alignment: .top, spacing: 12) { URLImage(URL(string: self.status.account.avatarStatic)!, placeholder: { _ in Image("amodrono") .resizable() .scaledToFit() .clipShape(Circle()) .frame(width: 50, height: 50) .redacted(reason: .placeholder) }, content: { $0.image .resizable() .scaledToFit() .clipShape(Circle()) .frame(width: 50, height: 50) } ) .onTapGesture { self.profileViewActive.toggle() } .background( NavigationLink( destination: ProfileView( accountInfo: ProfileViewModel( accountID: self.status.account.id ), isParent: false ), isActive: self.$profileViewActive ) { Text("") } .frame(width: 0, height: 0) ) VStack(alignment: .leading, spacing: 2) { HStack(alignment: .firstTextBaseline) { if !self.status.account.displayName.isEmpty { Text("\(self.status.account.displayName)") .font(.headline) .lineLimit(1) } Text("@\(self.status.account.acct)") .foregroundColor(.secondary) .lineLimit(1) Text("ยท \(self.status.createdAt.getDate()!.getInterval())") .foregroundColor(.secondary) .lineLimit(1) } StatusViewContent( isMain: false, content: self.status.content, card: self.status.card, attachments: self.status.mediaAttachments, goToProfile: self.$profileViewActive ) StatusActionButtons( isMain: false, repliesCount: self.status.repliesCount, reblogsCount: self.status.reblogsCount, favouritesCount: self.status.favouritesCount, statusUrl: self.status.uri ) } .onTapGesture { self.goToThread.toggle() } .background( NavigationLink( destination: ThreadView( mainStatus: self.status ), isActive: self.$goToThread ) { EmptyView() } ) Spacer() } } } I guess the important parts here are: **The profile image:** URLImage(URL(string: self.status.account.avatarStatic)!, placeholder: { _ in Image("amodrono") .resizable() .scaledToFit() .clipShape(Circle()) .frame(width: 50, height: 50) .redacted(reason: .placeholder) }, content: { $0.image .resizable() .scaledToFit() .clipShape(Circle()) .frame(width: 50, height: 50) } ) .onTapGesture { self.profileViewActive.toggle() } .background( NavigationLink( destination: ProfileView( accountInfo: ProfileViewModel( accountID: self.status.account.id ), isParent: false ), isActive: self.$profileViewActive ) { Text("") } .frame(width: 0, height: 0) ) **The two last modifiers** .onTapGesture { self.goToThread.toggle() } .background( NavigationLink( destination: ThreadView( mainStatus: self.status ), isActive: self.$goToThread ) { EmptyView() } )