Skip to content

Commit 25cd5e2

Browse files
CodableTransaction.encode improvements.
1 parent 3aaaf48 commit 25cd5e2

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

Sources/Core/Transaction/CodableTransaction.swift

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -189,14 +189,18 @@ public struct CodableTransaction {
189189
}
190190

191191
public mutating func resolve(provider: Web3Provider) async {
192-
// type cannot be changed here, and is ignored
193-
// FIXME: This is resolves nothing yet.
194192
// FIXME: Delete force try
195-
self.nonce = try! await self.resolveNonce(provider: provider)
196-
self.gasPrice = try! await self.resolveGasPrice(provider: provider)
197193
self.gasLimit = try! await self.resolveGasLimit(provider: provider)
198-
self.maxFeePerGas = try! await self.resolveMaxFeePerGas(provider: provider)
199-
self.maxPriorityFeePerGas = try! await self.resolveMaxPriorityFeePerGas(provider: provider)
194+
195+
if from != nil || sender != nil {
196+
self.nonce = try! await self.resolveNonce(provider: provider)
197+
}
198+
if case .eip1559 = type {
199+
self.maxFeePerGas = try! await self.resolveMaxFeePerGas(provider: provider)
200+
self.maxPriorityFeePerGas = try! await self.resolveMaxPriorityFeePerGas(provider: provider)
201+
} else {
202+
self.gasPrice = try! await self.resolveGasPrice(provider: provider)
203+
}
200204
}
201205

202206
public var noncePolicy: NoncePolicy
@@ -246,7 +250,6 @@ extension CodableTransaction: Codable {
246250
// FIXME: There's a huge mess here, please take a look here at code review if any.
247251
var containier = encoder.container(keyedBy: CodingKeys.self)
248252
try containier.encode(nonce.hexString, forKey: .nonce)
249-
try containier.encode(accessList, forKey: .accessList)
250253
try containier.encode(data.toHexString().addHexPrefix(), forKey: .data)
251254
try containier.encode(value.hexString, forKey: .value)
252255

@@ -258,7 +261,10 @@ extension CodableTransaction: Codable {
258261
try containier.encode(chainID.hexString, forKey: .chainID)
259262
}
260263
}
261-
264+
if let accessList = accessList, !accessList.isEmpty {
265+
try containier.encode(accessList, forKey: .accessList)
266+
}
267+
262268
if !gasLimit.isZero {
263269
try containier.encode(gasLimit.hexString, forKey: .gasLimit)
264270
}
@@ -310,7 +316,7 @@ extension CodableTransaction {
310316
switch noncePolicy {
311317
case .pending, .latest, .earliest:
312318
guard let address = from ?? sender else { throw Web3Error.valueError }
313-
let request: APIRequest = .getTransactionCount(address.address , callOnBlock ?? .latest)
319+
let request: APIRequest = .getTransactionCount(address.address, callOnBlock ?? .latest)
314320
let response: APIResponse<BigUInt> = try await APIRequest.sendRequest(with: provider, for: request)
315321
return response.result
316322
case .exact(let value):

0 commit comments

Comments
 (0)