Skip to content
Snippets Groups Projects
Commit add2e0e2 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

Some saved_config cleanup before splitting configs.

parent f55339bf
No related branches found
No related tags found
No related merge requests found
...@@ -1209,6 +1209,7 @@ function sublist(group, match, subscribed) ...@@ -1209,6 +1209,7 @@ function sublist(group, match, subscribed)
var re; var re;
var has_sep=false; var has_sep=false;
var base; var base;
var code;
if(match=='') if(match=='')
return([""]); return([""]);
...@@ -1232,22 +1233,34 @@ function sublist(group, match, subscribed) ...@@ -1232,22 +1233,34 @@ function sublist(group, match, subscribed)
if(re.test("INBOX")) if(re.test("INBOX"))
ret.push("INBOX"); ret.push("INBOX");
for(grp in msg_area.grp_list) { lock_cfg()
if(re.test(msg_area.grp_list[grp].description)) try {
ret.push((msg_area.grp_list[grp].description+sepchar).replace(/&/g,'&-')); read_cfg('mail', true);
for(grp in msg_area.grp_list) {
for(sub in msg_area.grp_list[grp].sub_list) { if(re.test(msg_area.grp_list[grp].description))
if(re.test(msg_area.grp_list[grp].description+sepchar+msg_area.grp_list[grp].sub_list[sub].description)) { ret.push((msg_area.grp_list[grp].description+sepchar).replace(/&/g,'&-'));
if((!subscribed) || (saved_config.hasOwnProperty(msg_area.grp_list[grp].sub_list[sub].code) && saved_config[msg_area.grp_list[grp].sub_list[sub].code].hasOwnProperty('subscribed') && saved_config[msg_area.grp_list[grp].sub_list[sub].code].subscribed)) {
base=new MsgBase(msg_area.grp_list[grp].sub_list[sub].code); for(sub in msg_area.grp_list[grp].sub_list) {
if(base == undefined || sub=="NONE!!!" || (!base.open())) code = msg_area.grp_list[grp].sub_list[sub].code
continue; // TODO: Notyet
base.close(); //read_cfg(code, false);
ret.push((msg_area.grp_list[grp].description+sepchar+msg_area.grp_list[grp].sub_list[sub].description).replace(/&/g,'&-')); if(re.test(msg_area.grp_list[grp].description+sepchar+msg_area.grp_list[grp].sub_list[sub].description)) {
if((!subscribed) || (saved_config.hasOwnProperty(code) && saved_config[code].hasOwnProperty('subscribed') && saved_config[code].subscribed)) {
base=new MsgBase(code);
if(base == undefined || sub=="NONE!!!" || (!base.open()))
continue;
base.close();
ret.push((msg_area.grp_list[grp].description+sepchar+msg_area.grp_list[grp].sub_list[sub].description).replace(/&/g,'&-'));
}
} }
} }
} }
} }
catch (error) {
unlock_cfg();
throw error;
}
unlock_cfg();
return(ret); return(ret);
} }
...@@ -1362,7 +1375,6 @@ function read_index(base) ...@@ -1362,7 +1375,6 @@ function read_index(base)
var i; var i;
var idx; var idx;
var index; var index;
var newseen={};
index={offsets:[],idx:{}}; index={offsets:[],idx:{}};
index.first=base.first_msg; index.first=base.first_msg;
...@@ -1384,14 +1396,12 @@ function read_index(base) ...@@ -1384,14 +1396,12 @@ function read_index(base)
idx.attr &= ~MSG_READ; idx.attr &= ~MSG_READ;
if(get_seen_flag(index.code, idx) == 1) { if(get_seen_flag(index.code, idx) == 1) {
idx.attr |= MSG_READ; idx.attr |= MSG_READ;
newseen[idx.number]=1;
} }
} }
index.idx[idx.number]=idx; index.idx[idx.number]=idx;
index.offsets.push(idx.number); index.offsets.push(idx.number);
idx.offset=index.offsets.length; idx.offset=index.offsets.length;
} }
saved_config[index.code].Seen=newseen;
return(index); return(index);
} }
...@@ -1841,7 +1851,6 @@ var authenticated_command_handlers = { ...@@ -1841,7 +1851,6 @@ var authenticated_command_handlers = {
var base; var base;
var mademap=false; var mademap=false;
var index; var index;
var old_saved;
var base_code; var base_code;
var sp; var sp;
...@@ -1854,17 +1863,8 @@ var authenticated_command_handlers = { ...@@ -1854,17 +1863,8 @@ var authenticated_command_handlers = {
} }
base_code = get_base_code(base); base_code = get_base_code(base);
if (saved_config[base_code] != undefined)
old_saved = saved_config[base_code];
read_cfg(base_code, true); read_cfg(base_code, true);
if (saved_config[base_code].scan_ptr == undefined) {
if (base_code != 'mail')
saved_config[base_code].scan_ptr = msg_area.sub[base.cfg.code].scan_ptr;
}
index = read_index(base); index = read_index(base);
delete saved_config[base_code];
if (old_saved != undefined)
saved_config[base_code] = old_saved;
base.close(); base.close();
for(i in items) { for(i in items) {
switch(items[i].toUpperCase()) { switch(items[i].toUpperCase()) {
...@@ -3106,34 +3106,36 @@ function read_cfg(sub, lck) ...@@ -3106,34 +3106,36 @@ function read_cfg(sub, lck)
catch (error) { catch (error) {
newfile = {'__config_epoch__':0, mail:{scan_ptr:0, subscribed:true}}; newfile = {'__config_epoch__':0, mail:{scan_ptr:0, subscribed:true}};
} }
for (newsub in newfile) { if (newfile.__config_epoch__ !== saved_config.__config_epoch__) {
if (newsub == '__config_epoch__') { for (newsub in newfile) {
saved_config.__config_epoch__ = newfile[newsub]; if (newsub == '__config_epoch__') {
} saved_config.__config_epoch__ = newfile[newsub];
else { }
if (last_saved_file[newsub] == undefined || JSON.stringify(newfile[newsub]) != JSON.stringify(last_saved_file[newsub])) { else {
saved_config[newsub] = {}; if (last_saved_file[newsub] == undefined || JSON.stringify(newfile[newsub]) != JSON.stringify(last_saved_file[newsub])) {
if (newfile[newsub].hasOwnProperty('scan_ptr')) saved_config[newsub] = {};
saved_config[newsub].scan_ptr = newfile[newsub].scan_ptr; if (newfile[newsub].hasOwnProperty('scan_ptr'))
if (newfile[newsub].hasOwnProperty('seen')) saved_config[newsub].scan_ptr = newfile[newsub].scan_ptr;
saved_config[newsub].Seen = newfile[newsub].seen; if (newfile[newsub].hasOwnProperty('seen'))
else saved_config[newsub].Seen = newfile[newsub].seen;
saved_config[newsub].Seen = {}; else
if (newfile[newsub].hasOwnProperty('subscribed')) saved_config[newsub].Seen = {};
saved_config[newsub].subscribed = newfile[newsub].subscribed; if (newfile[newsub].hasOwnProperty('subscribed'))
else saved_config[newsub].subscribed = newfile[newsub].subscribed;
saved_config[newsub].subscribed = false; else
if (newfile[newsub].hasOwnProperty('bseen')) { saved_config[newsub].subscribed = false;
for (i in newfile[newsub].bseen) { if (newfile[newsub].hasOwnProperty('bseen')) {
basemsg = parseInt(i, 10); for (i in newfile[newsub].bseen) {
bstr = base64_decode(newfile[newsub].bseen[i]); basemsg = parseInt(i, 10);
for (byte = 0; byte < bstr.length; byte++) { bstr = base64_decode(newfile[newsub].bseen[i]);
asc = ascii(bstr[byte]); for (byte = 0; byte < bstr.length; byte++) {
if (asc == 0) asc = ascii(bstr[byte]);
continue; if (asc == 0)
for (bit=0; bit<8; bit++) { continue;
if (asc & (1<<bit)) for (bit=0; bit<8; bit++) {
saved_config[newsub].Seen[basemsg+(byte*8+bit)]=1; if (asc & (1<<bit))
saved_config[newsub].Seen[basemsg+(byte*8+bit)]=1;
}
} }
} }
} }
...@@ -3153,6 +3155,10 @@ function read_cfg(sub, lck) ...@@ -3153,6 +3155,10 @@ function read_cfg(sub, lck)
if(saved_config[sub].Seen==undefined) if(saved_config[sub].Seen==undefined)
saved_config[sub].Seen={}; saved_config[sub].Seen={};
if (sub != 'mail' && ((saved_config[sub].sub_ptr == undefined) || (msg_area.sub[sub].scan_ptr > saved_config[sub]))) {
saved_config[sub].scan_ptr = msg_area.sub[sub].scan_ptr;
}
apply_seen(index); apply_seen(index);
last_saved_config = JSON.parse(JSON.stringify(saved_config)); last_saved_config = JSON.parse(JSON.stringify(saved_config));
last_saved_file = newfile; last_saved_file = newfile;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment