From 9a74e0697204db65d04455cccfafdc6182132737 Mon Sep 17 00:00:00 2001 From: Andrei Ashikhmin Date: Tue, 11 Feb 2025 19:31:18 +0700 Subject: [PATCH] fix: display invalid status in UI --- DashSyncCurrentCommit | 2 +- DashWallet.xcodeproj/project.pbxproj | 32 +++++++++--------- .../tx.invalid.icon.imageset/Contents.json | 23 +++++++++++++ .../tx.invalid.icon.imageset/error.png | Bin 0 -> 712 bytes .../tx.invalid.icon.imageset/error@2x.png | Bin 0 -> 1324 bytes .../tx.invalid.icon.imageset/error@3x.png | Bin 0 -> 1768 bytes .../Transactions/Model/Transaction.swift | 17 +++------- .../Sources/UI/Home/Views/HomeView.swift | 2 +- 8 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/error.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/error@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/error@3x.png diff --git a/DashSyncCurrentCommit b/DashSyncCurrentCommit index f5db9ed5d..2b7bef7cd 100644 --- a/DashSyncCurrentCommit +++ b/DashSyncCurrentCommit @@ -1 +1 @@ -d92d814f3f9a3d40126a9359b578831d8eb97293 +81cec5027e93a83038607bd404ad7bb2d63cbd51 diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index 372924972..3b930061e 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -10285,7 +10285,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -10425,7 +10425,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -10599,7 +10599,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -10621,7 +10621,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -10646,7 +10646,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; @@ -10673,7 +10673,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; @@ -10705,7 +10705,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.2.3; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.TodayExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -10734,7 +10734,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.2.3; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.TodayExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -11413,7 +11413,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -11526,7 +11526,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.2.3; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.TodayExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -11582,7 +11582,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -11607,7 +11607,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; @@ -11724,7 +11724,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -11836,7 +11836,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.2.3; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.TodayExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -11891,7 +11891,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -11916,7 +11916,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.3.0; + MARKETING_VERSION = 8.3.1; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; diff --git a/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/Contents.json new file mode 100644 index 000000000..423f41e20 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "error.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "error@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "error@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/error.png b/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/error.png new file mode 100644 index 0000000000000000000000000000000000000000..c92efec6358488322f74fe2cd752e4b814b0a4c0 GIT binary patch literal 712 zcmV;(0yq7MP)-=Gh`f(82!i3LI|sKf)n6SS*}zpCzr zW|zPgA$bQ%k!lJEqS_wrHAzUEOn#_)7M_tkKA-QMJ2NJX(EinBTWj1wq>BU;HIS40 z-1oU(hoU+(y_kFVrasJvh5|xe=B|x#L{wK=S5EJ3Z;k~zuvc$Y~F1+ z2qI&G+6R*jA{E)3Iw}}JY~XVwNmvr%4~RAq(RFH+mJZO`R!kDZ92+Zc+lJ#pTJi*> zF^0Nfq6r|e6ef^1^v4BxqXs4C#8eDXcxNZtexJT}jyVh4V&`f_fhBb&b;U4o|N=XprmwfiWbE zg4J{E*#{EMS6$D_gbt38MoHJtOyG!D58L#@-vU9|RE_;2mozHvIq7>k>h;DYyBJwh uYrL`x1l{?8M7(v8$3K_5oEFyvXzLH<<2X5-I#D_R0000ssX7*8wywAAXRc3J{+2giVH0V#EBHa0rf&SB!E;Y)n~%P3)f(uXjD(yuatY zH*aPZAwjCgPZp8cWrjEmfJI;|&o3LEW)}T1fOQSnWrn(0So&oJ5&|J6cU~DUGX`&? z!_IOe^Pq;sEiqBU`Gdb-G9d=af`ky8&G5HnNER-R%@&q^`wkS47L=k8FI<>*M%Eo8 z3tB6m&eu2Z%`m`8*hLWVLS|oXcFhJYE)KWUnO219K{5Q>R9OF1L2{WU-cUD$s=> z!?A}>*wic#OZ zKjXdF;&RpFWnO>jT^Tn)c;l(HhnW5&^cW0TOE2vRs+Qh33%%iLUdne$<7M|`M-Xb- zCm;z9OFF%Xg41E2gCqmflhFUxo1i`Q zB=o&JECRAtS(Um6{SXJveI)LYdGQEfHVa#SUIR&t=|e{@e|7V^C3=X9nE(a!XP$03 z-%rL#^c1z-?`fYMc?ndoHFlbg4VPnTQ-RGZf3#hTD#}j`@#xADsGuVN+uj#=(*&4jsMkeH2czlR6>Pm%tq=U(_ppFU)~$HV&+DB>C&Ra8o11P;Kz`qbg) zxgaP(45ErkQw)I!w=?`OOhFVE*C22FGz&;mjDTSgtH(~UW7Qz?kDG7e*_+^0j=yTXV%XaqXa21R7cnKVTqYF~&9%BzJnP*}E#Q=0|F&&J%>@ZjPPpnz4l`so&-ND}}3>d(u*zB7<4zF>Gd!HJ`T#+Fm1`gC2peAsXG289J*^a3_eefbEX1qwP zSMaL*0zXLaBgKJIGi9?O(@gHsm}Yjbx6q`4KInObz;A&fVhaSXq-{^Hv>@^B_8)05|a6wf_)4h^IWJFynIvN%=CN=>K{txo*LmVPgiD3XOUN~CF i7ij9tS%?zsQF#oMB^p|8xV9+(0000 literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/error@3x.png b/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.invalid.icon.imageset/error@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..78b636d6252a912da85bcab71c3423acb4ab2bf7 GIT binary patch literal 1768 zcmVP);`qg?}^5k zd${-O)A7mJUJ^^V&57wb*M&vh!wbz61>nuiiOD&LL1b6m9G|?|EA3fW5b)OU!+STP zeJ27N6H{NysnIO-BM6HltIOBIW)JPEY-xQf8YAnrIX-u0k{Q62pM^qeeI{^rJy{4!flPcYud8g?(yC;4mCN>yBIXi3v^XE*13NK zMPrIwcb*k>%g|LgZr7kU2e+y)?cJTO?OjJ#Wfzr-KZavuU=}6Ft1rBF#(DA-{`u$=@4e^BA#eR;(f_sCt2RR4N;`#Dzx}3J86VY^Iw)Fe zIe&lfA*iIahi$qlxikX`F)qB`RvD&SMdJ{3FHU3ERf!|K^RMJ z({i>z7NkhnHqX!7jVwfKP!@>khsMKNUQR`0OhH5@WI!14x{GSs^Aw$nXog0pbjHj@u()FB=iTQNR(;RVZCi;;vrOp0IEPrM4fwv8LDI< zo=dncFeO)wJ7LeGcm;xrD4cN0pqZpmj=YIyoE)r(p>o;V2MU@{6&lKqcx(sncR>R>f{U?8-ik~(&;h0vcBM+C)wI;NMm1J8NdI#N+0jX^(ddGbZS**3@7UZ_= z-o=B-odcP+9cj~RKjXOe`<>D|3ODj|nR}1haKw>o&I@PP%GFMvbq$>loN(r)Bc~Rt z%OTa%Yb*2JKI|$SM@<~pVKdF-w5%-QGnyQ7t_0-?T&(fTl<3H{cXBLyqnnHR9J5;`Q;Ue8PGBE})pnF0O}VBv?=_So7|nnT<&u1{38F@3L(^xXdOsYc23%rbM=RYQs;lxUcutS^&trW0000< KMNUMnLSTYNR8T$u literal 0 HcmV?d00001 diff --git a/DashWallet/Sources/Models/Transactions/Model/Transaction.swift b/DashWallet/Sources/Models/Transactions/Model/Transaction.swift index a7a56d626..b8eb79ff9 100644 --- a/DashWallet/Sources/Models/Transactions/Model/Transaction.swift +++ b/DashWallet/Sources/Models/Transactions/Model/Transaction.swift @@ -78,7 +78,7 @@ class Transaction: TransactionDataItem, Identifiable { } var iconName: String { - direction.iconName + state == .invalid ? "tx.invalid.icon" : direction.iconName } private lazy var storedFiatAmount = userInfo?.fiatAmountString(from: _dashAmount) ?? NSLocalizedString("Not available", comment: ""); @@ -109,7 +109,7 @@ class Transaction: TransactionDataItem, Identifiable { if (direction == .sent || direction == .moved) && confirms == 0 - && !isValid(account, tx) { + && !account!.transactionIsValid(tx) { return .invalid } else if direction == .received { if !instantSendReceived && confirms == 0 && isPending(account, tx) { @@ -154,14 +154,6 @@ class Transaction: TransactionDataItem, Identifiable { return account!.transactionIsVerified(tx) } - - private func isValid(_ account: DSAccount?, _ tx: DSTransaction) -> Bool { - if tx.timestamp + kConfirmationThreshold < Date().timeIntervalSince1970 { - return true - } - - return account!.transactionIsValid(tx) - } private lazy var _shortDateString: String = tx.formattedShortTxDate var date: Date @@ -181,8 +173,9 @@ class Transaction: TransactionDataItem, Identifiable { case .sent: if state == .processing { return NSLocalizedString("Sending", comment: "") - } - else { + } else if state == .invalid { + return NSLocalizedString("Invalid", comment: "") + } else { return NSLocalizedString("Sent", comment: "") } case .received, .notAccountFunds: diff --git a/DashWallet/Sources/UI/Home/Views/HomeView.swift b/DashWallet/Sources/UI/Home/Views/HomeView.swift index 0682bb1c8..e6a3dfabd 100644 --- a/DashWallet/Sources/UI/Home/Views/HomeView.swift +++ b/DashWallet/Sources/UI/Home/Views/HomeView.swift @@ -450,7 +450,7 @@ struct HomeViewContent: View { TransactionPreview( title: txItem.stateTitle, subtitle: txItem.shortTimeString, - icon: .custom(txItem.direction.iconName), + icon: .custom(txItem.iconName), dashAmount: txItem.signedDashAmount, overrideFiatAmount: txItem.fiatAmount ) {