annotate LazyBear/Views/Global Helpers/ExtensiveList.swift @ 388:79c39987aaa4

Implementing Watchlists in ProfileView
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sat, 24 Apr 2021 17:44:02 +0200
parents c206bd0bdb4e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
383
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
1 //
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
2 // ExtensiveList.swift
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
3 // LazyBear
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
4 //
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 14/4/21.
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
6 //
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
7
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
8 import SwiftUI
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
9
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
10 struct ExtensiveList: View {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
11 var listName: String
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
12 var list: [String: QuoteModel]?
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
13 var intradayPrices: [String: [IntradayPriceModel]]?
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
14 var latestCurrencies: [String: CurrencyModel]?
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
15 var addOnDelete: Bool
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
16
388
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
17 @Environment(\.presentationMode) private var presentationMode
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
18 @Environment(\.managedObjectContext) private var moc
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
19 @FetchRequest(entity: WatchlistCompany.entity(), sortDescriptors: [])
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
20 var watchlistCompany: FetchedResults<WatchlistCompany>
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
21
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
22 @State private var isEditMode: EditMode = .inactive
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
23 @State private var showRenameAction = false
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
24 @State private var showDeleteAlert = false
383
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
25
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
26 var body: some View {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
27 NavigationView {
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
28 ZStack {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
29 VStack {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
30 if let list = list {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
31 List {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
32 ForEach(Array(list.keys.sorted()), id: \.self) { companySymbol in
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
33 StockItem(symbol: companySymbol,
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
34 company: list[companySymbol]!,
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
35 intradayPrices: intradayPrices?[companySymbol],
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
36 orientation: .horizontal,
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
37 hidePriceView: self.isEditMode == .active // Hide on EditMode
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
38 )
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
39
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
40 }
388
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
41 .onDelete(perform: addOnDelete ? deleteCompany: nil)
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
42 }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
43 }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
44
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
45 if let latestCurrencies = latestCurrencies {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
46 List(Array(latestCurrencies.keys.sorted()), id: \.self) { currencySymbol in
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
47 CurrencyListItem(currencySymbol: currencySymbol, currency: latestCurrencies[currencySymbol]!)
383
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
48
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
49 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
50 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
51 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
52
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
53 // Blur background
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
54 Color(.black)
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
55 .edgesIgnoringSafeArea(.all)
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
56 .opacity(showRenameAction ? 0.2: 0)
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
57 .animation(.easeInOut)
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
58 .onTapGesture { showRenameAction = false }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
59
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
60 // Show rename Action Sheet
388
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
61 RenameSheet(listName: listName, showRenameAction: $showRenameAction, presentationMode: presentationMode)
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
62 .offset(y: showRenameAction ? 0: 700)
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
63 .animation(.easeInOut)
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
64 }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
65 // Show delete list alert
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
66 .alert(isPresented: $showDeleteAlert) {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
67 Alert(
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
68 title: Text("Are you sure you want to delete this list?"),
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
69 message: Text("This action can't be undo"),
388
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
70 primaryButton: .destructive(Text("Delete")) { deleteList() },
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
71 secondaryButton: .cancel()
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
72 )
383
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
73 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
74 .navigationTitle(listName)
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
75 .navigationBarTitleDisplayMode(.inline)
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
76 .toolbar {
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
77 ToolbarItem(placement: .cancellationAction) {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
78 if addOnDelete {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
79 EditButton()
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
80 } else {
388
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
81 Button(action: { presentationMode.wrappedValue.dismiss() }) {
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
82 Image(systemName: "multiply")
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
83 .imageScale(.large)
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
84 }
383
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
85 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
86 }
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
87 ToolbarItem(placement: .navigationBarTrailing) {
383
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
88 if addOnDelete {
387
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
89 Menu {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
90 Section {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
91 Button(action: { self.showRenameAction = true }) {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
92 Label("Rename list", systemImage: "square.and.pencil")
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
93 }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
94
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
95 Button(action: { print("Add company") }) {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
96 Label("Add company", systemImage: "plus")
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
97 }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
98 }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
99
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
100 Section(header: Text("Secondary actions")) {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
101 Button(action: { self.showDeleteAlert = true }) {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
102 Label("Delete list", systemImage: "trash")
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
103 }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
104 }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
105 }
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
106 label: {
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
107 Label("Options", systemImage: "ellipsis.circle")
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
108 .imageScale(.large)
c206bd0bdb4e Implementing RenameSheet.swift
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 383
diff changeset
109 }
383
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
110 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
111 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
112 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
113 .environment(\.editMode, self.$isEditMode) // Always after Toolbar
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
114 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
115 }
388
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
116
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
117 // Delete company from watchlist
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
118 private func deleteCompany(at offsets: IndexSet) {
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
119 for index in offsets {
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
120 let company = watchlistCompany[index]
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
121 moc.delete(company)
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
122 }
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
123 do {
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
124 try moc.save()
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
125 print("Company deleted")
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
126 } catch {
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
127 // Error
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
128 }
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
129 }
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
130
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
131 // Remove entire watchlist
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
132 private func deleteList() {
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
133 let selectedWatchlist = watchlistCompany.filter({ $0.watchlist == listName })
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
134 for company in selectedWatchlist {
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
135 moc.delete(company)
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
136 }
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
137 do {
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
138 try moc.save()
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
139 print("List deleted")
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
140 presentationMode.wrappedValue.dismiss() // Dismiss view
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
141 } catch {
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
142 print(error.localizedDescription)
79c39987aaa4 Implementing Watchlists in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 387
diff changeset
143 }
383
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
144 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
145 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
146
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
147 struct ExtensiveList_Previews: PreviewProvider {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
148 static var previews: some View {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
149 ExtensiveList(listName: "List name", addOnDelete: false)
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
150 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
151 }