From bf12f95664a3b69f81c3137ff3687ed173df3899 Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on ChromeOS)" <rob@synchro.net> Date: Sat, 25 Feb 2023 21:50:29 -0800 Subject: [PATCH] Create bbs.batch_clear() method Pass argument of 'true' to clear upload queue, otherwise download queue is cleared. This fixes issue #488 --- src/sbbs3/js_bbs.cpp | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp index c0ff9aff3f..d68c4720a3 100644 --- a/src/sbbs3/js_bbs.cpp +++ b/src/sbbs3/js_bbs.cpp @@ -21,6 +21,7 @@ #include "sbbs.h" #include "js_request.h" +#include "filedat.h" #ifdef JAVASCRIPT @@ -2173,6 +2174,34 @@ js_batchaddlist(JSContext *cx, uintN argc, jsval *arglist) return(JS_TRUE); } +static JSBool +js_batchclear(JSContext *cx, uintN argc, jsval *arglist) +{ + jsval *argv=JS_ARGV(cx, arglist); + sbbs_t* sbbs; + jsrefcount rc; + enum XFER_TYPE xfer_type = XFER_BATCH_DOWNLOAD; + + if((sbbs=js_GetPrivate(cx, JS_THIS_OBJECT(cx, arglist)))==NULL) + return(JS_FALSE); + + JS_SET_RVAL(cx, arglist, JSVAL_FALSE); + + if(!js_argc(cx, argc, 1)) + return(JS_FALSE); + + if(JSVAL_TO_BOOLEAN(argv[0])) + xfer_type = XFER_BATCH_UPLOAD; + + rc=JS_SUSPENDREQUEST(cx); + bool result = batch_list_clear(&sbbs->cfg, sbbs->useron.number, xfer_type); + JS_RESUMEREQUEST(cx, rc); + + JS_SET_RVAL(cx, arglist, BOOLEAN_TO_JSVAL(result)); + + return(JS_TRUE); +} + static JSBool js_viewfile(JSContext *cx, uintN argc, jsval *arglist) { @@ -2186,7 +2215,7 @@ js_viewfile(JSContext *cx, uintN argc, jsval *arglist) JS_SET_RVAL(cx, arglist, JSVAL_VOID); - if(!js_argc(cx, argc, 1)) + if(!js_argc(cx, argc, 1)) return JS_FALSE; JSVALUE_TO_MSTRING(cx, argv[0], cstr, NULL); @@ -4425,6 +4454,10 @@ static jsSyncMethodSpec js_bbs_functions[] = { ,JSDOCSTR("add file list to batch download queue") ,310 }, + {"batch_clear", js_batchclear, 1, JSTYPE_BOOLEAN, JSDOCSTR("upload=false") + ,JSDOCSTR("clear batch download (or upoload) queue") + ,320 + }, {"view_file", js_viewfile, 1, JSTYPE_BOOLEAN, JSDOCSTR("filename") ,JSDOCSTR("list contents of specified filename (complete path)") ,319 -- GitLab