From 0562a817117223784c99b630d70a5f9a303c3728 Mon Sep 17 00:00:00 2001
From: echicken <>
Date: Fri, 17 Nov 2017 14:17:31 +0000
Subject: [PATCH] Use a Frame for all output.  Call bbs.node_sync in loop. 
 Prevent node messages from being delivered.

---
 xtrn/chat_pager/page_sysop.js | 34 ++++++++++++++++++++--------------
 1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/xtrn/chat_pager/page_sysop.js b/xtrn/chat_pager/page_sysop.js
index 0184b7c609..083466c84a 100644
--- a/xtrn/chat_pager/page_sysop.js
+++ b/xtrn/chat_pager/page_sysop.js
@@ -1,6 +1,7 @@
 load('sbbsdefs.js');
-load(js.exec_dir + 'lib.js');
+load('frame.js');
 load('progress-bar.js');
+load(js.exec_dir + 'lib.js');
 
 function get_last_queued_value(queue, valname) {
     var val, temp_val;
@@ -10,17 +11,17 @@ function get_last_queued_value(queue, valname) {
     return val;
 }
 
-function await_page_response(settings) {
+function await_page_response(settings, frame) {
     var queue = new Queue(settings.queue.queue_name);
     var valname = "chat_" + bbs.node_num;
     var answered = false;
     var stime = system.timer;
     var utime = system.timer;
-    var progress_bar = new ProgressBar(1, 2);
+    var progress_bar = new ProgressBar(1, 2, frame.width, frame);
     progress_bar.init();
     while (
         (system.timer - stime) * 1000 < settings.terminal.wait_time &&
-        console.inkey(K_NONE) == '' &&
+        console.inkey(K_NONE, 5) == '' &&
         !answered
     ) {
         var now = system.timer;
@@ -33,6 +34,8 @@ function await_page_response(settings) {
         }
         var val = get_last_queued_value(queue, valname);
         if (typeof val == 'number' && val > stime) answered = true;
+        frame.cycle();
+        bbs.node_sync();
         yield();
     }
     progress_bar.set_progress(100);
@@ -42,14 +45,16 @@ function await_page_response(settings) {
 }
 
 function main() {
+    console.clear();
+    var sys_stat = bbs.sys_status;
+    bbs.sys_status|=SS_MOFF;
     var settings = load_settings(js.exec_dir + 'settings.ini');
-    console.clear(WHITE);
-    console.home(0, 0);
-    console.center(format(settings.terminal.wait_message, system.operator));
-    console.crlf();
-    console.center(settings.terminal.cancel_message);
-    var xy = console.getxy();
-    if (settings !== null && await_page_response(settings)) {
+    var frame = new Frame(1, 1, console.screen_columns, 4, WHITE);
+    frame.center(format(settings.terminal.wait_message, system.operator));
+    frame.gotoxy(1, 3);
+    frame.center(settings.terminal.cancel_message);
+    frame.open();
+    if (settings !== null && await_page_response(settings, frame)) {
         if (settings.terminal.irc_pull) {
             bbs.exec(
                 format(
@@ -61,11 +66,12 @@ function main() {
             );
         }
     } else {
-        console.gotoxy(xy);
-        console.clearline();
-        console.center(format(bbs.text(522).trim(), system.operator));
+        frame.gotoxy(1, 3);
+        frame.center(format(bbs.text(522).trim(), system.operator));
         console.pause();
+        frame.close();
     }
+    bbs.sys_status = sys_stat;
 }
 
 main();
-- 
GitLab