From c79ff85e07a3e78448a5002ed224aa9e2dd4ff12 Mon Sep 17 00:00:00 2001 From: Goekhan08 <goekhan08@mi.fu-berlin.de> Date: Mon, 29 Mar 2021 20:57:56 +0200 Subject: [PATCH] Renamed the property for the folder name, added a modifier to the avatar --- .../SwiftUI/Contact/ContactMailListView.swift | 4 ++-- .../SwiftUI/FolderView/FolderListView.swift | 2 +- .../SwiftUI/Inbox/InboxView.swift | 12 ++++------ .../SwiftUI/Inbox/MailRowView.swift | 23 +++++++++---------- 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift b/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift index 8244467c..e2f267ef 100644 --- a/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift +++ b/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift @@ -37,7 +37,7 @@ struct ContactMailListView: View { ForEach (0..<min(3,filteredEmails.count)) { record in NavigationLink( destination: ReadMainView(model: ReadModel(mail: filteredEmails[record]))) { - MailRowView(mail: filteredEmails[record]) + MailRowView(mail: filteredEmails[record], activateOnTap: false) } if record < min(2, filteredEmails.count - 1) { Divider() @@ -134,7 +134,7 @@ struct MoreContactMailView: View { List (filteredEmails, id: \.self){ record in NavigationLink( destination: ReadMainView(model: ReadModel(mail: record))) { - MailRowView(mail: record) + MailRowView(mail: record, activateOnTap: false) } } } diff --git a/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift b/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift index 92faa9da..db92989d 100644 --- a/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift +++ b/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift @@ -21,7 +21,7 @@ struct FolderListView: View { List(folders, id: \.self) { f in let name = formatName(f.name) - NavigationLink(destination: InboxView(folderPath: f.path ?? name, name: name) + NavigationLink(destination: InboxView(folderPath: f.path ?? name, folderName: name) .environment(\.managedObjectContext, PersistentDataProvider .dataProvider diff --git a/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift b/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift index 528c13fb..e9bde040 100644 --- a/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift +++ b/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift @@ -8,20 +8,18 @@ // import SwiftUI -//import CoreData - struct InboxView: View { var folderPath: String - var name: String + var folderName: String @State private var updating = false @State private var composeMail = false @State private var goToFolders = false @ObservedObject var refreshModel: InboxRefreshModel - init(folderPath: String, name: String) { + init(folderPath: String, folderName: String) { self.folderPath = folderPath - self.name = name + self.folderName = folderName self.refreshModel = InboxRefreshModel(folderPath: folderPath) } @@ -45,7 +43,7 @@ struct InboxView: View { } private var mailListView: some View { - MailListView(folderPath: folderPath, folderName: name, refreshModel: refreshModel) + MailListView(folderPath: folderPath, folderName: folderName, refreshModel: refreshModel) .environment(\.managedObjectContext, PersistentDataProvider .dataProvider @@ -88,7 +86,7 @@ struct InboxView: View { // Preview struct InboxView_Previews: PreviewProvider { static var previews: some View { - return InboxView(folderPath: "INBOX", name: "INBOX") + return InboxView(folderPath: "INBOX", folderName: "INBOX") .environment(\.managedObjectContext, PersistentDataProvider .proxyPersistentDataProvider diff --git a/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift b/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift index 773c2c81..a73cb159 100644 --- a/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift +++ b/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift @@ -11,6 +11,9 @@ import SwiftUI struct MailRowView <M: DisplayMail>: View { let mail: M + @State var isLinkActive = false + // ContactMailListView toggles this to disable the onTapGesture modifier for the avatar + var activateOnTap: Bool = true var body: some View { HStack { @@ -59,18 +62,14 @@ struct MailRowView <M: DisplayMail>: View { .aspectRatio(contentMode: .fit) .shadow(radius: 2) .opacity(mail.isRead ? 0.45 : 1) - } -} - -// A conditional view modifier -extension View { - @ViewBuilder - public func `if`<V>(_ condition: Bool, input: (Self) -> V) -> some View where V: View { - if condition { - input(self) - } else { - self - } + .onTapGesture(count: 1, perform: {isLinkActive = true}) + .allowsHitTesting(activateOnTap) + .background( + NavigationLink(destination: ContactView(contact: mail.sender), isActive: $isLinkActive) { + EmptyView() + } + .hidden() + ) } } -- GitLab