view Simoleon/Favourites.swift @ 22:3596690dda73

Add Config files and implementing Settings
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Tue, 20 Jul 2021 09:02:51 +0100
parents c3dda63f50ed
children bda6a55d027a
line wrap: on
line source

//
//  Favourites.swift
//  Simoleon
//
//  Created by Dennis Concepción Martín on 19/07/2021.
//

import SwiftUI

struct Favourites: View {
    @Environment(\.managedObjectContext) private var viewContext
    @FetchRequest(
        sortDescriptors: [NSSortDescriptor(keyPath: \Favourite.currencyPair, ascending: true)],
        animation: .default)
    private var favourite: FetchedResults<Favourite>
    
    var body: some View {
        List {
            ForEach(favourite) { favourite in
                CurrencyRow(currencyPair: favourite.currencyPair)
            }
            .onDelete(perform: removeFromFavourites)
        }
        .navigationTitle("Favourites")
        .toolbar {
            #if os(iOS)
            EditButton()
            #endif
        }
        .if(UIDevice.current.userInterfaceIdiom == .phone) { content in
            NavigationView { content }
        }
    }
    
    private func removeFromFavourites(offsets: IndexSet) {
        withAnimation {
            offsets.map { favourite[$0] }.forEach(viewContext.delete)

            do {
                try viewContext.save()
            } catch {
                let nsError = error as NSError
                fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
            }
        }
    }
}

struct Favourites_Previews: PreviewProvider {
    static var previews: some View {
        Favourites()
            .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
    }
}