@@ -60,6 +60,24 @@ contract LM_PC_PaymentRouter_v1 is
60
60
/// @dev The role that allows the pushing of payments.
61
61
bytes32 public constant PAYMENT_PUSHER_ROLE = "PAYMENT_PUSHER " ;
62
62
63
+ //--------------------------------------------------------------------------
64
+ // Initializer
65
+ function init (
66
+ IOrchestrator_v1 orchestrator_ ,
67
+ Metadata memory metadata ,
68
+ bytes memory configData
69
+ ) external override (Module_v1) initializer {
70
+ __Module_init (orchestrator_, metadata);
71
+
72
+ // Set the flags for the PaymentOrders
73
+ uint8 [] memory flags = new uint8 [](3 ); // The Module will use 3 flags
74
+ flags[0 ] = 1 ; // start, flag_ID 1
75
+ flags[1 ] = 2 ; // cliff, flag_ID 2
76
+ flags[2 ] = 3 ; // end, flag_ID 3
77
+
78
+ __ERC20PaymentClientBase_v1_init (flags);
79
+ }
80
+
63
81
//--------------------------------------------------------------------------
64
82
// Mutating Functions
65
83
@@ -72,16 +90,29 @@ contract LM_PC_PaymentRouter_v1 is
72
90
uint cliff ,
73
91
uint end
74
92
) public onlyModuleRole (PAYMENT_PUSHER_ROLE) {
75
- _addPaymentOrder (
76
- PaymentOrder (
77
- recipient,
78
- paymentToken,
79
- amount,
80
- start == 0 ? block .timestamp : start,
81
- cliff,
82
- end
83
- )
84
- );
93
+ bytes32 flags;
94
+ bytes32 [] memory data;
95
+
96
+ {
97
+ bytes32 [] memory paymentParameters = new bytes32 [](3 );
98
+ paymentParameters[0 ] = bytes32 (start);
99
+ paymentParameters[1 ] = bytes32 (cliff);
100
+ paymentParameters[2 ] = bytes32 (end);
101
+
102
+ (flags, data) = _assemblePaymentConfig (paymentParameters);
103
+ }
104
+
105
+ PaymentOrder memory order = PaymentOrder ({
106
+ recipient: recipient,
107
+ paymentToken: paymentToken,
108
+ amount: amount,
109
+ originChainId: block .chainid ,
110
+ targetChainId: block .chainid ,
111
+ flags: flags,
112
+ data: data
113
+ });
114
+
115
+ _addPaymentOrder (order);
85
116
86
117
// call PaymentProcessor
87
118
__Module_orchestrator.paymentProcessor ().processPayments (
@@ -105,20 +136,33 @@ contract LM_PC_PaymentRouter_v1 is
105
136
|| paymentTokens.length != numOfOrders
106
137
|| amounts.length != numOfOrders
107
138
) {
108
- revert Module__ERC20PaymentClientBase__ArrayLengthMismatch ();
139
+ revert Module__LM_PC_PaymentRouter_v1__ArrayLengthMismatch ();
140
+ }
141
+
142
+ bytes32 flags;
143
+ bytes32 [] memory data;
144
+
145
+ {
146
+ bytes32 [] memory paymentParameters = new bytes32 [](3 );
147
+ paymentParameters[0 ] = bytes32 (start);
148
+ paymentParameters[1 ] = bytes32 (cliff);
149
+ paymentParameters[2 ] = bytes32 (end);
150
+
151
+ (flags, data) = _assemblePaymentConfig (paymentParameters);
109
152
}
110
153
111
154
// Loop through the arrays and add Payments
112
155
for (uint8 i = 0 ; i < numOfOrders; i++ ) {
113
156
_addPaymentOrder (
114
- PaymentOrder (
115
- recipients[i],
116
- paymentTokens[i],
117
- amounts[i],
118
- start == 0 ? block .timestamp : start,
119
- cliff,
120
- end
121
- )
157
+ PaymentOrder ({
158
+ recipient: recipients[i],
159
+ paymentToken: paymentTokens[i],
160
+ amount: amounts[i],
161
+ originChainId: block .chainid ,
162
+ targetChainId: block .chainid ,
163
+ flags: flags,
164
+ data: data
165
+ })
122
166
);
123
167
}
124
168
0 commit comments