@@ -8,14 +8,14 @@ import (
8
8
9
9
transactionpb "github.com/code-payments/code-protobuf-api/generated/go/transaction/v2"
10
10
11
- currency_lib "github.com/code-payments/code-server/pkg/currency"
12
- "github.com/code-payments/code-server/pkg/grpc/client"
13
- "github.com/code-payments/code-server/pkg/kin"
14
11
"github.com/code-payments/code-server/pkg/code/balance"
15
12
"github.com/code-payments/code-server/pkg/code/common"
16
13
"github.com/code-payments/code-server/pkg/code/data/phone"
17
14
exchange_rate_util "github.com/code-payments/code-server/pkg/code/exchangerate"
18
15
"github.com/code-payments/code-server/pkg/code/limit"
16
+ currency_lib "github.com/code-payments/code-server/pkg/currency"
17
+ "github.com/code-payments/code-server/pkg/grpc/client"
18
+ "github.com/code-payments/code-server/pkg/kin"
19
19
)
20
20
21
21
func (s * transactionServer ) GetLimits (ctx context.Context , req * transactionpb.GetLimitsRequest ) (* transactionpb.GetLimitsResponse , error ) {
@@ -35,31 +35,35 @@ func (s *transactionServer) GetLimits(ctx context.Context, req *transactionpb.Ge
35
35
return nil , err
36
36
}
37
37
38
- zeroSendLimits := make (map [string ]* transactionpb.RemainingSendLimit )
38
+ zeroSendLimits := make (map [string ]* transactionpb.SendLimit )
39
39
zeroMicroPaymentLimits := make (map [string ]* transactionpb.MicroPaymentLimit )
40
+ zeroBuyModuleLimits := make (map [string ]* transactionpb.BuyModuleLimit )
40
41
for currency := range limit .SendLimits {
41
- zeroSendLimits [string (currency )] = & transactionpb.RemainingSendLimit {
42
- NextTransaction : 0 ,
42
+ zeroSendLimits [string (currency )] = & transactionpb.SendLimit {
43
+ NextTransaction : 0 ,
44
+ MaxPerTransaction : 0 ,
45
+ MaxPerDay : 0 ,
43
46
}
44
47
zeroMicroPaymentLimits [string (currency )] = & transactionpb.MicroPaymentLimit {
45
48
MaxPerTransaction : 0 ,
46
49
MinPerTransaction : 0 ,
47
50
}
48
51
}
49
- zeroSendLimits [string (currency_lib .KIN )] = & transactionpb.RemainingSendLimit {
52
+ zeroSendLimits [string (currency_lib .KIN )] = & transactionpb.SendLimit {
50
53
NextTransaction : 0 ,
51
54
}
52
55
zeroMicroPaymentLimits [string (currency_lib .KIN )] = & transactionpb.MicroPaymentLimit {
53
56
MaxPerTransaction : 0 ,
54
57
MinPerTransaction : 0 ,
55
58
}
56
59
zeroResp := & transactionpb.GetLimitsResponse {
57
- Result : transactionpb .GetLimitsResponse_OK ,
58
- RemainingSendLimitsByCurrency : zeroSendLimits ,
60
+ Result : transactionpb .GetLimitsResponse_OK ,
61
+ SendLimitsByCurrency : zeroSendLimits ,
62
+ MicroPaymentLimitsByCurrency : zeroMicroPaymentLimits ,
63
+ BuyModuleLimitsByCurrency : zeroBuyModuleLimits ,
59
64
DepositLimit : & transactionpb.DepositLimit {
60
65
MaxQuarks : 0 ,
61
66
},
62
- MicroPaymentLimitsByCurrency : zeroMicroPaymentLimits ,
63
67
}
64
68
65
69
verificationRecord , err := s .data .GetLatestPhoneVerificationForAccount (ctx , ownerAccount .PublicKey ().ToBase58 ())
@@ -108,7 +112,7 @@ func (s *transactionServer) GetLimits(ctx context.Context, req *transactionpb.Ge
108
112
// Part 1: Calculate send limits
109
113
//
110
114
111
- remainingSendLimits := make (map [string ]* transactionpb.RemainingSendLimit )
115
+ sendLimits := make (map [string ]* transactionpb.SendLimit )
112
116
for currency , sendLimit := range limit .SendLimits {
113
117
otherRate , ok := multiRateRecord .Rates [string (currency )]
114
118
if ! ok {
@@ -133,16 +137,20 @@ func (s *transactionServer) GetLimits(ctx context.Context, req *transactionpb.Ge
133
137
remainingNextTransaction = 0
134
138
}
135
139
136
- remainingSendLimits [string (currency )] = & transactionpb.RemainingSendLimit {
137
- NextTransaction : float32 (remainingNextTransaction ),
140
+ sendLimits [string (currency )] = & transactionpb.SendLimit {
141
+ NextTransaction : float32 (remainingNextTransaction ),
142
+ MaxPerTransaction : float32 (sendLimit .PerTransaction ),
143
+ MaxPerDay : float32 (sendLimit .Daily ),
138
144
}
139
145
}
140
146
141
- usdSendLimits := remainingSendLimits [string (currency_lib .USD )]
147
+ usdSendLimits := sendLimits [string (currency_lib .USD )]
142
148
143
149
// Inject a Kin limit based on the remaining USD amount and rate
144
- remainingSendLimits [string (currency_lib .KIN )] = & transactionpb.RemainingSendLimit {
145
- NextTransaction : usdSendLimits .NextTransaction / float32 (usdRate ),
150
+ sendLimits [string (currency_lib .KIN )] = & transactionpb.SendLimit {
151
+ NextTransaction : usdSendLimits .NextTransaction / float32 (usdRate ),
152
+ MaxPerTransaction : usdSendLimits .MaxPerTransaction / float32 (usdRate ),
153
+ MaxPerDay : usdSendLimits .MaxPerDay / float32 (usdRate ),
146
154
}
147
155
148
156
//
@@ -183,12 +191,25 @@ func (s *transactionServer) GetLimits(ctx context.Context, req *transactionpb.Ge
183
191
}
184
192
}
185
193
194
+ //
195
+ // Part 4: Calculate buy module limits
196
+ //
197
+
198
+ convertedBuyModuleLimits := make (map [string ]* transactionpb.BuyModuleLimit )
199
+ for currency , limits := range limit .SendLimits {
200
+ convertedBuyModuleLimits [string (currency )] = & transactionpb.BuyModuleLimit {
201
+ MaxPerTransaction : float32 (limits .PerTransaction ),
202
+ MinPerTransaction : float32 (limits .PerTransaction / 10 ),
203
+ }
204
+ }
205
+
186
206
return & transactionpb.GetLimitsResponse {
187
- Result : transactionpb .GetLimitsResponse_OK ,
188
- RemainingSendLimitsByCurrency : remainingSendLimits ,
207
+ Result : transactionpb .GetLimitsResponse_OK ,
208
+ SendLimitsByCurrency : sendLimits ,
209
+ MicroPaymentLimitsByCurrency : convertedMicroPaymentLimits ,
210
+ BuyModuleLimitsByCurrency : convertedBuyModuleLimits ,
189
211
DepositLimit : & transactionpb.DepositLimit {
190
212
MaxQuarks : kin .ToQuarks (uint64 (usdForNextDeposit / usdRate )),
191
213
},
192
- MicroPaymentLimitsByCurrency : convertedMicroPaymentLimits ,
193
214
}, nil
194
215
}
0 commit comments