use xhrPost in more places

This commit is contained in:
Andrew Dolgov 2018-11-29 22:56:34 +03:00
parent 0d27227359
commit 560b9fdd26
3 changed files with 80 additions and 132 deletions

View File

@ -102,34 +102,31 @@ function viewfeed(params) {
Form.enable("main_toolbar_form"); Form.enable("main_toolbar_form");
const toolbar_query = Form.serialize("main_toolbar_form"); let query = Object.assign({op: "feeds", method: "view", feed: feed},
dojo.formToObject("main_toolbar_form"));
let query = "?op=feeds&method=view&feed=" + param_escape(feed) + "&" + if (method) query.m = method;
toolbar_query;
if (method) query += "&m=" + param_escape(method);
if (offset > 0) { if (offset > 0) {
if (current_first_id) { if (current_first_id) {
query = query + "&fid=" + param_escape(current_first_id); query.fid = current_first_id;
} }
} }
if (!background) { if (!background) {
if (_search_query) { if (_search_query) {
query = query + "&" + _search_query; query = Object.assign(query, _search_query);
//_search_query = false;
} }
if (offset != 0) { if (offset != 0) {
query = query + "&skip=" + offset; query.skip = offset;
// to prevent duplicate feed titles when showing grouped vfeeds // to prevent duplicate feed titles when showing grouped vfeeds
if (vgroup_last_feed) { if (vgroup_last_feed) {
query = query + "&vgrlf=" + param_escape(vgroup_last_feed); query.vgrlf = vgroup_last_feed;
} }
} else if (!is_cat && feed == getActiveFeedId() && !params.method) { } else if (!is_cat && feed == getActiveFeedId() && !params.method) {
query = query + "&m=ForceUpdate"; query.m = "ForceUpdate";
} }
Form.enable("main_toolbar_form"); Form.enable("main_toolbar_form");
@ -139,7 +136,7 @@ function viewfeed(params) {
notify_progress("Loading, please wait...", true); notify_progress("Loading, please wait...", true);
} }
query += "&cat=" + is_cat; query.cat = is_cat;
if (can_wait && _viewfeed_timeout) { if (can_wait && _viewfeed_timeout) {
setFeedExpandoIcon(getActiveFeedId(), activeFeedIsCat(), 'images/blank_icon.gif'); setFeedExpandoIcon(getActiveFeedId(), activeFeedIsCat(), 'images/blank_icon.gif');
@ -149,7 +146,10 @@ function viewfeed(params) {
setActiveFeedId(feed, is_cat); setActiveFeedId(feed, is_cat);
if (viewfeed_debug) { if (viewfeed_debug) {
window.open("backend.php" + query + "&debug=1&csrf_token=" + getInitParam("csrf_token")); window.open("backend.php?" +
dojo.objectToQuery(
Object.assign({debug: 1, csrf_token: getInitParam("csrf_token")}, query)
));
} }
const timeout_ms = can_wait ? 250 : 0; const timeout_ms = can_wait ? 250 : 0;

View File

@ -154,7 +154,7 @@ function search() {
style: "width: 600px", style: "width: 600px",
execute: function() { execute: function() {
if (this.validate()) { if (this.validate()) {
_search_query = dojo.objectToQuery(this.attr('value')); _search_query = this.attr('value');
this.hide(); this.hide();
viewCurrentFeed(); viewCurrentFeed();
} }

View File

@ -38,8 +38,6 @@ function headlines_callback2(transport, offset, background, infscroll_req) {
feed_id = reply['headlines']['id']; feed_id = reply['headlines']['id'];
last_search_query = reply['headlines']['search_query']; last_search_query = reply['headlines']['search_query'];
console.log(feed_id, getActiveFeedId(), is_cat, activeFeedIsCat());
if (feed_id != -7 && (feed_id != getActiveFeedId() || is_cat != activeFeedIsCat())) if (feed_id != -7 && (feed_id != getActiveFeedId() || is_cat != activeFeedIsCat()))
return; return;
@ -253,15 +251,7 @@ function showArticleInHeadlines(id, noexpand) {
function article_callback2(transport, id) { function article_callback2(transport, id) {
console.log("article_callback2 " + id); console.log("article_callback2 " + id);
handle_rpc_json(transport); const reply = handle_rpc_json(transport);
let reply = false;
try {
reply = JSON.parse(transport.responseText);
} catch (e) {
console.error(e);
}
if (reply) { if (reply) {
@ -274,11 +264,6 @@ function article_callback2(transport, id) {
cache_set("article:" + article['id'], article['content']); cache_set("article:" + article['id'], article['content']);
}); });
// if (id != last_requested_article) {
// console.log("requested article id is out of sequence, aborting");
// return;
// }
} else { } else {
console.error("Invalid object received: " + transport.responseText); console.error("Invalid object received: " + transport.responseText);
@ -286,7 +271,7 @@ function article_callback2(transport, id) {
__('Could not display article (invalid object received - see error console for details)') + "</div>"); __('Could not display article (invalid object received - see error console for details)') + "</div>");
} }
const unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length const unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length;
request_counters(unread_in_buffer == 0); request_counters(unread_in_buffer == 0);
notify(""); notify("");
@ -311,7 +296,7 @@ function view(id, activefeed, noexpand) {
console.log("cache check result: " + (cached_article != false)); console.log("cache check result: " + (cached_article != false));
let query = "?op=article&method=view&id=" + param_escape(id); const query = {op: "article", method: "view", id: id};
const neighbor_ids = getRelativePostIds(id); const neighbor_ids = getRelativePostIds(id);
@ -329,7 +314,7 @@ function view(id, activefeed, noexpand) {
console.log("additional ids: " + cids_to_request.toString()); console.log("additional ids: " + cids_to_request.toString());
query = query + "&cids=" + cids_to_request.toString(); query.cids = cids_to_request.toString();
const article_is_unread = crow.hasClassName("Unread"); const article_is_unread = crow.hasClassName("Unread");
@ -337,14 +322,10 @@ function view(id, activefeed, noexpand) {
showArticleInHeadlines(id); showArticleInHeadlines(id);
if (cached_article && article_is_unread) { if (cached_article && article_is_unread) {
query.mode = "prefetch";
query = query + "&mode=prefetch";
render_article(cached_article); render_article(cached_article);
} else if (cached_article) { } else if (cached_article) {
query.mode = "prefetch_old";
query = query + "&mode=prefetch_old";
render_article(cached_article); render_article(cached_article);
// if we don't need to request any relative ids, we might as well skip // if we don't need to request any relative ids, we might as well skip
@ -362,18 +343,16 @@ function view(id, activefeed, noexpand) {
decrementFeedCounter(getActiveFeedId(), activeFeedIsCat()); decrementFeedCounter(getActiveFeedId(), activeFeedIsCat());
} }
new Ajax.Request("backend.php", { xhrPost("backend.php", query, (transport) => {
parameters: query, article_callback2(transport, id);
onComplete: function(transport) { })
article_callback2(transport, id);
} });
return false; return false;
} }
function toggleMark(id, client_only) { function toggleMark(id, client_only) {
let query = "?op=rpc&id=" + id + "&method=mark"; const query = { op: "rpc", id: id, method: "mark" };
const row = $("RROW-" + id); const row = $("RROW-" + id);
if (!row) return; if (!row) return;
@ -382,7 +361,7 @@ function toggleMark(id, client_only) {
const row_imgs = row.getElementsByClassName("markedPic"); const row_imgs = row.getElementsByClassName("markedPic");
for (var i = 0; i < row_imgs.length; i++) for (let i = 0; i < row_imgs.length; i++)
imgs.push(row_imgs[i]); imgs.push(row_imgs[i]);
const ft = $("floatingTitle"); const ft = $("floatingTitle");
@ -399,32 +378,28 @@ function toggleMark(id, client_only) {
if (!row.hasClassName("marked")) { if (!row.hasClassName("marked")) {
img.src = img.src.replace("mark_unset", "mark_set"); img.src = img.src.replace("mark_unset", "mark_set");
query = query + "&mark=1"; query.mark = 1;
} else { } else {
img.src = img.src.replace("mark_set", "mark_unset"); img.src = img.src.replace("mark_set", "mark_unset");
query = query + "&mark=0"; query.mark = 0;
} }
} }
row.toggleClassName("marked"); row.toggleClassName("marked");
if (!client_only) { if (!client_only)
new Ajax.Request("backend.php", { xhrPost("backend.php", query, (transport) => {
parameters: query, handle_rpc_json(transport);
onComplete: function (transport) {
handle_rpc_json(transport);
}
}); });
} }
}
function togglePub(id, client_only, no_effects, note) { function togglePub(id, client_only, no_effects, note) {
let query = "?op=rpc&id=" + id + "&method=publ"; const query = { op: "rpc", id: id, method: "publ" };
if (note != undefined) { if (note != undefined) {
query = query + "&note=" + param_escape(note); query.note = note;
} else { } else {
query = query + "&note=undefined"; query.note = "undefined";
} }
const row = $("RROW-" + id); const row = $("RROW-" + id);
@ -434,7 +409,7 @@ function togglePub(id, client_only, no_effects, note) {
const row_imgs = row.getElementsByClassName("pubPic"); const row_imgs = row.getElementsByClassName("pubPic");
for (var i = 0; i < row_imgs.length; i++) for (let i = 0; i < row_imgs.length; i++)
imgs.push(row_imgs[i]); imgs.push(row_imgs[i]);
const ft = $("floatingTitle"); const ft = $("floatingTitle");
@ -442,19 +417,19 @@ function togglePub(id, client_only, no_effects, note) {
if (ft && ft.getAttribute("data-article-id") == id) { if (ft && ft.getAttribute("data-article-id") == id) {
const fte = ft.getElementsByClassName("pubPic"); const fte = ft.getElementsByClassName("pubPic");
for (var i = 0; i < fte.length; i++) for (let i = 0; i < fte.length; i++)
imgs.push(fte[i]); imgs.push(fte[i]);
} }
for (var i = 0; i < imgs.length; i++) { for (let i = 0; i < imgs.length; i++) {
const img = imgs[i]; const img = imgs[i];
if (!row.hasClassName("published") || note != undefined) { if (!row.hasClassName("published") || note != undefined) {
img.src = img.src.replace("pub_unset", "pub_set"); img.src = img.src.replace("pub_unset", "pub_set");
query = query + "&pub=1"; query.pub = 1;
} else { } else {
img.src = img.src.replace("pub_set", "pub_unset"); img.src = img.src.replace("pub_set", "pub_unset");
query = query + "&pub=0"; query.pub = 0;
} }
} }
@ -463,14 +438,10 @@ function togglePub(id, client_only, no_effects, note) {
else else
row.toggleClassName("published"); row.toggleClassName("published");
if (!client_only) { if (!client_only)
new Ajax.Request("backend.php", { xhrPost("backend.php", query, (transport) => {
parameters: query,
onComplete: function(transport) {
handle_rpc_json(transport); handle_rpc_json(transport);
} }); });
}
} }
function moveToPost(mode, noscroll, noexpand) { function moveToPost(mode, noscroll, noexpand) {
@ -601,7 +572,7 @@ function updateSelectedPrompt() {
} }
function toggleUnread(id, cmode, effect) { function toggleUnread(id, cmode) {
const row = $("RROW-" + id); const row = $("RROW-" + id);
if (row) { if (row) {
const tmpClassName = row.className; const tmpClassName = row.className;
@ -622,22 +593,17 @@ function toggleUnread(id, cmode, effect) {
row.addClassName("Unread"); row.addClassName("Unread");
} }
if (cmode == undefined) cmode = 2;
const query = "?op=rpc&method=catchupSelected" +
"&cmode=" + param_escape(cmode) + "&ids=" + param_escape(id);
// notify_progress("Loading, please wait...");
if (tmpClassName != row.className) { if (tmpClassName != row.className) {
new Ajax.Request("backend.php", { if (cmode == undefined) cmode = 2;
parameters: query,
onComplete: function (transport) { const query = {op: "rpc", method: "catchupSelected",
cmode: cmode, ids: id};
xhrPost("backend.php", query, (transport) => {
handle_rpc_json(transport); handle_rpc_json(transport);
}
}); });
} }
} }
} }
@ -649,18 +615,13 @@ function selectionRemoveLabel(id, ids) {
return; return;
} }
const query = "?op=article&method=removeFromLabel&ids=" + const query = { op: "article", method: "removeFromLabel",
param_escape(ids.toString()) + "&lid=" + param_escape(id); ids: ids.toString(), lid: id };
console.log(query);
new Ajax.Request("backend.php", {
parameters: query,
onComplete: function(transport) {
handle_rpc_json(transport);
show_labels_in_headlines(transport);
} });
xhrPost("backend.php", query, (transport) => {
handle_rpc_json(transport);
show_labels_in_headlines(transport);
});
} }
function selectionAssignLabel(id, ids) { function selectionAssignLabel(id, ids) {
@ -671,17 +632,13 @@ function selectionAssignLabel(id, ids) {
return; return;
} }
const query = "?op=article&method=assignToLabel&ids=" + const query = { op: "article", method: "assignToLabel",
param_escape(ids.toString()) + "&lid=" + param_escape(id); ids: ids.toString(), lid: id };
console.log(query); xhrPost("backend.php", query, (transport) => {
handle_rpc_json(transport);
new Ajax.Request("backend.php", { show_labels_in_headlines(transport);
parameters: query, });
onComplete: function(transport) {
handle_rpc_json(transport);
show_labels_in_headlines(transport);
} });
} }
function selectionToggleUnread(set_state, callback, no_error, ids) { function selectionToggleUnread(set_state, callback, no_error, ids) {
@ -727,17 +684,15 @@ function selectionToggleUnread(set_state, callback, no_error, ids) {
cmode = "0"; cmode = "0";
} }
const query = "?op=rpc&method=catchupSelected" + const query = {op: "rpc", method: "catchupSelected",
"&cmode=" + cmode + "&ids=" + param_escape(rows.toString()); cmode: cmode, ids: rows.toString() };
notify_progress("Loading, please wait..."); notify_progress("Loading, please wait...");
new Ajax.Request("backend.php", { xhrPost("backend.php", query, (transport) => {
parameters: query, handle_rpc_json(transport);
onComplete: function(transport) { if (callback) callback(transport);
handle_rpc_json(transport); });
if (callback) callback(transport);
} });
} }
} }
@ -756,17 +711,13 @@ function selectionToggleMarked(sel_state, callback, no_error, ids) {
} }
if (rows.length > 0) { if (rows.length > 0) {
const query = { op: "rpc", method: "markSelected",
ids: rows.toString(), cmode: 2 };
const query = "?op=rpc&method=markSelected&ids=" + xhrPost("backend.php", query, (transport) => {
param_escape(rows.toString()) + "&cmode=2"; handle_rpc_json(transport);
if (callback) callback(transport);
new Ajax.Request("backend.php", { });
parameters: query,
onComplete: function(transport) {
handle_rpc_json(transport);
if (callback) callback(transport);
} });
} }
} }
@ -784,16 +735,13 @@ function selectionTogglePublished(sel_state, callback, no_error, ids) {
} }
if (rows.length > 0) { if (rows.length > 0) {
const query = { op: "rpc", method: "publishSelected",
ids: rows.toString(), cmode: 2 };
const query = "?op=rpc&method=publishSelected&ids=" + xhrPost("backend.php", query, (transport) => {
param_escape(rows.toString()) + "&cmode=2"; handle_rpc_json(transport);
if (callback) callback(transport);
new Ajax.Request("backend.php", { });
parameters: query,
onComplete: function(transport) {
handle_rpc_json(transport);
} });
} }
} }
@ -831,7 +779,7 @@ function selectArticles(mode, query) {
const children = $$(query); const children = $$(query);
children.each(function(child) { children.each(function(child) {
const id = child.getAttribute("data-article-id"); //const id = child.getAttribute("data-article-id");
const cb = dijit.getEnclosingWidget( const cb = dijit.getEnclosingWidget(
child.getElementsByClassName("rchk")[0]); child.getElementsByClassName("rchk")[0]);