Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
KeyRecordRow.swift.orig 4.09 KiB
//
//  KeyRecordRow.swift
//  enzevalos_iphone
//
//  Created by Oliver Wiese on 02.03.20.
//  Copyright © 2020 fu-berlin. All rights reserved.
//

import SwiftUI

struct KeyRecordRow: View {
<<<<<<< HEAD
    @ObservedObject var keyrecord: KeyRecord
    let coord: InboxCoordinator
    
=======
    @Environment(\.managedObjectContext) var managedObjectContext

    var keyrecord: KeyRecord
    let coord: InboxCoordinator
    
    var fetchRequest: FetchRequest<PersistentMail>
    var mails: FetchedResults<PersistentMail> {
        fetchRequest.wrappedValue
    }

    init(keyrecord: KeyRecord, coord: InboxCoordinator) {
        self.keyrecord = keyrecord
        self.coord = coord
        let pred = NSPredicate(format: "record == %@", keyrecord)
        let folderPredicate = NSPredicate(format: "folder == %@", Folder.inbox)
        let predicates = NSCompoundPredicate(andPredicateWithSubpredicates: [pred, folderPredicate])
        let sortDescriptors = [NSSortDescriptor(key: "date", ascending: false)]
        fetchRequest = FetchRequest<PersistentMail>(entity: PersistentMail.entity(), sortDescriptors: sortDescriptors, predicate: predicates, animation: nil)
    }
    
    
>>>>>>> dev
    var body: some View {
        VStack {
            HStack(alignment: .lastTextBaseline) {
                icon
                Spacer()
                mailListView()
                .offset(y: -10)
            }
            HStack {
                name
                Spacer()
                moreMails
            }
        }
    }
    
<<<<<<< HEAD
=======
    var secondMail: PersistentMail?{
        if mails.count > 1 {
            return mails[2]
        }
        return nil
    }
    
>>>>>>> dev
    /*
     Displays the first (and second) mail
     */
    private func mailListView() -> AnyView {
        let spacing = CGFloat(10)
        let offset = -(spacing / 2)
        
<<<<<<< HEAD
        if let first = self.keyrecord.firstMail {
            if let second = self.keyrecord.secondMail {
                return AnyView(VStack(alignment: .leading, spacing: spacing) {
                        MailView(mail: first, coord: coord)
                        MailView(mail: second, coord: coord)
=======
        if let first = mails.first {
            if mails.count > 1 {
                return AnyView(VStack(alignment: .leading, spacing: spacing) {
                        MailView(mail: first, coord: coord)
                        MailView(mail: mails[1], coord: coord)
>>>>>>> dev
                        .background(Stroke(offsetY: offset))
                })
            } else {
                return AnyView(VStack(alignment: .leading,spacing: spacing) {
                    MailView(mail: first, coord: coord)
                    Text(NSLocalizedString("NoFurtherMessages", comment: "No more Mails"))
                    .background(Stroke(offsetY: offset))
                })
            }
        } else {
            return AnyView(Text("NO MAILS..."))
        }
    }
    
    private var icon: some View{
        self.keyrecord.image.img
            .resizable()
            .frame(width: 60, height: 60)
            .shadow(radius: 5)
            .onTapGesture {
                self.coord.pushRecordView(record: self.keyrecord)
        }
    }
    
    private var name: some View {
        Text(self.keyrecord.myNick)
            .frame(maxWidth: 300, alignment: .leading)
            .lineLimit(1)
            .onTapGesture {
                self.coord.pushRecordView(record: self.keyrecord)
        }
    }
    
    private var moreMails: some View {
        Button(action: {
            self.coord.pushMailListView(record: self.keyrecord)
        }, label: {
            Text(NSLocalizedString("MailView.MoreMails", comment: "More mails"))
            .foregroundColor(.gray)
        })
    }
}


extension KeyRecord {
<<<<<<< HEAD
=======
    
>>>>>>> dev
    public var firstMail: PersistentMail? {
        get {
            return mails.first
        }
    }
    
    public var secondMail: PersistentMail? {
        get {
            if mails.count > 1 {
                return mails[1]
            }
            return nil
        }
    }
}