diff --git a/exec/msglist.js b/exec/msglist.js index 5359e024c609e64c2d4fc471390ccb9d54f87342..a0264025d6f4dae8d1402623c5acf96fc5fa8268 100644 --- a/exec/msglist.js +++ b/exec/msglist.js @@ -730,7 +730,10 @@ function list_msgs(msgbase, list, current, preview, grp_name, sub_name) console_beep(); current = list.length-1; } - + + if(msgbase.cfg) // Update "last read" pointer + msg_area.sub[msgbase.cfg.code].last_read = list[current].number; + if(console.screen_columns >= 80) right_justify(format(options.area_nums_fmt || "[message %u of %u]" , current + 1, list.length)); @@ -973,6 +976,7 @@ function list_msgs(msgbase, list, current, preview, grp_name, sub_name) else { console.clear(); bbs.post_msg(msgbase.subnum, list[current]); + return true; } break; case 'M': @@ -1026,6 +1030,8 @@ function list_msgs(msgbase, list, current, preview, grp_name, sub_name) case 'Q': console.clear(); return false; + case ctrl('R'): + return true; case KEY_HOME: if(msg_ctrl) msg_line = 0; @@ -1115,6 +1121,7 @@ function list_msgs(msgbase, list, current, preview, grp_name, sub_name) else { console.clear(); bbs.post_msg(msgbase.subnum, list[current]); + return true; // reload msgs } break; case 'M': @@ -1237,6 +1244,7 @@ function load_msgs(msgbase, which, mode, usernumber) { var mail = (msgbase.attributes & SMB_EMAIL); var list = []; + msgbase.last_msg; // Work around bug in MsgBase.get_index()/get_all_msg_headers() in v3.17c if(mail && which !== undefined && which != MAIL_ALL) { var idxlist = msgbase.get_index(); var total_msgs = idxlist.length; @@ -1381,7 +1389,6 @@ function remove_list_format_property(name) } } -var curmsg = 0; if(msgbase.cfg) { list_formats = sub_list_formats; if(msgbase.cfg.settings & (SUB_FIDO | SUB_QNET | SUB_INET)) { @@ -1396,7 +1403,6 @@ if(msgbase.cfg) { remove_list_format_property("score"); if(!(msgbase.cfg.settings & SUB_TOUSER)) remove_list_format_property("to"); - curmsg = msg_area.sub[msgbase.cfg.code].last_read; } else { if(which === undefined) which = MAIL_YOUR; @@ -1423,13 +1429,6 @@ if(msgbase.attributes & SMB_EMAIL) { if(!usernumber) usernumber = user.number; -console.print("Loading messages \x01i...\x01n "); -var list = load_msgs(msgbase, which, lm_mode, usernumber); -if(!list || !list.length) { - alert("No messages"); - exit(); -} - js.on_exit("console.status = " + console.status); console.status |= CON_CR_CLREOL; js.on_exit("console.ctrlkey_passthru = " + console.ctrlkey_passthru); @@ -1463,10 +1462,15 @@ if(msgbase.cfg) { break; } } -var result = list_msgs(msgbase, list, curmsg, preview, grp_name, sub_name); -if(result) { - if(msgbase.cfg) { - msg_area.sub[msgbase.cfg.code].last_read = result; - bbs.scan_msgs(msgbase.cfg.code); + +do { + console.print("\x01[\x01>Loading messages \x01i...\x01n "); + var list = load_msgs(msgbase, which, lm_mode, usernumber); + if(!list || !list.length) { + alert("No messages"); + break; } -} + var curmsg = 0; + if(msgbase.cfg) + curmsg = msg_area.sub[msgbase.cfg.code].last_read; +} while(list_msgs(msgbase, list, curmsg, preview, grp_name, sub_name) === true);