@@ -131,15 +131,39 @@ impl<S: Storage> EventManager<S> {
131131 return Err ( anyhow ! ( "Can't find event data into this event" ) ) ;
132132 }
133133
134- let maker_address = event
134+ let order_type = event
135135 . keys
136- . get ( 3 )
137- . ok_or_else ( || anyhow ! ( "Maker address not found" ) ) ?;
136+ . get ( 2 )
137+ . ok_or_else ( || anyhow ! ( "Order type not found" ) ) ?;
138+
139+ let type_1 = FieldElement :: from_hex_be ( "0x1" ) ?;
140+ let type_3 = FieldElement :: from_hex_be ( "0x3" ) ?;
141+ let is_basic_order = order_type == & type_1 || order_type == & type_3;
142+
143+ let ( from_address, to_address) = if is_basic_order {
144+ (
145+ event
146+ . keys
147+ . get ( 3 )
148+ . ok_or_else ( || anyhow ! ( "From address not found" ) ) ?,
149+ event
150+ . data
151+ . first ( )
152+ . ok_or_else ( || anyhow ! ( "To address not found" ) ) ?,
153+ )
154+ } else {
155+ (
156+ event
157+ . data
158+ . first ( )
159+ . ok_or_else ( || anyhow ! ( "Taker address not found" ) ) ?,
160+ event
161+ . keys
162+ . get ( 3 )
163+ . ok_or_else ( || anyhow ! ( "Maker address not found" ) ) ?,
164+ )
165+ } ;
138166
139- let taker_address = event
140- . data
141- . first ( )
142- . ok_or_else ( || anyhow ! ( "Taker address not found" ) ) ?;
143167 let currency_address = event
144168 . data
145169 . get ( 1 )
@@ -202,21 +226,16 @@ impl<S: Storage> EventManager<S> {
202226 . map_err ( |_| anyhow ! ( "Failed to parse token id high" ) ) ?,
203227 } ;
204228
205- let event_id = Self :: get_event_id (
206- & token_id,
207- maker_address,
208- taker_address,
209- block_timestamp,
210- event,
211- ) ;
229+ let event_id =
230+ Self :: get_event_id ( & token_id, from_address, to_address, block_timestamp, event) ;
212231
213232 Ok ( TokenSaleEvent {
214233 token_event_id : to_hex_str ( & event_id) ,
215234 event_type : EventType :: Sale ,
216235 block_number : event. block_number ,
217236 block_timestamp,
218- from_address : to_hex_str ( maker_address ) ,
219- to_address : to_hex_str ( taker_address ) ,
237+ from_address : to_hex_str ( from_address ) ,
238+ to_address : to_hex_str ( to_address ) ,
220239 nft_contract_address : to_hex_str ( nft_contract_address) ,
221240 nft_type : None ,
222241 transaction_hash : to_hex_str ( & event. transaction_hash ) ,
0 commit comments