@@ -201,8 +201,8 @@ class CloudController {
201201 if ( ! this . _metadata ?. Updated ) return false
202202 if ( ! this . _lastUploadedItemModified ) return false
203203 if ( this . Parent . SaveController ?. IsDeleted && ! this . _metadata . Deleted ) return false
204- const localModified =
205- this . Parent . SaveController . LastModified || this . Parent . SaveController . Created
204+ const sc = this . Parent . SaveController
205+ const localModified = sc ?. LastModified || sc ?. Created || 0
206206 return (
207207 this . _lastUploadedItemModified >= this . _metadata . ItemModified &&
208208 this . _lastUploadedItemModified >= localModified
@@ -400,22 +400,44 @@ class CloudController {
400400 continue
401401 }
402402
403+ if ( toRaw ( item ) . SaveController ?. IsDeleted && ! item . CloudController . _metadata ?. Deleted ) {
404+ const sc = toRaw ( item ) . SaveController
405+ const deletedMeta : dbItemMeta = {
406+ ...item . CloudController . Metadata . Serialize ( ) ,
407+ item_modified : sc . LastModified ,
408+ deleted : sc . DeleteTime ,
409+ }
410+ try {
411+ const res = await updateItem ( deletedMeta , 'item' )
412+ if ( res . data ) {
413+ item . CloudController . Metadata = { ...deletedMeta , ...res . data }
414+ }
415+ item . CloudController . _lastUploadedItemModified = sc . LastModified
416+ toRaw ( item ) . SaveController . saveSilent ( )
417+ } catch ( e ) {
418+ failures . push ( { item, error : e } )
419+ }
420+ continue
421+ }
422+
403423 if ( ! item . CloudController . _lastFieldHashes ) {
404424 const hasPriorSync = Object . keys ( item . CloudController . _fieldTs ) . length > 0
405425 const hasServerRecord = ! ! item . CloudController . _metadata ?. Updated
406426 if ( hasPriorSync || hasServerRecord ) {
407- try {
408- await item . CloudController . syncFromCloud ( )
409- } catch ( syncErr ) {
410- failures . push ( { item, error : syncErr } )
427+ if ( ! toRaw ( item ) . SaveController ?. IsDeleted ) {
428+ try {
429+ await item . CloudController . syncFromCloud ( )
430+ } catch ( syncErr ) {
431+ failures . push ( { item, error : syncErr } )
432+ }
411433 }
412434 continue
413435 }
414436 }
415437
416438 const prepared = CloudController . prepareUpload ( item )
417439 if ( ! prepared ) {
418- if ( item . CloudController . serverVersionChanged ) {
440+ if ( item . CloudController . serverVersionChanged && ! toRaw ( item ) . SaveController ?. IsDeleted ) {
419441 try {
420442 await item . CloudController . syncFromCloud ( )
421443 } catch ( syncErr ) {
@@ -510,7 +532,7 @@ class CloudController {
510532 logger . error ( `BatchUpdateCloud upload failed: ${ task . item . Name } ` , r . reason )
511533 failures . push ( { item : task . item , error : r . reason } )
512534 compensations . push (
513- updateItem ( task . previousMeta ) . catch ( err =>
535+ updateItem ( toRaw ( task . item ) . SaveController ?. IsDeleted ? task . meta : task . previousMeta ) . catch ( err =>
514536 logger . warn (
515537 `BatchUpdateCloud: DynamoDB compensation failed for ${ task . item . Name } ` ,
516538 err
0 commit comments