Mercurial > public > lazybear
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 |
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 } |