diff --git a/Multisig/Data/Services/Safe Client Gateway Service/SCGModels.swift b/Multisig/Data/Services/Safe Client Gateway Service/SCGModels.swift index c9504fb24..8b7f3d773 100644 --- a/Multisig/Data/Services/Safe Client Gateway Service/SCGModels.swift +++ b/Multisig/Data/Services/Safe Client Gateway Service/SCGModels.swift @@ -176,6 +176,7 @@ extension SCGModels { case swapOrder(SwapOrder) case swapTransfer(SwapOrder) case twapOrder(TwapOrder) + case stake(Stake) case unknown init(from decoder: Decoder) throws { @@ -206,6 +207,8 @@ extension SCGModels { self = try .swapTransfer(SwapOrder(from: decoder)) case "TwapOrder": self = try .twapOrder(TwapOrder(from: decoder)) + case "NativeStakingDeposit", "NativeStakingValidatorsExit", "NativeStakingWithdraw": + self = try .stake(Stake(from: decoder)) case "Unknown": fallthrough default: @@ -382,6 +385,31 @@ extension SCGModels { var implementation: AddressInfo? var factory: AddressInfo? } + + struct Stake: Decodable { + let type: StakeType + + var displayName: String { + return type.displayName + } + } + + enum StakeType: String, Decodable { + case deposit = "NativeStakingDeposit" + case validatorsExit = "NativeStakingValidatorsExit" + case withdraw = "NativeStakingWithdraw" + + var displayName: String { + switch self { + case .deposit: + return "Stake" + case .validatorsExit: + return "Withdraw request" + case .withdraw: + return "Claim" + } + } + } struct SwapOrder: Decodable { var uid: String diff --git a/Multisig/UI/Transaction/TransactionDetailsViewController/TransactionDetailCellBuilder.swift b/Multisig/UI/Transaction/TransactionDetailsViewController/TransactionDetailCellBuilder.swift index 91515250e..889caa949 100644 --- a/Multisig/UI/Transaction/TransactionDetailsViewController/TransactionDetailCellBuilder.swift +++ b/Multisig/UI/Transaction/TransactionDetailsViewController/TransactionDetailCellBuilder.swift @@ -382,6 +382,9 @@ class TransactionDetailCellBuilder { externalURL(text: "Order details", url: orderInfo.explorerUrl) case .twapOrder(let order): text(order.displayName, title: "Contract Interaction", expandableTitle: nil, copyText: nil) + case .stake(let stake): + text(stake.displayName, title: "Contract Interaction", expandableTitle: nil, copyText: nil) + case .creation(_): // ignore fallthrough @@ -675,6 +678,9 @@ class TransactionDetailCellBuilder { case .twapOrder(let order): type = order.displayName icon = UIImage(named: "ico-custom-tx") + case .stake(let stake): + type = stake.displayName + icon = UIImage(named: "ico-custom-tx") case .unknown: type = "Unknown operation" icon = UIImage(named: "ico-custom-tx") diff --git a/Multisig/UI/Transaction/TransactionListViewController/TransactionListViewController.swift b/Multisig/UI/Transaction/TransactionListViewController/TransactionListViewController.swift index edd619609..a06baf6dc 100644 --- a/Multisig/UI/Transaction/TransactionListViewController/TransactionListViewController.swift +++ b/Multisig/UI/Transaction/TransactionListViewController/TransactionListViewController.swift @@ -374,6 +374,9 @@ class TransactionListViewController: LoadableViewController, UITableViewDelegate case .twapOrder(let order): image = UIImage(named: "ico-custom-tx") title = order.displayName + case .stake(let stake): + image = UIImage(named: "ico-custom-tx") + title = stake.displayName case .unknown: image = UIImage(named: "ico-custom-tx") title = "Unknown operation" diff --git a/Multisig/UI/WalletConnect/Server/Safes/Incoming Transaction/WCIncomingTransactionRequestViewController.swift b/Multisig/UI/WalletConnect/Server/Safes/Incoming Transaction/WCIncomingTransactionRequestViewController.swift index d72957f08..db4875f24 100644 --- a/Multisig/UI/WalletConnect/Server/Safes/Incoming Transaction/WCIncomingTransactionRequestViewController.swift +++ b/Multisig/UI/WalletConnect/Server/Safes/Incoming Transaction/WCIncomingTransactionRequestViewController.swift @@ -146,6 +146,9 @@ class WCIncomingTransactionRequestViewController: ReviewSafeTransactionViewContr case .twapOrder(let order): imageName = "ico-custom-tx" name = order.displayName + case .stake(let stake): + imageName = "ico-custom-tx" + name = stake.displayName case .unknown: imageName = "ico-custom-tx" name = "Unknown operation" diff --git a/bin/test.sh b/bin/test.sh index 81fbe82a2..d6587f689 100755 --- a/bin/test.sh +++ b/bin/test.sh @@ -25,7 +25,7 @@ set -o pipefail && \ xcrun xcodebuild test \ -project Multisig.xcodeproj \ -scheme "$XCODE_SCHEME" \ - -destination "platform=iOS Simulator,name=iPhone 15 Pro" \ + -destination "platform=iOS Simulator,name=iPhone 16 Pro" \ -resultBundlePath "$TEST_BUNDLE_PATH" \ | tee "$OUTPUT_DIR/xcodebuild-test.log" | xcpretty -c -r junit