Skip to content

Commit 6fa4db2

Browse files
committed
Add maxMessages constant for WalletContract
1 parent b4cd884 commit 6fa4db2

File tree

7 files changed

+24
-10
lines changed

7 files changed

+24
-10
lines changed

Source/TonSwift/Wallets/WalletContract.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import Foundation
44
/// All wallets implement a compatible interface for sending messages
55
public protocol WalletContract: Contract {
66
func createTransfer(args: WalletTransferData, messageType: MessageType) throws -> WalletTransfer
7+
8+
var maxMessages: Int { get }
79
}
810

911
/// Message type (external | internal) to sign. Is using in v5 wallet contract

Source/TonSwift/Wallets/WalletV1.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ public final class WalletV1: WalletContract {
1111
public let stateInit: StateInit
1212
public let publicKey: Data
1313
public let revision: WalletContractV1Revision
14+
15+
public let maxMessages: Int = 4
1416

1517
public init(workchain: Int8, publicKey: Data, revision: WalletContractV1Revision) throws {
1618
self.workchain = workchain

Source/TonSwift/Wallets/WalletV2.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public final class WalletV2: WalletContract {
1212
public let publicKey: Data
1313
public let revision: WalletContractV2Revision
1414

15+
public let maxMessages: Int = 4
16+
1517
public init(workchain: Int8, publicKey: Data, revision: WalletContractV2Revision) throws {
1618
self.workchain = workchain
1719
self.publicKey = publicKey
@@ -34,8 +36,8 @@ public final class WalletV2: WalletContract {
3436
}
3537

3638
public func createTransfer(args: WalletTransferData, messageType: MessageType = .ext) throws -> WalletTransfer {
37-
guard args.messages.count <= 4 else {
38-
throw TonError.custom("Maximum number of messages in a single transfer is 4")
39+
guard args.messages.count <= maxMessages else {
40+
throw TonError.custom("Maximum number of messages in a single transfer is \(maxMessages)")
3941
}
4042

4143
let signingMessage = try Builder().store(uint: args.seqno, bits: 32)

Source/TonSwift/Wallets/WalletV3.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public final class WalletV3: WalletContract {
1212
public let publicKey: Data
1313
public let walletId: UInt64
1414
public let revision: WalletContractV3Revision
15+
16+
public var maxMessages: Int = 4
1517

1618
public init(workchain: Int8, publicKey: Data, walletId: UInt64? = nil, revision: WalletContractV3Revision) throws {
1719
self.workchain = workchain
@@ -43,8 +45,8 @@ public final class WalletV3: WalletContract {
4345
}
4446

4547
public func createTransfer(args: WalletTransferData, messageType: MessageType = .ext) throws -> WalletTransfer {
46-
guard args.messages.count <= 4 else {
47-
throw TonError.custom("Maximum number of messages in a single transfer is 4")
48+
guard args.messages.count <= maxMessages else {
49+
throw TonError.custom("Maximum number of messages in a single transfer is \(maxMessages)")
4850
}
4951

5052
let signingMessage = try Builder().store(uint: walletId, bits: 32)

Source/TonSwift/Wallets/WalletV4.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public class WalletV4: WalletContract {
3434
public let walletId: UInt32
3535
public let plugins: Set<Address>
3636
public let code: Cell
37+
38+
public let maxMessages: Int = 4
3739

3840
fileprivate init(code: Cell,
3941
seqno: Int64 = 0,
@@ -71,8 +73,8 @@ public class WalletV4: WalletContract {
7173
}
7274

7375
public func createTransfer(args: WalletTransferData, messageType: MessageType = .ext) throws -> WalletTransfer {
74-
guard args.messages.count <= 4 else {
75-
throw TonError.custom("Maximum number of messages in a single transfer is 4")
76+
guard args.messages.count <= maxMessages else {
77+
throw TonError.custom("Maximum number of messages in a single transfer is \(maxMessages)")
7678
}
7779

7880
let signingMessage = try Builder().store(uint: walletId, bits: 32)

Source/TonSwift/Wallets/WalletV5.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public class WalletV5: WalletContract {
3838
public let walletId: WalletId
3939
public let plugins: Set<Address>
4040
public let code: Cell
41+
42+
public let maxMessages: Int = 255
4143

4244
fileprivate init(code: Cell,
4345
seqno: Int64 = 0,
@@ -113,8 +115,8 @@ public class WalletV5: WalletContract {
113115
}
114116

115117
public func createTransfer(args: WalletTransferData, messageType: MessageType = .ext) throws -> WalletTransfer {
116-
guard args.messages.count <= 255 else {
117-
throw TonError.custom("Maximum number of messages in a single transfer is 255")
118+
guard args.messages.count <= maxMessages else {
119+
throw TonError.custom("Maximum number of messages in a single transfer is \(maxMessages)")
118120
}
119121

120122
let signingMessage = try Builder()

Source/TonSwift/Wallets/WalletV5Beta.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public class WalletV5BetaContract: WalletContract {
3636
public let walletId: WalletIdBeta
3737
public let plugins: Set<Address>
3838
public let code: Cell
39+
40+
public let maxMessages: Int = 255
3941

4042
fileprivate init(code: Cell,
4143
seqno: Int64 = 0,
@@ -103,8 +105,8 @@ public class WalletV5BetaContract: WalletContract {
103105
}
104106

105107
public func createTransfer(args: WalletTransferData, messageType: MessageType = .ext) throws -> WalletTransfer {
106-
guard args.messages.count <= 255 else {
107-
throw TonError.custom("Maximum number of messages in a single transfer is 255")
108+
guard args.messages.count <= maxMessages else {
109+
throw TonError.custom("Maximum number of messages in a single transfer is \(maxMessages)")
108110
}
109111

110112
let signingMessage = try Builder()

0 commit comments

Comments
 (0)