diff --git a/ui/BankingiOSApp/BankingiOSApp.xcodeproj/project.pbxproj b/ui/BankingiOSApp/BankingiOSApp.xcodeproj/project.pbxproj index 8db42bae..99c07df6 100644 --- a/ui/BankingiOSApp/BankingiOSApp.xcodeproj/project.pbxproj +++ b/ui/BankingiOSApp/BankingiOSApp.xcodeproj/project.pbxproj @@ -62,6 +62,7 @@ 36C4009B24D2F9E4005227AD /* IconedTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36C4009A24D2F9E4005227AD /* IconedTitleView.swift */; }; 36C4009D24D3236B005227AD /* UrlUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36C4009C24D3236B005227AD /* UrlUtil.swift */; }; 36E21ECB24D88DF000649DC8 /* UIKitExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36E21ECA24D88DF000649DC8 /* UIKitExtensions.swift */; }; + 36E21ECF24DA0EEE00649DC8 /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36E21ECE24DA0EEE00649DC8 /* IconView.swift */; }; 36E7BA1424B3D05C00757859 /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36E7BA1324B3D05C00757859 /* ViewExtensions.swift */; }; 36FC929C24B39A05002B12E9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36FC929B24B39A05002B12E9 /* AppDelegate.swift */; }; 36FC929E24B39A05002B12E9 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36FC929D24B39A05002B12E9 /* SceneDelegate.swift */; }; @@ -166,6 +167,7 @@ 36C4009A24D2F9E4005227AD /* IconedTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconedTitleView.swift; sourceTree = ""; }; 36C4009C24D3236B005227AD /* UrlUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UrlUtil.swift; sourceTree = ""; }; 36E21ECA24D88DF000649DC8 /* UIKitExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIKitExtensions.swift; sourceTree = ""; }; + 36E21ECE24DA0EEE00649DC8 /* IconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconView.swift; sourceTree = ""; }; 36E7BA1324B3D05C00757859 /* ViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewExtensions.swift; sourceTree = ""; }; 36E7BA1824B9E70C00757859 /* xcode-frameworks */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "xcode-frameworks"; path = "../../tools/BankFinder/build/xcode-frameworks"; sourceTree = ""; }; 36FC929824B39A05002B12E9 /* BankingiOSApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BankingiOSApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -384,6 +386,7 @@ 36BE065A24CA4B3500CBBB68 /* SelectBankDialog.swift */, 36BE065C24CB08FB00CBBB68 /* LazyView.swift */, 36C4009A24D2F9E4005227AD /* IconedTitleView.swift */, + 36E21ECE24DA0EEE00649DC8 /* IconView.swift */, ); path = views; sourceTree = ""; @@ -596,6 +599,7 @@ 36BE069124CEF52800CBBB68 /* UpdateButton.swift in Sources */, 366FA4DC24C479120094F009 /* BankInfoListItem.swift in Sources */, 36FC929E24B39A05002B12E9 /* SceneDelegate.swift in Sources */, + 36E21ECF24DA0EEE00649DC8 /* IconView.swift in Sources */, 36BCF88524C098C8005BEC29 /* BankAccountListItem.swift in Sources */, 36FC92EF24B3BB81002B12E9 /* AddAccountDialog.swift in Sources */, 36C4009D24D3236B005227AD /* UrlUtil.swift in Sources */, diff --git a/ui/BankingiOSApp/BankingiOSApp/ui/views/AccountTransactionListItem.swift b/ui/BankingiOSApp/BankingiOSApp/ui/views/AccountTransactionListItem.swift index 50eceb88..5f87bc1f 100644 --- a/ui/BankingiOSApp/BankingiOSApp/ui/views/AccountTransactionListItem.swift +++ b/ui/BankingiOSApp/BankingiOSApp/ui/views/AccountTransactionListItem.swift @@ -14,6 +14,8 @@ struct AccountTransactionListItem: View { private let transaction: AccountTransaction + + private let areMoreThanOneBanksTransactionsDisplayed: Bool private var transferMoneyData: TransferMoneyData @@ -22,9 +24,11 @@ struct AccountTransactionListItem: View { @Inject private var presenter: BankingPresenterSwift - init(_ transaction: AccountTransaction) { + init(_ transaction: AccountTransaction, _ areMoreThanOneBanksTransactionsDisplayed: Bool) { self.transaction = transaction + self.areMoreThanOneBanksTransactionsDisplayed = areMoreThanOneBanksTransactionsDisplayed + self.transferMoneyData = TransferMoneyData.Companion().fromAccountTransaction(transaction: transaction) } @@ -45,6 +49,12 @@ struct AccountTransactionListItem: View { Spacer() VStack(alignment: .trailing) { + if areMoreThanOneBanksTransactionsDisplayed { + IconView(iconUrl: transaction.bankAccount.customer.iconUrl, defaultIconName: "") + + Spacer() + } + AmountLabel(amount: transaction.amount) Spacer() @@ -83,6 +93,6 @@ struct AccountTransactionListItem: View { struct AccountTransactionListItem_Previews: PreviewProvider { static var previews: some View { - AccountTransactionListItem(AccountTransaction(bankAccount: previewBanks[0].accounts[0], otherPartyName: "Marieke Musterfrau", unparsedUsage: "Vielen Dank für Ihre Mühen", amount: CommonBigDecimal(double: 1234.56), valueDate: CommonDate(year: 2020, month: .march, day_: 27), bookingText: "SEPA Überweisung")) + AccountTransactionListItem(AccountTransaction(bankAccount: previewBanks[0].accounts[0], otherPartyName: "Marieke Musterfrau", unparsedUsage: "Vielen Dank für Ihre Mühen", amount: CommonBigDecimal(double: 1234.56), valueDate: CommonDate(year: 2020, month: .march, day_: 27), bookingText: "SEPA Überweisung"), false) } } diff --git a/ui/BankingiOSApp/BankingiOSApp/ui/views/AccountTransactionsDialog.swift b/ui/BankingiOSApp/BankingiOSApp/ui/views/AccountTransactionsDialog.swift index c1acab86..936b1787 100644 --- a/ui/BankingiOSApp/BankingiOSApp/ui/views/AccountTransactionsDialog.swift +++ b/ui/BankingiOSApp/BankingiOSApp/ui/views/AccountTransactionsDialog.swift @@ -10,6 +10,8 @@ struct AccountTransactionsDialog: View { private let balanceOfAllTransactions: CommonBigDecimal + private let areMoreThanOneBanksTransactionsDisplayed: Bool + @State private var filteredTransactions: [AccountTransaction] @@ -56,6 +58,8 @@ struct AccountTransactionsDialog: View { self.balanceOfAllTransactions = balance self._balanceOfFilteredTransactions = State(initialValue: balance) + + self.areMoreThanOneBanksTransactionsDisplayed = Set(allTransactions.compactMap { $0.bankAccount }.compactMap { $0.customer }).count > 1 } @@ -74,7 +78,7 @@ struct AccountTransactionsDialog: View { .padding(.horizontal) List(filteredTransactions.sorted(by: { $0.valueDate.date > $1.valueDate.date } ), id: \.technicalId) { transaction in - AccountTransactionListItem(transaction) + AccountTransactionListItem(transaction, self.areMoreThanOneBanksTransactionsDisplayed) } } .showNavigationBarTitle(LocalizedStringKey(title)) diff --git a/ui/BankingiOSApp/BankingiOSApp/ui/views/IconView.swift b/ui/BankingiOSApp/BankingiOSApp/ui/views/IconView.swift new file mode 100644 index 00000000..9c620f0c --- /dev/null +++ b/ui/BankingiOSApp/BankingiOSApp/ui/views/IconView.swift @@ -0,0 +1,43 @@ +import SwiftUI + + +struct IconView: View { + + let iconUrl: String? + + let defaultIconName: String + + + @Inject private var persistence: CoreDataBankingPersistence + + + var body: some View { + getBankIcon(self.iconUrl) + .renderingMode(Image.TemplateRenderingMode.original) + .resizable() + .scaledToFit() + .frame(width: 24) + } + + private func getBankIcon(_ iconUrl: String?) -> Image { + if let iconUrl = iconUrl { + if let iconData = persistence.readContentOfFile(iconUrl) { + if let uiImage = UIImage(data: iconData) { + return Image(uiImage: uiImage) + } + } + } + + return Image(defaultIconName) + } + +} + + +struct IconView_Previews: PreviewProvider { + + static var previews: some View { + IconView(iconUrl: nil, defaultIconName: "") + } + +} diff --git a/ui/BankingiOSApp/BankingiOSApp/ui/views/IconedTitleView.swift b/ui/BankingiOSApp/BankingiOSApp/ui/views/IconedTitleView.swift index 1cebdb3a..89ff9ab2 100644 --- a/ui/BankingiOSApp/BankingiOSApp/ui/views/IconedTitleView.swift +++ b/ui/BankingiOSApp/BankingiOSApp/ui/views/IconedTitleView.swift @@ -13,9 +13,6 @@ struct IconedTitleView: View { private var titleFont: Font? - @Inject private var persistence: CoreDataBankingPersistence - - init(_ bank: Customer, titleFont: Font? = nil) { self.init(accountTitle: bank.displayName, iconUrl: bank.iconUrl, defaultIconName: Styles.AccountFallbackIcon, titleFont: titleFont) } @@ -35,28 +32,12 @@ struct IconedTitleView: View { var body: some View { HStack { - getBankIcon(self.iconUrl) - .renderingMode(Image.TemplateRenderingMode.original) - .resizable() - .scaledToFit() - .frame(width: 24) + IconView(iconUrl: self.iconUrl, defaultIconName: self.defaultIconName) getTitleView() } } - - - private func getBankIcon(_ iconUrl: String?) -> Image { - if let iconUrl = iconUrl { - if let iconData = persistence.readContentOfFile(iconUrl) { - if let uiImage = UIImage(data: iconData) { - return Image(uiImage: uiImage) - } - } - } - - return Image(defaultIconName) - } + private func getTitleView() -> Text { if let titleFont = titleFont {