Implemented showing 'New Money Transfer' action sheet option only if there is at least one account that supports transferring money
This commit is contained in:
parent
64e49c661a
commit
752b8bd1a3
|
@ -7,7 +7,6 @@
|
|||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
366FA4D824C46B160094F009 /* AutoCompleteList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 366FA4D724C46B160094F009 /* AutoCompleteList.swift */; };
|
||||
366FA4DA24C472A90094F009 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 366FA4D924C472A90094F009 /* Extensions.swift */; };
|
||||
366FA4DC24C479120094F009 /* BankInfoListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 366FA4DB24C479120094F009 /* BankInfoListItem.swift */; };
|
||||
366FA4E024C4924A0094F009 /* RemitteeListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 366FA4DF24C4924A0094F009 /* RemitteeListItem.swift */; };
|
||||
|
@ -34,7 +33,6 @@
|
|||
36BCF88924C0A7D7005BEC29 /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36BCF88824C0A7D7005BEC29 /* Message.swift */; };
|
||||
36BCF88B24C0BD2D005BEC29 /* AccountTransactionsDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36BCF88A24C0BD2D005BEC29 /* AccountTransactionsDialog.swift */; };
|
||||
36BCF88D24C1C1EA005BEC29 /* TransferMoneyDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36BCF88C24C1C1EA005BEC29 /* TransferMoneyDialog.swift */; };
|
||||
36BCF88F24C1DFF7005BEC29 /* SheetPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36BCF88E24C1DFF7005BEC29 /* SheetPresenter.swift */; };
|
||||
36BCF89124C25971005BEC29 /* CoreDataBankingPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36BCF89024C25971005BEC29 /* CoreDataBankingPersistence.swift */; };
|
||||
36BCF89324C25BC3005BEC29 /* Mapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36BCF89224C25BC3005BEC29 /* Mapper.swift */; };
|
||||
36BCF89524C31F02005BEC29 /* AppData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36BCF89424C31F02005BEC29 /* AppData.swift */; };
|
||||
|
@ -118,7 +116,6 @@
|
|||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
366FA4D724C46B160094F009 /* AutoCompleteList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoCompleteList.swift; sourceTree = "<group>"; };
|
||||
366FA4D924C472A90094F009 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
|
||||
366FA4DB24C479120094F009 /* BankInfoListItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BankInfoListItem.swift; sourceTree = "<group>"; };
|
||||
366FA4DF24C4924A0094F009 /* RemitteeListItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemitteeListItem.swift; sourceTree = "<group>"; };
|
||||
|
@ -140,7 +137,6 @@
|
|||
36BCF88824C0A7D7005BEC29 /* Message.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Message.swift; sourceTree = "<group>"; };
|
||||
36BCF88A24C0BD2D005BEC29 /* AccountTransactionsDialog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountTransactionsDialog.swift; sourceTree = "<group>"; };
|
||||
36BCF88C24C1C1EA005BEC29 /* TransferMoneyDialog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransferMoneyDialog.swift; sourceTree = "<group>"; };
|
||||
36BCF88E24C1DFF7005BEC29 /* SheetPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SheetPresenter.swift; sourceTree = "<group>"; };
|
||||
36BCF89024C25971005BEC29 /* CoreDataBankingPersistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataBankingPersistence.swift; sourceTree = "<group>"; };
|
||||
36BCF89224C25BC3005BEC29 /* Mapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Mapper.swift; sourceTree = "<group>"; };
|
||||
36BCF89424C31F02005BEC29 /* AppData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppData.swift; sourceTree = "<group>"; };
|
||||
|
@ -353,8 +349,6 @@
|
|||
36BCF86224BA5097005BEC29 /* SwiftUiRouter.swift */,
|
||||
36BCF86D24BA691B005BEC29 /* DependencyInjector.swift */,
|
||||
36BCF88824C0A7D7005BEC29 /* Message.swift */,
|
||||
36BCF88E24C1DFF7005BEC29 /* SheetPresenter.swift */,
|
||||
366FA4D724C46B160094F009 /* AutoCompleteList.swift */,
|
||||
36BE068824CE288800CBBB68 /* CollapsibleText.swift */,
|
||||
36BE068A24CE3B0400CBBB68 /* SwiftExtensions.swift */,
|
||||
36BE068C24CE41E700CBBB68 /* Styles.swift */,
|
||||
|
@ -583,7 +577,6 @@
|
|||
36BE065D24CB08FC00CBBB68 /* LazyView.swift in Sources */,
|
||||
36BCF86C24BA5E72005BEC29 /* DispatchQueueAsyncRunner.swift in Sources */,
|
||||
36BCF86324BA5097005BEC29 /* SwiftUiRouter.swift in Sources */,
|
||||
36BCF88F24C1DFF7005BEC29 /* SheetPresenter.swift in Sources */,
|
||||
36FC929C24B39A05002B12E9 /* AppDelegate.swift in Sources */,
|
||||
36BCF88B24C0BD2D005BEC29 /* AccountTransactionsDialog.swift in Sources */,
|
||||
36BCF87624BF114F005BEC29 /* UrlSessionWebClient.swift in Sources */,
|
||||
|
@ -594,7 +587,6 @@
|
|||
36BE065724C9E04800CBBB68 /* UIKitImageView.swift in Sources */,
|
||||
36BCF88724C0A310005BEC29 /* PreviewData.swift in Sources */,
|
||||
366FA4DA24C472A90094F009 /* Extensions.swift in Sources */,
|
||||
366FA4D824C46B160094F009 /* AutoCompleteList.swift in Sources */,
|
||||
36BE068F24CEE1BD00CBBB68 /* AllBanksListItem.swift in Sources */,
|
||||
36BE069124CEF52800CBBB68 /* UpdateButton.swift in Sources */,
|
||||
366FA4DC24C479120094F009 /* BankInfoListItem.swift in Sources */,
|
||||
|
|
|
@ -75,17 +75,10 @@ struct ContentView: View {
|
|||
NavigationLink(destination: LazyView(TransferMoneyDialog()), tag: 2, selection: self.$selectedNewOption.didSet(self.selectedNewOptionChanged)) {
|
||||
EmptyView()
|
||||
}
|
||||
|
||||
SheetPresenter(presentingSheet: $showNewOptionsActionSheet, content:
|
||||
ActionSheet(
|
||||
title: Text("New ..."),
|
||||
buttons: [
|
||||
.default(Text("Show transfer money dialog")) { self.selectedNewOption = 2 },
|
||||
.default(Text("Add account")) { self.selectedNewOption = 1 },
|
||||
.cancel { self.showPreviousSelectedTab() }
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
.actionSheet(isPresented: self.$showNewOptionsActionSheet, content: {
|
||||
self.generateNewActionSheet()
|
||||
})
|
||||
}
|
||||
.tabItem {
|
||||
VStack {
|
||||
|
@ -103,6 +96,22 @@ struct ContentView: View {
|
|||
}
|
||||
|
||||
|
||||
private func generateNewActionSheet() -> ActionSheet {
|
||||
var buttons = [ActionSheet.Button]()
|
||||
|
||||
if data.hasAccountsThatSupportTransferringMoney {
|
||||
buttons.append(.default(Text("Show transfer money dialog")) { self.selectedNewOption = 2 })
|
||||
}
|
||||
|
||||
return ActionSheet(
|
||||
title: Text("New ..."),
|
||||
buttons: buttons + [
|
||||
.default(Text("Add account")) { self.selectedNewOption = 1 },
|
||||
.cancel { self.showPreviousSelectedTab() }
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
private func selectedNewOptionChanged(oldValue: Int?, newValue: Int?) {
|
||||
if newValue == nil && oldValue != nil {
|
||||
showPreviousSelectedTab()
|
||||
|
|
|
@ -10,15 +10,23 @@ class AppData : ObservableObject {
|
|||
|
||||
@Published var hasAtLeastOneAccountBeenAdded: Bool = false
|
||||
|
||||
@Published var hasAccountsThatSupportTransferringMoney = false
|
||||
|
||||
|
||||
init() {
|
||||
banks = presenter.customers
|
||||
hasAtLeastOneAccountBeenAdded = banks.isNotEmpty
|
||||
setFieldsForBanks(presenter.customers)
|
||||
|
||||
presenter.addAccountsChangedListener { banks in
|
||||
self.banks = banks
|
||||
self.hasAtLeastOneAccountBeenAdded = banks.isNotEmpty
|
||||
self.setFieldsForBanks(banks)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private func setFieldsForBanks(_ banks: [Customer]) {
|
||||
self.banks = presenter.customers
|
||||
|
||||
hasAtLeastOneAccountBeenAdded = banks.isNotEmpty
|
||||
hasAccountsThatSupportTransferringMoney = banks.flatMap { $0.accounts }.first(where: { $0.supportsTransferringMoney }) != nil
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
import SwiftUI
|
||||
|
||||
|
||||
struct SheetPresenter: View {
|
||||
|
||||
@Binding var presentingSheet: Bool
|
||||
|
||||
var content: ActionSheet
|
||||
|
||||
|
||||
var body: some View {
|
||||
Text("")
|
||||
.actionSheet(isPresented: self.$presentingSheet, content: { self.content })
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue