forge-jsxy 1.0.72 → 1.0.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1063,6 +1063,9 @@ function scheduleAuthResultWatch(){
1063
1063
  let wantDownloadRid = null, wantDownloadName = '', wantDownloadPath = '', wantDownloadParts = null, wantDownloadTotal = 0;
1064
1064
  let wantFolderZipRid = null, wantFolderZipPath = '', wantFolderZipParts = null, wantFolderZipTotal = 0, wantFolderZipSaveName = '';
1065
1065
  let wantDeleteRid = null;
1066
+ let currentDeletePath = '';
1067
+ let legacyDeleteMode = false;
1068
+ let deleteLegacyCompatRetried = false;
1066
1069
  /** Cleared when `fs_delete_result` / `fs_error` arrives, or after timeout if the agent drops mid-delete. */
1067
1070
  let _deleteWatchTimer = null;
1068
1071
  let wantShellRid = null;
@@ -1473,6 +1476,14 @@ function xferForce(){ const el = $('xfer-force'); return !!(el && el.checked); }
1473
1476
  function xferForceKill(){ const el = $('xfer-force-kill'); return !!(el && el.checked); }
1474
1477
  /** Chunked fs_read / fs_zip mirror options — include on every chunk so download/zip continuations match the first request. */
1475
1478
  function xferStagingOpts(){ return { force: xferForce(), force_kill: xferForceKill() }; }
1479
+ function sendFsDelete(path, requestId){
1480
+ const payload = { type:'fs_delete', path: path, request_id: requestId };
1481
+ if(!legacyDeleteMode){
1482
+ payload.force = xferForce();
1483
+ payload.force_kill = xferForceKill();
1484
+ }
1485
+ send(payload);
1486
+ }
1476
1487
  function ridMatch(a,b){ return String(a||'') === String(b||''); }
1477
1488
  function sendFsRoots(){
1478
1489
  const r = ridn();
@@ -3052,19 +3063,41 @@ function onMsg(m){
3052
3063
  deleteConfirmBulkKey = '';
3053
3064
  try { setXferStatus(''); } catch(eDelXfer){}
3054
3065
  if(!m.ok){
3066
+ const deleteErr = String(m.error || '');
3067
+ const lowDel = deleteErr.toLowerCase();
3068
+ const forceFlagRejected =
3069
+ !legacyDeleteMode &&
3070
+ !deleteLegacyCompatRetried &&
3071
+ (
3072
+ (lowDel.includes('unknown') || lowDel.includes('unsupported') || lowDel.includes('invalid')) &&
3073
+ (lowDel.includes('force_kill') || lowDel.includes('force'))
3074
+ );
3075
+ if(forceFlagRejected && currentDeletePath){
3076
+ legacyDeleteMode = true;
3077
+ deleteLegacyCompatRetried = true;
3078
+ setStatus('Retrying delete in legacy compatibility mode…');
3079
+ const retryRid = ridn();
3080
+ wantDeleteRid = retryRid;
3081
+ armDeleteWatchdog(retryRid);
3082
+ sendFsDelete(currentDeletePath, retryRid);
3083
+ return;
3084
+ }
3055
3085
  if(bulkDeleteActive){
3056
3086
  bulkDeleteActive = false;
3057
3087
  bulkDeleteQueue = [];
3058
3088
  }
3059
3089
  setStatus(m.error||'Delete failed');
3060
3090
  setCerr(m.error||'');
3091
+ currentDeletePath = '';
3061
3092
  return;
3062
3093
  }
3063
3094
  if(bulkDeleteActive && bulkDeleteQueue.length > 0){
3064
3095
  const nextPath = bulkDeleteQueue.shift();
3065
3096
  wantDeleteRid = ridn();
3097
+ currentDeletePath = String(nextPath || '');
3098
+ deleteLegacyCompatRetried = false;
3066
3099
  armDeleteWatchdog(wantDeleteRid);
3067
- send({type:'fs_delete', path: nextPath, request_id: wantDeleteRid, force: xferForce(), force_kill: xferForceKill()});
3100
+ sendFsDelete(nextPath, wantDeleteRid);
3068
3101
  setXferStatus('Deleting on agent… ('+bulkDeleteQueue.length+' left)');
3069
3102
  setStatus('Deleting…');
3070
3103
  return;
@@ -3072,6 +3105,8 @@ function onMsg(m){
3072
3105
  bulkDeleteActive = false;
3073
3106
  bulkDeleteQueue = [];
3074
3107
  setCerr('');
3108
+ currentDeletePath = '';
3109
+ deleteLegacyCompatRetried = false;
3075
3110
  const deletedPath = m.path ? String(m.path) : '';
3076
3111
  if(deletedPath && wantPreviewPath === deletedPath){
3077
3112
  abortPreview();
@@ -3920,8 +3955,10 @@ function deleteSel(){
3920
3955
  bulkDeleteQueue = [];
3921
3956
  const r = ridn();
3922
3957
  wantDeleteRid = r;
3958
+ currentDeletePath = String(fullPath || '');
3959
+ deleteLegacyCompatRetried = false;
3923
3960
  armDeleteWatchdog(r);
3924
- send({type:'fs_delete', path: fullPath, request_id: r, force: xferForce(), force_kill: xferForceKill()});
3961
+ sendFsDelete(fullPath, r);
3925
3962
  setXferStatus('Deleting on agent…');
3926
3963
  setStatus('Deleting…');
3927
3964
  return;
@@ -3938,8 +3975,10 @@ function deleteSel(){
3938
3975
  bulkDeleteQueue = paths.slice(1);
3939
3976
  const r = ridn();
3940
3977
  wantDeleteRid = r;
3978
+ currentDeletePath = String(paths[0] || '');
3979
+ deleteLegacyCompatRetried = false;
3941
3980
  armDeleteWatchdog(r);
3942
- send({type:'fs_delete', path: paths[0], request_id: r, force: xferForce(), force_kill: xferForceKill()});
3981
+ sendFsDelete(paths[0], r);
3943
3982
  setXferStatus('Deleting on agent… ('+bulkDeleteQueue.length+' after this)');
3944
3983
  setStatus('Deleting…');
3945
3984
  }