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.
- package/assets/files-explorer-template.html +42 -3
- package/assets/remote-control-template.html +617 -64
- package/dist/assets/files-explorer-template.html +43 -4
- package/dist/assets/remote-control-template.html +617 -64
- package/dist/discordAgentScreenshot.js +11 -2
- package/dist/discordRelayUpload.js +1 -1
- package/dist/fsMessages.js +10 -1
- package/dist/fsProtocol.d.ts +15 -2
- package/dist/fsProtocol.js +504 -30
- package/package.json +1 -1
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3981
|
+
sendFsDelete(paths[0], r);
|
|
3943
3982
|
setXferStatus('Deleting on agent… ('+bulkDeleteQueue.length+' after this)');
|
|
3944
3983
|
setStatus('Deleting…');
|
|
3945
3984
|
}
|