Browse Source

use xhrPost in even more places!

Andrew Dolgov 4 months ago
parent
commit
eaf7cfdba6
1 changed files with 113 additions and 154 deletions
  1. 113 154
      js/viewfeed.js

+ 113 - 154
js/viewfeed.js

@@ -855,65 +855,55 @@ function deleteSelection() {
 		return;
 	}
 
-	const query = "?op=rpc&method=delete&ids=" + param_escape(rows);
+	const query = { op: "rpc", method: "delete", ids: rows.toString() };
 
-	console.log(query);
-
-	new Ajax.Request("backend.php", {
-		parameters: query,
-		onComplete: function (transport) {
-			handle_rpc_json(transport);
-			viewCurrentFeed();
-		}
+	xhrPost("backend.php", query, (transport) => {
+        handle_rpc_json(transport);
+        viewCurrentFeed();
 	});
 }
 
 function archiveSelection() {
 
-	const rows = getSelectedArticleIds2();
-
-	if (rows.length == 0) {
-		alert(__("No articles are selected."));
-		return;
-	}
-
-	const fn = getFeedName(getActiveFeedId(), activeFeedIsCat());
-	let str;
-	let op;
+    const rows = getSelectedArticleIds2();
 
-	if (getActiveFeedId() != 0) {
-		str = ngettext("Archive %d selected article in %s?", "Archive %d selected articles in %s?", rows.length);
-		op = "archive";
-	} else {
-		str = ngettext("Move %d archived article back?", "Move %d archived articles back?", rows.length);
+    if (rows.length == 0) {
+        alert(__("No articles are selected."));
+        return;
+    }
 
-		str += " " + __("Please note that unstarred articles might get purged on next feed update.");
+    const fn = getFeedName(getActiveFeedId(), activeFeedIsCat());
+    let str;
+    let op;
 
-		op = "unarchive";
-	}
+    if (getActiveFeedId() != 0) {
+        str = ngettext("Archive %d selected article in %s?", "Archive %d selected articles in %s?", rows.length);
+        op = "archive";
+    } else {
+        str = ngettext("Move %d archived article back?", "Move %d archived articles back?", rows.length);
 
-	str = str.replace("%d", rows.length);
-	str = str.replace("%s", fn);
+        str += " " + __("Please note that unstarred articles might get purged on next feed update.");
 
-	if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) {
-		return;
-	}
+        op = "unarchive";
+    }
 
-	const query = "?op=rpc&method="+op+"&ids=" + param_escape(rows);
+    str = str.replace("%d", rows.length);
+    str = str.replace("%s", fn);
 
-	console.log(query);
+    if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) {
+        return;
+    }
 
-	for (let i = 0; i < rows.length; i++) {
-		cache_delete("article:" + rows[i]);
-	}
+    for (let i = 0; i < rows.length; i++) {
+        cache_delete("article:" + rows[i]);
+    }
 
-	new Ajax.Request("backend.php", {
-		parameters: query,
-		onComplete: function(transport) {
-				handle_rpc_json(transport);
-				viewCurrentFeed();
-			} });
+    const query = {op: "rpc", method: op, ids: rows.toString()};
 
+    xhrPost("backend.php", query, (transport) => {
+        handle_rpc_json(transport);
+        viewCurrentFeed();
+    });
 }
 
 function catchupSelection() {
@@ -955,31 +945,26 @@ function editArticleTags(id) {
 
 				notify_progress("Saving article tags...", true);
 
-				new Ajax.Request("backend.php",	{
-				parameters: query,
-				onComplete: function(transport) {
-					try {
-						notify('');
-						dialog.hide();
+				xhrPost("backend.php", this.attr('value'), (transport) => {
+                    try {
+                        notify('');
+                        dialog.hide();
 
-						const data = JSON.parse(transport.responseText);
+                        const data = JSON.parse(transport.responseText);
 
-						if (data) {
-							const id = data.id;
+                        if (data) {
+                            const id = data.id;
 
-							console.log(id);
+                            const tags = $("ATSTR-" + id);
+                            const tooltip = dijit.byId("ATSTRTIP-" + id);
 
-							const tags = $("ATSTR-" + id);
-							const tooltip = dijit.byId("ATSTRTIP-" + id);
-
-							if (tags) tags.innerHTML = data.content;
-							if (tooltip) tooltip.attr('label', data.content_full);
-						}
-					} catch (e) {
-						exception_error(e);
-					}
-
-				}});
+                            if (tags) tags.innerHTML = data.content;
+                            if (tooltip) tooltip.attr('label', data.content_full);
+                        }
+                    } catch (e) {
+                        exception_error(e);
+                    }
+				});
 			}
 		},
 		href: query
@@ -1165,33 +1150,28 @@ function catchupBatchedArticles() {
 
 		// make a copy of the array
 		const batch = catchup_id_batch.slice();
-		const query = "?op=rpc&method=catchupSelected" +
-			"&cmode=0&ids=" + param_escape(batch.toString());
-
-		console.log(query);
+		const query = { op: "rpc", method: "catchupSelected",
+			cmode: 0, ids: batch.toString() };
 
 		_catchup_request_sent = true;
 
-		new Ajax.Request("backend.php", {
-			parameters: query,
-			onComplete: function (transport) {
-				handle_rpc_json(transport);
+		xhrPost("backend.php", query, (transport) => {
+            const reply = handle_rpc_json(transport);
 
-				_catchup_request_sent = false;
+            _catchup_request_sent = false;
 
-				const reply = JSON.parse(transport.responseText);
-				const batch = reply.ids;
+            if (reply) {
+                const batch = reply.ids;
 
-				batch.each(function (id) {
-					console.log(id);
-					const elem = $("RROW-" + id);
-					if (elem) elem.removeClassName("Unread");
-					catchup_id_batch.remove(id);
-				});
-
-				updateFloatingTitle(true);
+                batch.each(function (id) {
+                    console.log(id);
+                    const elem = $("RROW-" + id);
+                    if (elem) elem.removeClassName("Unread");
+                    catchup_id_batch.remove(id);
+                });
+            }
 
-			}
+            updateFloatingTitle(true);
 		});
 	}
 }
@@ -1247,16 +1227,12 @@ function catchupRelativeToArticle(below, id) {
 				e.removeClassName("Unread");
 			}
 
-			const query = "?op=rpc&method=catchupSelected" +
-				"&cmode=0" + "&ids=" + param_escape(ids_to_mark.toString());
+			const query = { op: "rpc", method: "catchupSelected",
+				cmode: 0, ids: ids_to_mark.toString() };
 
-			new Ajax.Request("backend.php", {
-				parameters: query,
-				onComplete: function (transport) {
-					handle_rpc_json(transport);
-				}
+			xhrPost("backend.php", query, (transport) => {
+                handle_rpc_json(transport);
 			});
-
 		}
 	}
 }
@@ -1422,19 +1398,18 @@ function cdmClicked(event, id, in_body) {
 			setActiveArticleId(id);
 
 			if (article_is_unread) {
-				decrementFeedCounter(getActiveFeedId(), activeFeedIsCat());
-				updateFloatingTitle(true);
-			}
+                decrementFeedCounter(getActiveFeedId(), activeFeedIsCat());
+                updateFloatingTitle(true);
 
-			const query = "?op=rpc&method=catchupSelected" +
-				"&cmode=0&ids=" + param_escape(id);
+                const query = {
+                    op: "rpc", method: "catchupSelected",
+                    cmode: 0, ids: id
+                };
 
-			new Ajax.Request("backend.php", {
-				parameters: query,
-				onComplete: function (transport) {
-					handle_rpc_json(transport);
-				}
-			});
+                xhrPost("backend.php", query, (transport) => {
+                    handle_rpc_json(transport);
+                });
+            }
 
 			return !event.shiftKey;
 		}
@@ -1812,31 +1787,25 @@ function setSelectionScore() {
 		const score = prompt(__("Please enter new score for selected articles:"));
 
 		if (score != undefined) {
-			const query = "op=article&method=setScore&id=" + param_escape(ids.toString()) +
-				"&score=" + param_escape(score);
-
-			new Ajax.Request("backend.php", {
-				parameters: query,
-				onComplete: function (transport) {
-					const reply = JSON.parse(transport.responseText);
-					if (reply) {
-						console.log(ids);
-
-						ids.each(function (id) {
-							const row = $("RROW-" + id);
-
-							if (row) {
-								const pic = row.getElementsByClassName("hlScorePic")[0];
-
-								if (pic) {
-									pic.src = pic.src.replace(/score_.*?\.png/,
-										reply["score_pic"]);
-									pic.setAttribute("score", score);
-								}
-							}
-						});
-					}
-				}
+			const query = { op: "article", method: "setScore", id: ids.toString(),
+				score: score };
+
+			xhrJson("backend.php", query, (reply) => {
+				if (reply) {
+                    reply.id.each((id) => {
+                        const row = $("RROW-" + id);
+
+                        if (row) {
+                            const pic = row.getElementsByClassName("hlScorePic")[0];
+
+                            if (pic) {
+                                pic.src = pic.src.replace(/score_.*?\.png/,
+                                    reply["score_pic"]);
+                                pic.setAttribute("score", reply["score"]);
+                            }
+                        }
+                    });
+                }
 			});
 		}
 
@@ -1845,6 +1814,7 @@ function setSelectionScore() {
 	}
 }
 
+/*
 function updateScore(id) {
 	const pic = $$("#RROW-" + id + " .hlScorePic")[0];
 
@@ -1867,7 +1837,7 @@ function updateScore(id) {
 			}
 		});
 	}
-}
+} */
 
 function changeScore(id, pic) {
 	const score = pic.getAttribute("score");
@@ -1875,38 +1845,27 @@ function changeScore(id, pic) {
 	const new_score = prompt(__("Please enter new score for this article:"), score);
 
 	if (new_score != undefined) {
-
-		const query = "op=article&method=setScore&id=" + param_escape(id) +
-			"&score=" + param_escape(new_score);
-
-		new Ajax.Request("backend.php", {
-			parameters: query,
-			onComplete: function (transport) {
-				const reply = JSON.parse(transport.responseText);
-
-				if (reply) {
-					pic.src = pic.src.replace(/score_.*?\.png/, reply["score_pic"]);
-					pic.setAttribute("score", new_score);
-					pic.setAttribute("title", new_score);
-				}
-			}
+		const query = { op: "article", method: "setScore", id: id, score: new_score };
+
+		xhrJson("backend.php", query, (reply) => {
+            if (reply) {
+                pic.src = pic.src.replace(/score_.*?\.png/, reply["score_pic"]);
+                pic.setAttribute("score", new_score);
+                pic.setAttribute("title", new_score);
+            }
 		});
 	}
 }
 
 function displayArticleUrl(id) {
-	const query = "op=rpc&method=getlinktitlebyid&id=" + param_escape(id);
+	const query = { op: "rpc", method: "getlinktitlebyid", id: id };
 
-	new Ajax.Request("backend.php", {
-		parameters: query,
-		onComplete: function (transport) {
-			const reply = JSON.parse(transport.responseText);
-
-			if (reply && reply.link) {
-				prompt(__("Article URL:"), reply.link);
-			}
-		}
+	xhrJson("backend.php", query, (reply) => {
+        if (reply && reply.link) {
+            prompt(__("Article URL:"), reply.link);
+        }
 	});
+
 }
 
 function scrollToRowId(id) {