Change to use list_tagged when offering message pages for users
This commit is contained in:
parent
2ba3fbf231
commit
0bf0e223b5
@ -239,24 +239,26 @@ PageFrame.prototype.loadMessage = function(page) {
|
||||
var newmsgs = area.newMsgsToMe();
|
||||
log(LOG_DEBUG,'User has: '+newmsgs.length+' msgs to read to ME');
|
||||
if (newmsgs.length) {
|
||||
var next = newmsgs.shift();
|
||||
var next = newmsgs[0];
|
||||
|
||||
log(LOG_DEBUG,'NEXT is: '+next.tag+' , this is: '+msg.tag);
|
||||
|
||||
if (next.tag === msg.tag)
|
||||
//log(LOG_DEBUG,'- NEXT is: '+next.tags+', this is: '+msg.tags);
|
||||
if (next.tags === msg.tags) {
|
||||
log(LOG_DEBUG,'- Updating scan_ptr to: '+next.number);
|
||||
stats.scan_ptr = next.number;
|
||||
}
|
||||
}
|
||||
|
||||
// if this message is the next message, update last_read
|
||||
var newmsgs = area.newMsgs();
|
||||
log(LOG_DEBUG,'User has: '+newmsgs.length+' msgs to read');
|
||||
if (newmsgs.length) {
|
||||
var next = newmsgs.shift();
|
||||
var next = newmsgs[0];
|
||||
|
||||
log(LOG_DEBUG,'NEXT is: '+next.tag+' , this is: '+msg.tag);
|
||||
|
||||
if (next.tag === msg.tag)
|
||||
//log(LOG_DEBUG,'- NEXT is: '+next.tags+', this is: '+msg.tags);
|
||||
if (next.tags === msg.tags) {
|
||||
log(LOG_DEBUG,'- Updating last_read to: '+next.number);
|
||||
stats.last_read = next.number;
|
||||
}
|
||||
}
|
||||
|
||||
log(LOG_DEBUG,'Built frame: ['+this.frame+']['+this.index+'] ('+this.page+')');
|
||||
|
@ -134,16 +134,16 @@ function atcode(field,length,pad,context) {
|
||||
break;
|
||||
|
||||
// Oldest message in msgarea
|
||||
// Our oldest message, is the first message with a tag from the headers
|
||||
case 'msg_area_msgoldest_date':
|
||||
if (typeof context !== 'object') {
|
||||
log(LOG_ERROR,'Unable to render ['+field+'], no context provided');
|
||||
break;
|
||||
}
|
||||
|
||||
// @todo Cant use context.msgbase.first_msg - it is always zero?
|
||||
var x = Object.keys(context.headers)[0];
|
||||
var x = context.list_tagged[0];
|
||||
|
||||
result = x ? context.headers[x].date : '';
|
||||
result = x ? x.date : '';
|
||||
break;
|
||||
|
||||
case 'msg_area_msgoldest_page':
|
||||
@ -152,19 +152,21 @@ function atcode(field,length,pad,context) {
|
||||
break;
|
||||
}
|
||||
|
||||
// @todo Cant use context.msgbase.first_msg - it is always zero?
|
||||
var x = Object.keys(context.headers)[0];
|
||||
var x = context.list_tagged[0];
|
||||
|
||||
return x ? context.getMessagePage(context.headers[x].number) : null;
|
||||
return x ? context.getMessagePage(x.number) : null;
|
||||
|
||||
// Newest message in msgarea
|
||||
// Our newest message, is the last message with a tag from the headers
|
||||
case 'msg_area_msgnewest_date':
|
||||
if (typeof context !== 'object') {
|
||||
log(LOG_ERROR,'Unable to render ['+field+'], no context provided');
|
||||
break;
|
||||
}
|
||||
|
||||
result = context.headers[context.msgbase.last_msg] ? context.headers[context.msgbase.last_msg].date : '';
|
||||
var x = context.list_tagged[context.list_tagged.length-1];
|
||||
|
||||
result = x ? x.date : '';
|
||||
break;
|
||||
|
||||
case 'msg_area_msgnewest_page':
|
||||
@ -173,7 +175,9 @@ function atcode(field,length,pad,context) {
|
||||
break;
|
||||
}
|
||||
|
||||
return context.msgbase.last_msg ? context.getMessagePage(context.headers[context.msgbase.last_msg].number) : null;
|
||||
var x = context.list_tagged[context.list_tagged.length-1];
|
||||
|
||||
return x ? context.getMessagePage(x.number) : null;
|
||||
|
||||
// First unread message
|
||||
case 'msg_area_msgunread_date':
|
||||
|
@ -54,6 +54,9 @@ function MsgArea() {
|
||||
this.grp_number = undefined;
|
||||
this.subnum = undefined;
|
||||
|
||||
/**
|
||||
* Build a MsgArea once we are given the code
|
||||
*/
|
||||
Object.defineProperty(this,'code',{
|
||||
set: function(code) {
|
||||
this.msgbase = new MsgBase(code);
|
||||
@ -64,6 +67,8 @@ function MsgArea() {
|
||||
}
|
||||
|
||||
this.headers = this.msgbase.get_all_msg_headers(false,false) || [];
|
||||
// @todo If there are more than 10,000, take only the last 10,000.
|
||||
|
||||
this.msgbase.close();
|
||||
}
|
||||
});
|
||||
@ -75,13 +80,6 @@ function MsgArea() {
|
||||
}
|
||||
});
|
||||
|
||||
// Total Messages
|
||||
Object.defineProperty(this,'list',{
|
||||
get: function() {
|
||||
return this.headers ? Object.keys(this.headers) : [];
|
||||
}
|
||||
});
|
||||
|
||||
// Total tagged messages
|
||||
Object.defineProperty(this,'list_tagged',{
|
||||
get: function() {
|
||||
@ -167,14 +165,14 @@ function MsgArea() {
|
||||
MsgArea.prototype.newMsgs = function() {
|
||||
var msgs = [];
|
||||
var stats = this.getUserStats();
|
||||
//log(LOG_DEBUG,'Users scan pointer: '+JSON.stringify(stats.scan_ptr));
|
||||
//log(LOG_DEBUG,'Users last_read pointer: '+JSON.stringify(stats.last_read));
|
||||
|
||||
for(var x in this.headers) {
|
||||
for(var x in this.list_tagged) {
|
||||
// Advance past our last scan_ptr
|
||||
if (x <= stats.last_read)
|
||||
if (this.list_tagged[x].number <= stats.last_read)
|
||||
continue;
|
||||
|
||||
msgs.push(this.headers[x]);
|
||||
msgs.push(this.list_tagged[x]);
|
||||
|
||||
write(); // @todo This is needed for this to work?
|
||||
}
|
||||
@ -188,15 +186,15 @@ MsgArea.prototype.newMsgs = function() {
|
||||
MsgArea.prototype.newMsgsToMe = function() {
|
||||
var msgs = [];
|
||||
var stats = this.getUserStats();
|
||||
//log(LOG_DEBUG,'Users scan pointer: '+JSON.stringify(stats.scan_ptr));
|
||||
//log(LOG_DEBUG,'Users scan_ptr pointer: '+JSON.stringify(stats.scan_ptr));
|
||||
|
||||
for(var x in this.headers) {
|
||||
for(var x in this.list_tagged) {
|
||||
// Advance past our last scan_ptr
|
||||
if (x <= stats.scan_ptr)
|
||||
if (this.list_tagged[x].number <= stats.scan_ptr)
|
||||
continue;
|
||||
|
||||
if ((this.headers[x].to === user.name) || (this.headers[x].to === user.alias))
|
||||
msgs.push(this.headers[x]);
|
||||
if ((this.list_tagged[x].to === user.name) || (this.list_tagged[x].to === user.alias))
|
||||
msgs.push(this.list_tagged[x]);
|
||||
|
||||
write(); // @todo This is needed for this to work?
|
||||
}
|
||||
@ -210,9 +208,9 @@ MsgArea.prototype.newMsgsToMe = function() {
|
||||
MsgArea.prototype.getMessage = function(page) {
|
||||
var msg = undefined;
|
||||
|
||||
for(var x in this.headers) {
|
||||
if (this.headers[x].tags === page) {
|
||||
msg = this.headers[x];
|
||||
for(var x in this.list_tagged) {
|
||||
if (this.list_tagged[x].tags === page) {
|
||||
msg = this.list_tagged[x];
|
||||
break;
|
||||
}
|
||||
write(); // @todo This is needed for this to work?
|
||||
@ -246,9 +244,10 @@ MsgArea.prototype.getMessagePage = function(number) {
|
||||
|
||||
var r;
|
||||
|
||||
for (var x in this.headers) {
|
||||
if (this.headers[x].number === number) {
|
||||
r = this.headers[x];
|
||||
for (var x in this.list_tagged) {
|
||||
if (this.list_tagged[x].number === number) {
|
||||
r = this.list_tagged[x];
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
9
main.js
9
main.js
@ -432,7 +432,7 @@ while(bbs.online) {
|
||||
}
|
||||
}
|
||||
|
||||
if ((viewdata && read === '_') || (! viewdata && read === '#') || read === "\r") {
|
||||
if ((viewdata && read === '_') || (! viewdata && read === '#') || ((read === "\r") && (cmd.length > 0))) {
|
||||
// Nothing typed between * and #
|
||||
// *# means go back
|
||||
if (cmd === '') {
|
||||
@ -947,11 +947,10 @@ while(bbs.online) {
|
||||
// Parent
|
||||
fo.key[0] = (''+next_page.frame).substr(0,7);
|
||||
|
||||
// First Unread
|
||||
fo.key[1] = atcode('msg_area_msgunread_page',null,null,area);
|
||||
|
||||
// First to me
|
||||
fo.key[2] = atcode('msg_area_msgtome_page',null,null,area);
|
||||
fo.key[1] = atcode('msg_area_msgtome_page',null,null,area);
|
||||
// First Unread
|
||||
fo.key[2] = atcode('msg_area_msgunread_page',null,null,area);
|
||||
|
||||
// Oldest
|
||||
fo.key[3] = atcode('msg_area_msgoldest_page',null,null,area);
|
||||
|
@ -1 +1 @@
|
||||
{"version":1,"frame":198,"index":"a","owner":1,"cost":0,"content":"G1swbRtbNzZDG1sxbS4bWzBtDQogG1szM20bWG1zZ19ncnBfbmFtZTs0MBtcG1szMEMbWzM3bRtbMW3awr/Cv7+zG1swbQ0KIBtbMzZtG1htc2dfYXJlYV9hcmVhdGFnOzQwG1wbWzMwQxtbMzdtsyCzwrSzsw0KIBtbMTszNm0bWG1zZ19hcmVhX2Rlc2M7NDAbXBtbMzBDG1sxOzM3bVN1bW1hcnkbWzBtDQobWzE7MzBtxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSzxMTExMTExMTExMTExMTExMTExMTExMTExMTExBtbMG0NCiAbWERBVEVUSU1FOzI0G1wbWzI1QxtbMTszMG2zG1swbSAbWzFtTmV3IE1lc3NhZ2VzIHRvIFlvdRtbMG06IBtbMTszMW0bWG1zZ19hcmVhX25ld3RvbWU7LTUbXBtbMG0NChtbNTBDG1sxOzMwbbMbWzBtICAgICAbWzFtVW5yZWFkIE1lc3NhZ2VzG1swbTogG1sxOzMxbRtYbXNnX2FyZWFfbmV3Oy01G1wbWzBtDQogG1sxOzMybTEbWzM3bSBGaXJzdCB1bnJlYWQgICAbWzM0bRtYbXNnX2FyZWFfbXNndW5yZWFkX2RhdGU7MzEbXBtbMG0gG1sxOzMwbbMbWzBtICAgICAgG1sxbVRvdGFsIE1lc3NhZ2VzG1swbTogG1sxOzMxbRtYbXNnX2FyZWFfdG90YWw7LTUbXBtbMG0NCiAbWzE7MzJtMhtbMG0gG1sxbUZpcnN0IHRvIHlvdRtbMG0gICAbWzE7MzRtG1htc2dfYXJlYV9tc2dvdG9tZV9kYXRlOzMxG1wbWzBtIBtbMTszMG2zG1swbQ0KG1s1MEMbWzE7MzBtsxtbMG0gICAgUGVuZGluZyBNZXNzYWdlczogG1szMW0bWG1zZ19hcmVhX3BlbmRpbmc7LTUbXBtbMzdtDQogG1sxOzMybTMgG1szN21PbGRlc3QgTWVzc2FnZSAbWzM0bRtYbXNnX2FyZWFfbXNnb2xkZXN0X2RhdGU7MzEbXBtbMzdtIBtbMTszMG2zG1swbQ0KIBtbMTszMm00IBtbMzdtTGF0ZXN0IE1lc3NhZ2UgG1szNG0bWG1zZ19hcmVhX21zZ25ld2VzdF9kYXRlOzMxG1wbWzM3bSAbWzE7MzBtsxtbMG0gICAgICAgICAgG1szMm05G1swbSBOZXcgU2NhbjogICAbWzE7MzJtG1htc2dfYXJlYV9uZXdzY2FuOy0zG1wbWzBtDQobWzUwQxtbMTszMG3BG1swbQ0KIBtbMzJtNRtbMW0gG1swbVdyaXRlIE5ldyBNZXNzYWdlICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTs0NG3Vzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc24G1swbQ0KIBtbMzJtNhtbMW0gG1swbVNlYXJjaCBmb3IgTWVzc2FnZSAgICAgICAgICAgICAgICAgICAgICAgIBtbMTs0NG2zG1szM20gryBNZXNzYWdlIFJlYWRpbmcgTmF2aWdhdGlvbiCuG1swOzMzOzQ0bSAbWzE7MzdtsxtbMG0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTs0NG2zG1szM20gG1szMm0YG1szNm0gU2Nyb2xsIFVQIBtbMDs0NG0gIBtbMW2zG1swOzQ0bSAbWzE7MzJtGRtbMzZtIFNjcm9sbCBET1dOG1swOzQ0bSAbWzE7MzNtIBtbMzdtsxtbMG0NCiAbWzMybTgbWzM3bSBBcmVhIFN1bW1hcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAbWzE7NDRtsxtbMzNtIBtbMDszMjs0NG00G1sxOzM2bSAbWzA7MzY7NDRtUHJldmlvdXMbWzFtICAbWzA7NDRtICAbWzFtsxtbMDs0NG0gG1szMm0zG1sxOzM2bSAbWzA7MzY7NDRtUHJldiBUaHJlYWQbWzM3bSAbWzE7MzNtIBtbMzdtsxtbMG0NCiAbWzE7MzJtMBtbMDszMm0gG1sxOzM3bUJhY2sbWzBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAbWzE7NDRtsxtbMzNtIBtbMDszMjs0NG02G1sxOzM2bSAbWzA7MzY7NDRtTmV4dBtbMW0gG1swOzQ0bSAgICAgICAbWzFtsxtbMDs0NG0gG1szMm03G1szN20gG1szNm1OZXh0IFRocmVhZBtbMzdtIBtbMTszM20gG1szN22zG1swbQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxOzQ0bbMbWzA7NDRtIBtbMzJtNRtbMzdtIBtbMzZtV3JpdGUgTmV3G1szN20gICAbWzFtsxtbMDs0NG0gG1szMm04G1szN20gG1szNm1SZXBseRtbMzdtICAgICAgIBtbMTszM20gG1szN22zG1swbQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxOzQ0bbMbWzA7NDRtIBtbMzJtIxtbMzdtIBtbMzZtTXNnIEF0dHJzICAbWzM3bSAbWzFtsxtbMDs0NG0gG1szMm0wG1szN20gG1szNm1SZXR1cm4gaGVyZRtbMzdtIBtbMTszM20gG1szN22zG1swbQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxOzQ0bdTNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzb4bWzBtDQo=","isPublic":0,"isAccessible":1,"type":"m","key":[null,null,null,null,null,null,null,null,null,null],"date":"2022-04-29T00:00:00.000Z"}
|
||||
{"version":1,"frame":198,"index":"a","owner":1,"cost":0,"content":"G1swbRtbNzZDG1sxbS4bWzBtDQogG1szM20bWG1zZ19ncnBfbmFtZTs0MBtcG1szMEMbWzM3bRtbMW3awr/Cv7+zG1swbQ0KIBtbMzZtG1htc2dfYXJlYV9hcmVhdGFnOzQwG1wbWzMwQxtbMzdtsyCzwrSzsw0KIBtbMTszNm0bWG1zZ19hcmVhX2Rlc2M7NDAbXBtbMzBDG1sxOzM3bVN1bW1hcnkbWzBtDQobWzE7MzBtxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSzxMTExMTExMTExMTExMTExMTExMTExMTExMTExBtbMG0NCiAbWERBVEVUSU1FOzI0G1wbWzI1QxtbMTszMG2zG1swbSAbWzFtTmV3IE1lc3NhZ2VzIHRvIFlvdRtbMG06IBtbMTszMW0bWG1zZ19hcmVhX25ld3RvbWU7LTUbXBtbMG0NChtbNTBDG1sxOzMwbbMbWzBtICAgICAbWzFtVW5yZWFkIE1lc3NhZ2VzG1swbTogG1sxOzMxbRtYbXNnX2FyZWFfbmV3Oy01G1wbWzBtDQogG1sxOzMybTEbWzM3bSBGaXJzdCB0byB5b3UgICAbWzM0bRtYbXNnX2FyZWFfbXNnb3RvbWVfZGF0ZTszMRtcG1swbSAbWzE7MzBtsxtbMG0gICAgICAbWzFtVG90YWwgTWVzc2FnZXMbWzBtOiAbWzE7MzFtG1htc2dfYXJlYV90b3RhbDstNRtcG1swbQ0KIBtbMTszMm0yG1swbSAbWzFtRmlyc3QgdW5yZWFkICAgG1sxOzM0bRtYbXNnX2FyZWFfbXNndW5yZWFkX2RhdGU7MzEbXBtbMG0gG1sxOzMwbbMbWzBtDQobWzUwQxtbMTszMG2zG1swbSAgICBQZW5kaW5nIE1lc3NhZ2VzOiAbWzMxbRtYbXNnX2FyZWFfcGVuZGluZzstNRtcG1szN20NCiAbWzE7MzJtMyAbWzM3bU9sZGVzdCBNZXNzYWdlIBtbMzRtG1htc2dfYXJlYV9tc2dvbGRlc3RfZGF0ZTszMRtcG1szN20gG1sxOzMwbbMbWzBtDQogG1sxOzMybTQgG1szN21MYXRlc3QgTWVzc2FnZSAbWzM0bRtYbXNnX2FyZWFfbXNnbmV3ZXN0X2RhdGU7MzEbXBtbMzdtIBtbMTszMG2zG1swbSAgICAgICAgICAbWzMybTkbWzBtIE5ldyBTY2FuOiAgIBtbMTszMm0bWG1zZ19hcmVhX25ld3NjYW47LTMbXBtbMG0NChtbNTBDG1sxOzMwbcEbWzBtDQogG1szMm01G1sxbSAbWzBtV3JpdGUgTmV3IE1lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgG1sxOzQ0bdXNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzbgbWzBtDQogG1szMm02G1sxbSAbWzBtU2VhcmNoIGZvciBNZXNzYWdlICAgICAgICAgICAgICAgICAgICAgICAgG1sxOzQ0bbMbWzMzbSCvIE1lc3NhZ2UgUmVhZGluZyBOYXZpZ2F0aW9uIK4bWzA7MzM7NDRtIBtbMTszN22zG1swbQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxOzQ0bbMbWzMzbSAbWzMybRgbWzM2bSBTY3JvbGwgVVAgG1swOzQ0bSAgG1sxbbMbWzA7NDRtIBtbMTszMm0ZG1szNm0gU2Nyb2xsIERPV04bWzA7NDRtIBtbMTszM20gG1szN22zG1swbQ0KIBtbMzJtOBtbMzdtIEFyZWEgU3VtbWFyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTs0NG2zG1szM20gG1swOzMyOzQ0bTQbWzE7MzZtIBtbMDszNjs0NG1QcmV2aW91cxtbMW0gIBtbMDs0NG0gIBtbMW2zG1swOzQ0bSAbWzMybTMbWzE7MzZtIBtbMDszNjs0NG1QcmV2IFRocmVhZBtbMzdtIBtbMTszM20gG1szN22zG1swbQ0KIBtbMTszMm0wG1swOzMybSAbWzE7MzdtQXJlYSBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgG1sxOzQ0bbMbWzMzbSAbWzA7MzI7NDRtNhtbMTszNm0gG1swOzM2OzQ0bU5leHQbWzFtIBtbMDs0NG0gICAgICAgG1sxbbMbWzA7NDRtIBtbMzJtNxtbMzdtIBtbMzZtTmV4dCBUaHJlYWQbWzM3bSAbWzE7MzNtIBtbMzdtsxtbMG0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTs0NG2zG1swOzQ0bSAbWzMybTUbWzM3bSAbWzM2bVdyaXRlIE5ldxtbMzdtICAgG1sxbbMbWzA7NDRtIBtbMzJtOBtbMzdtIBtbMzZtUmVwbHkbWzM3bSAgICAgICAbWzE7MzNtIBtbMzdtsxtbMG0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMTs0NG2zG1swOzQ0bSAbWzMybSMbWzM3bSAbWzM2bU1zZyBBdHRycyAgG1szN20gG1sxbbMbWzA7NDRtIBtbMTszMm0wG1szN20gG1sxOzM2bVJldHVybiBoZXJlG1szN20gG1sxOzMzbSAbWzM3bbMbWzBtDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAbWzE7NDRt1M3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NvhtbMG0NCg==","isPublic":0,"isAccessible":1,"type":"m","key":[null,null,null,null,null,null,null,null,null,null],"date":"2022-04-29T00:00:00.000Z"}
|
||||
|
Loading…
Reference in New Issue
Block a user