@@ -8,9 +8,11 @@ import (
8
8
9
9
chatpb "github.com/code-payments/code-protobuf-api/generated/go/chat/v1"
10
10
commonpb "github.com/code-payments/code-protobuf-api/generated/go/common/v1"
11
+ transactionpb "github.com/code-payments/code-protobuf-api/generated/go/transaction/v2"
11
12
12
13
"github.com/code-payments/code-server/pkg/code/common"
13
14
code_data "github.com/code-payments/code-server/pkg/code/data"
15
+ "github.com/code-payments/code-server/pkg/code/data/action"
14
16
"github.com/code-payments/code-server/pkg/code/data/chat"
15
17
"github.com/code-payments/code-server/pkg/code/data/intent"
16
18
)
@@ -27,7 +29,7 @@ type MessageWithOwner struct {
27
29
// that should be pushed are returned.
28
30
//
29
31
// Note: Tests covered in SubmitIntent history tests
30
- func SendMerchantExchangeMessage (ctx context.Context , data code_data.Provider , intentRecord * intent.Record ) ([]* MessageWithOwner , error ) {
32
+ func SendMerchantExchangeMessage (ctx context.Context , data code_data.Provider , intentRecord * intent.Record , actionRecords [] * action. Record ) ([]* MessageWithOwner , error ) {
31
33
messageId := intentRecord .IntentId
32
34
33
35
// There are three possible chats for a merchant:
@@ -47,8 +49,13 @@ func SendMerchantExchangeMessage(ctx context.Context, data code_data.Provider, i
47
49
if ! ok {
48
50
return nil , nil
49
51
}
52
+ exchangeDataMinusFees := getExchangeDataMinusFees (exchangeData , intentRecord , actionRecords )
50
53
51
- verbByMessageReceiver := make (map [string ]chatpb.ExchangeDataContent_Verb )
54
+ type verbAndExchangeData struct {
55
+ verb chatpb.ExchangeDataContent_Verb
56
+ exchangeData * transactionpb.ExchangeData
57
+ }
58
+ verbAndExchangeDataByMessageReceiver := make (map [string ]* verbAndExchangeData )
52
59
switch intentRecord .IntentType {
53
60
case intent .SendPrivatePayment :
54
61
if intentRecord .SendPrivatePaymentMetadata .IsMicroPayment {
@@ -63,9 +70,15 @@ func SendMerchantExchangeMessage(ctx context.Context, data code_data.Provider, i
63
70
isVerifiedChat = paymentRequestRecord .IsVerified
64
71
}
65
72
66
- verbByMessageReceiver [intentRecord .InitiatorOwnerAccount ] = chatpb .ExchangeDataContent_SPENT
73
+ verbAndExchangeDataByMessageReceiver [intentRecord .InitiatorOwnerAccount ] = & verbAndExchangeData {
74
+ verb : chatpb .ExchangeDataContent_SPENT ,
75
+ exchangeData : exchangeData ,
76
+ }
67
77
if len (intentRecord .SendPrivatePaymentMetadata .DestinationOwnerAccount ) > 0 {
68
- verbByMessageReceiver [intentRecord .SendPrivatePaymentMetadata .DestinationOwnerAccount ] = chatpb .ExchangeDataContent_RECEIVED
78
+ verbAndExchangeDataByMessageReceiver [intentRecord .SendPrivatePaymentMetadata .DestinationOwnerAccount ] = & verbAndExchangeData {
79
+ verb : chatpb .ExchangeDataContent_RECEIVED ,
80
+ exchangeData : exchangeDataMinusFees ,
81
+ }
69
82
}
70
83
} else if intentRecord .SendPrivatePaymentMetadata .IsWithdrawal {
71
84
if len (intentRecord .SendPrivatePaymentMetadata .DestinationOwnerAccount ) > 0 {
@@ -79,7 +92,10 @@ func SendMerchantExchangeMessage(ctx context.Context, data code_data.Provider, i
79
92
chatTitle = * destinationAccountInfoRecord .RelationshipTo
80
93
chatType = chat .ChatTypeExternalApp
81
94
isVerifiedChat = true
82
- verbByMessageReceiver [intentRecord .SendPrivatePaymentMetadata .DestinationOwnerAccount ] = chatpb .ExchangeDataContent_RECEIVED
95
+ verbAndExchangeDataByMessageReceiver [intentRecord .SendPrivatePaymentMetadata .DestinationOwnerAccount ] = & verbAndExchangeData {
96
+ verb : chatpb .ExchangeDataContent_RECEIVED ,
97
+ exchangeData : exchangeData ,
98
+ }
83
99
}
84
100
}
85
101
}
@@ -96,7 +112,10 @@ func SendMerchantExchangeMessage(ctx context.Context, data code_data.Provider, i
96
112
chatTitle = * destinationAccountInfoRecord .RelationshipTo
97
113
chatType = chat .ChatTypeExternalApp
98
114
isVerifiedChat = true
99
- verbByMessageReceiver [intentRecord .SendPublicPaymentMetadata .DestinationOwnerAccount ] = chatpb .ExchangeDataContent_RECEIVED
115
+ verbAndExchangeDataByMessageReceiver [intentRecord .SendPublicPaymentMetadata .DestinationOwnerAccount ] = & verbAndExchangeData {
116
+ verb : chatpb .ExchangeDataContent_RECEIVED ,
117
+ exchangeData : exchangeData ,
118
+ }
100
119
}
101
120
}
102
121
}
@@ -112,14 +131,17 @@ func SendMerchantExchangeMessage(ctx context.Context, data code_data.Provider, i
112
131
chatTitle = * destinationAccountInfoRecord .RelationshipTo
113
132
chatType = chat .ChatTypeExternalApp
114
133
isVerifiedChat = true
115
- verbByMessageReceiver [intentRecord .ExternalDepositMetadata .DestinationOwnerAccount ] = chatpb .ExchangeDataContent_RECEIVED
134
+ verbAndExchangeDataByMessageReceiver [intentRecord .ExternalDepositMetadata .DestinationOwnerAccount ] = & verbAndExchangeData {
135
+ verb : chatpb .ExchangeDataContent_RECEIVED ,
136
+ exchangeData : exchangeData ,
137
+ }
116
138
}
117
139
default :
118
140
return nil , nil
119
141
}
120
142
121
143
var messagesToPush []* MessageWithOwner
122
- for account , verb := range verbByMessageReceiver {
144
+ for account , verbAndExchangeData := range verbAndExchangeDataByMessageReceiver {
123
145
receiver , err := common .NewAccountFromPublicKeyString (account )
124
146
if err != nil {
125
147
return nil , err
@@ -129,9 +151,9 @@ func SendMerchantExchangeMessage(ctx context.Context, data code_data.Provider, i
129
151
{
130
152
Type : & chatpb.Content_ExchangeData {
131
153
ExchangeData : & chatpb.ExchangeDataContent {
132
- Verb : verb ,
154
+ Verb : verbAndExchangeData . verb ,
133
155
ExchangeData : & chatpb.ExchangeDataContent_Exact {
134
- Exact : exchangeData ,
156
+ Exact : verbAndExchangeData . exchangeData ,
135
157
},
136
158
},
137
159
},
@@ -150,7 +172,7 @@ func SendMerchantExchangeMessage(ctx context.Context, data code_data.Provider, i
150
172
isVerifiedChat ,
151
173
receiver ,
152
174
protoMessage ,
153
- verb != chatpb .ExchangeDataContent_RECEIVED || ! isVerifiedChat ,
175
+ verbAndExchangeData . verb != chatpb .ExchangeDataContent_RECEIVED || ! isVerifiedChat ,
154
176
)
155
177
if err != nil && err != chat .ErrMessageAlreadyExists {
156
178
return nil , errors .Wrap (err , "error persisting chat message" )
0 commit comments