Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: desktop-options.js

Issue 29674584: Issue 5549 - Implement missing error handlings for custom filter lists (Closed)
Patch Set: enabled testing via ?filterError=true Created Jan. 25, 2018, 12:56 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: desktop-options.js
===================================================================
--- a/desktop-options.js
+++ b/desktop-options.js
@@ -547,14 +547,17 @@
return null;
}
- function sendMessageHandleErrors(message, onSuccess)
+ function sendMessageHandleErrors(message, callback)
{
browser.runtime.sendMessage(message, (errors) =>
{
- if (errors.length > 0)
- alert(errors.join("\n"));
- else if (onSuccess)
- onSuccess();
+ if (callback)
+ {
+ if (errors.length > 0)
+ callback(errors);
+ else
+ callback();
+ }
});
}
@@ -648,14 +651,35 @@
});
break;
case "save-custom-filters":
+ const filters = E("custom-filters-raw");
saroyanm 2018/01/29 11:44:48 Detail/Suggestion: We don't use the element anywhe
a.giammarchi 2018/01/29 13:09:02 I'll do that, but this is nitpicking ;-)
+ const filtersValue = filters.value;
sendMessageHandleErrors({
type: "filters.importRaw",
- text: E("custom-filters-raw").value,
+ text: filtersValue,
removeExisting: true
},
- () =>
+ (errors) =>
{
- setCustomFiltersView("read");
+ if (errors)
+ {
+ E("custom-filters").classList.add("warning");
+ const lines = filtersValue.split(/\n+|\n\s+\n/);
saroyanm 2018/01/29 11:44:48 Splitting same as it's done in the filterValidatio
a.giammarchi 2018/01/29 13:09:02 I've tested this before writing the RegExp, their
saroyanm 2018/01/29 14:30:49 I don't understand what you mean by "Logic keeps g
a.giammarchi 2018/01/29 15:01:09 if you have a textarea with a b c d the filte
saroyanm 2018/01/30 12:03:44 This doesn't work on my(Manvel) test enviroment, A
+ const info = errors.map(error => lines[error.lineno - 1]);
+ const editFilters = E("custom-filters-edit-filters");
+ info.forEach(
saroyanm 2018/01/29 11:44:48 Detail: We usualy use for..of when looping through
a.giammarchi 2018/01/29 13:09:02 have we banned the forEach from the code? performa
saroyanm 2018/01/29 14:30:49 That is a news for me. AFAIK we used for...of beca
a.giammarchi 2018/01/29 15:01:09 It's actually usually slower because it involved A
+ message =>
+ {
+ const li = document.createElement("li");
+ editFilters.appendChild(li).textContent = message;
+ }
+ );
+ if (errors.length > 5)
+ editFilters.classList.add("many");
+ }
+ else
+ {
+ setCustomFiltersView("read");
+ }
});
break;
case "show-more-filters-section":
@@ -755,6 +779,10 @@
updateCustomFiltersUi();
if (mode == "read")
{
+ E("custom-filters").classList.remove("warning");
+ const editFilters = E("custom-filters-edit-filters");
+ editFilters.textContent = "";
+ editFilters.classList.remove("many");
customFiltersElement.disabled = true;
if (!customFiltersElement.value)
{
@@ -918,10 +946,10 @@
{
setLinks("enable-acceptable-ads-description", link);
});
- setElementText(E("tracking-warning-1"), "options_tracking_warning_1",
+ setElementText(E("tracking-warning-1"), "options_tracking_warning_1",
[getMessage("common_feature_privacy_title"),
- getMessage("options_acceptableAds_ads_label")]);
- setElementText(E("tracking-warning-3"), "options_tracking_warning_3",
+ getMessage("options_acceptableAds_ads_label")]);
+ setElementText(E("tracking-warning-3"), "options_tracking_warning_3",
[getMessage("options_acceptableAds_privacy_label")]);
getDocLink("privacy_friendly_ads", (link) =>
@@ -964,6 +992,7 @@
getDocLink("filterdoc", (link) =>
{
E("link-filters").setAttribute("href", link);
+ E("link-filters-on-edit-error").setAttribute("href", link);
});
getDocLink("subscriptions", (link) =>
@@ -1295,7 +1324,7 @@
updateSubscription(subscription);
break;
case "added":
- let {url, recommended} = subscription;
+ let {url} = subscription;
// Handle custom subscription
if (/^~user/.test(url))
{

Powered by Google App Engine
This is Rietveld