@@ -17,7 +17,7 @@ use networking::{
17
17
} ;
18
18
use oreo_errors:: OreoError ;
19
19
use serde_json:: json;
20
- use tracing:: { error, info} ;
20
+ use tracing:: { debug , error, info} ;
21
21
use utils:: { default_secp, sign, verify, Signature } ;
22
22
23
23
use crate :: SharedState ;
@@ -40,7 +40,8 @@ pub async fn import_account_handler<T: DBHandler>(
40
40
outgoing_view_key,
41
41
public_address,
42
42
created_at,
43
- } = import;
43
+ } = import. clone ( ) ;
44
+ info ! ( "Import account request: {:?}" , import) ;
44
45
let rpc_data = RpcImportAccountRequest {
45
46
view_key,
46
47
incoming_view_key : incoming_view_key. clone ( ) ,
@@ -86,6 +87,7 @@ pub async fn import_account_handler<T: DBHandler>(
86
87
out_vk : outgoing_view_key. clone ( ) ,
87
88
head : Some ( head) ,
88
89
} ;
90
+ info ! ( "Scan request fooooo: {:?}" , scan_request) ;
89
91
let msg = bincode:: serialize ( & scan_request) . unwrap ( ) ;
90
92
let signature = sign ( & default_secp ( ) , & msg[ ..] , & shared. secp . sk )
91
93
. unwrap ( )
@@ -196,34 +198,35 @@ pub async fn rescan_account_handler<T: DBHandler>(
196
198
error ! ( "Failed to update scan status: {:?}" , err) ;
197
199
return err. into_response ( ) ;
198
200
}
199
- if let Ok ( status) = shared
200
- . rpc_handler
201
- . get_account_status ( RpcGetAccountStatusRequest {
202
- account : account. name . clone ( ) ,
203
- } )
204
- {
205
- let head = status. data . account . head . unwrap_or ( BlockInfo {
201
+ let head;
202
+ if account. create_hash . is_none ( ) || account. create_head . is_none ( ) {
203
+ head = BlockInfo {
206
204
hash : shared. genesis_hash . clone ( ) ,
207
205
sequence : MAINNET_GENESIS_SEQUENCE as u64 ,
208
- } ) ;
209
- let scan_request = ScanRequest {
210
- address : account. address . clone ( ) ,
211
- in_vk : account. in_vk . clone ( ) ,
212
- out_vk : account. out_vk . clone ( ) ,
213
- head : Some ( head) ,
214
206
} ;
215
- let msg = bincode:: serialize ( & scan_request) . unwrap ( ) ;
216
- let signature = sign ( & default_secp ( ) , & msg[ ..] , & shared. secp . sk )
217
- . unwrap ( )
218
- . to_string ( ) ;
219
- let scan_request = shared. scan_handler . submit_scan_request ( DecryptionMessage {
220
- message : scan_request,
221
- signature,
222
- } ) ;
223
- if let Err ( err) = scan_request {
224
- error ! ( "Failed to submit scan request: {:?}" , err) ;
225
- return err. into_response ( ) ;
226
- }
207
+ } else {
208
+ head = BlockInfo {
209
+ hash : account. create_hash . unwrap ( ) ,
210
+ sequence : account. create_head . unwrap ( ) as u64 ,
211
+ } ;
212
+ }
213
+ let scan_request = ScanRequest {
214
+ address : account. address . clone ( ) ,
215
+ in_vk : account. in_vk . clone ( ) ,
216
+ out_vk : account. out_vk . clone ( ) ,
217
+ head : Some ( head) ,
218
+ } ;
219
+ let msg = bincode:: serialize ( & scan_request) . unwrap ( ) ;
220
+ let signature = sign ( & default_secp ( ) , & msg[ ..] , & shared. secp . sk )
221
+ . unwrap ( )
222
+ . to_string ( ) ;
223
+ let scan_request = shared. scan_handler . submit_scan_request ( DecryptionMessage {
224
+ message : scan_request,
225
+ signature,
226
+ } ) ;
227
+ if let Err ( err) = scan_request {
228
+ error ! ( "Failed to submit scan request: {:?}" , err) ;
229
+ return err. into_response ( ) ;
227
230
}
228
231
RpcResponse {
229
232
status : 200 ,
@@ -255,15 +258,22 @@ pub async fn update_scan_status_handler<T: DBHandler>(
255
258
return e. into_response ( ) ;
256
259
}
257
260
let account = db_account. unwrap ( ) ;
261
+ let reset_created_at = account. create_head . is_none ( ) || account. create_head . unwrap ( ) == 1 ;
262
+ let reset = shared. rpc_handler . reset_account ( RpcResetAccountRequest {
263
+ account : account. name . clone ( ) ,
264
+ reset_scanning_enabled : Some ( false ) ,
265
+ reset_created_at : Some ( reset_created_at) ,
266
+ } ) ;
267
+ if let Err ( e) = reset {
268
+ return e. into_response ( ) ;
269
+ }
258
270
message. account = account. name . clone ( ) ;
259
- let scan_complete = message. scan_complete . clone ( ) ;
260
- info ! ( "set account message: {:?}" , message. clone( ) ) ;
261
- let resp = shared. rpc_handler . set_account_head ( message) ;
271
+ let resp = shared. rpc_handler . set_account_head ( message. clone ( ) ) ;
262
272
263
273
if resp. is_err ( ) {
264
- info ! ( "Failed to update account head: {:?}" , resp. unwrap_err( ) ) ;
274
+ error ! ( "Failed to update account head: {:?}" , resp. unwrap_err( ) ) ;
265
275
}
266
- if scan_complete {
276
+ if message . scan_complete {
267
277
let _ = shared. rpc_handler . set_scanning ( RpcSetScanningRequest {
268
278
account : account. name . clone ( ) ,
269
279
enabled : true ,
0 commit comments