annotate Simoleon/Favorites.swift @ 75:b6f8661300f2

Added isLocked to CurrencyPairs
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Fri, 30 Jul 2021 15:52:27 +0100
parents b0bce2c8e4a9
children 98852b65438c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
1 //
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
2 // Favorites.swift
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
3 // Simoleon
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
4 //
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 19/07/2021.
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
6 //
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
7
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
8 import SwiftUI
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
9
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
10 struct Favorites: View {
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
11 @Environment(\.managedObjectContext) private var viewContext
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
12 @FetchRequest(
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
13 sortDescriptors: [NSSortDescriptor(keyPath: \Favorite.currencyPair, ascending: true)],
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
14 animation: .default) private var favorite: FetchedResults<Favorite>
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
15
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
16 var body: some View {
27
d95582268b44 Fix bug CoreData and minor UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 24
diff changeset
17 VStack {
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
18 if favorite.isEmpty {
27
d95582268b44 Fix bug CoreData and minor UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 24
diff changeset
19 Group {
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
20 Text("Tap ") + Text(Image(systemName: "star"))
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
21 Text("to add a currency pair to favorites")
27
d95582268b44 Fix bug CoreData and minor UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 24
diff changeset
22 .padding(.top, 5)
d95582268b44 Fix bug CoreData and minor UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 24
diff changeset
23 }
d95582268b44 Fix bug CoreData and minor UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 24
diff changeset
24 .foregroundColor(Color(.systemGray))
d95582268b44 Fix bug CoreData and minor UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 24
diff changeset
25 } else {
d95582268b44 Fix bug CoreData and minor UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 24
diff changeset
26 List {
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
27 ForEach(favorite) { favorite in
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
28 NavigationLink(destination: Conversion(showNavigationView: false, currencyPair: favorite.currencyPair)) {
75
b6f8661300f2 Added isLocked to CurrencyPairs
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 53
diff changeset
29 CurrencyRow(currencyPairName: favorite.currencyPair)
27
d95582268b44 Fix bug CoreData and minor UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 24
diff changeset
30 }
d95582268b44 Fix bug CoreData and minor UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 24
diff changeset
31 }
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
32 .onDelete(perform: removeFromFavorites)
24
bda6a55d027a Add Conversion to Favourites
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 22
diff changeset
33 }
30
f76d0e26c178 Add localisation
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 29
diff changeset
34 .listStyle(PlainListStyle())
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
35 }
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
36 }
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
37 .navigationTitle("Favorites")
22
3596690dda73 Add Config files and implementing Settings
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 21
diff changeset
38 .toolbar {
3596690dda73 Add Config files and implementing Settings
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 21
diff changeset
39 #if os(iOS)
3596690dda73 Add Config files and implementing Settings
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 21
diff changeset
40 EditButton()
3596690dda73 Add Config files and implementing Settings
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 21
diff changeset
41 #endif
3596690dda73 Add Config files and implementing Settings
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 21
diff changeset
42 }
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
43 .if(UIDevice.current.userInterfaceIdiom == .phone) { content in
22
3596690dda73 Add Config files and implementing Settings
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 21
diff changeset
44 NavigationView { content }
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
45 }
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
46 }
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
47
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
48 private func removeFromFavorites(offsets: IndexSet) {
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
49 withAnimation {
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
50 offsets.map { favorite[$0] }.forEach(viewContext.delete)
47
75c1a05176f6 Refactor code
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 43
diff changeset
51
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
52 do {
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
53 try viewContext.save()
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
54 } catch {
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
55 let nsError = error as NSError
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
56 fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
57 }
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
58 }
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
59 }
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
60 }
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
61
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
62 struct Favorites_Previews: PreviewProvider {
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
63 static var previews: some View {
53
b0bce2c8e4a9 Refactor UK spelling to US
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 47
diff changeset
64 Favorites()
21
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
65 .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
66 }
c3dda63f50ed Added Core Data and UI changes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
67 }