From 4ef90802ddff7b79d98a7df0dcebdda407c8de9e Mon Sep 17 00:00:00 2001 From: Amory Meltzer Date: Sun, 1 Mar 2020 07:45:52 -0500 Subject: [PATCH] arv: Combine the three largely identical AN3 queries, avoid errors Don't print console errors if is provided: we shouldn't be unnecessarily spitting out console errors, either from null queries or mw.Title. The warnings check is fine, though. Has a more helpful API error messages, similar to #866. --- modules/twinklearv.js | 219 +++++++++++++++--------------------------- 1 file changed, 80 insertions(+), 139 deletions(-) diff --git a/modules/twinklearv.js b/modules/twinklearv.js index fa13ba094..96e38ea0d 100644 --- a/modules/twinklearv.js +++ b/modules/twinklearv.js @@ -309,7 +309,6 @@ Twinkle.arv.callback.changeCategory = function (e) { label: 'Report edit warring', name: 'work_area' }); - work_area.append({ type: 'input', name: 'page', @@ -322,146 +321,88 @@ Twinkle.arv.callback.changeCategory = function (e) { label: 'Load', event: function(e) { var root = e.target.form; - var value = root.page.value; - var uid = root.uid.value; - var $diffs = $(root).find('[name=diffs]'); - $diffs.find('.entry').remove(); - - var date = new Morebits.date().subtract(48, 'hours'); // all since 48 hours - - var api = new mw.Api(); - api.get({ - action: 'query', - prop: 'revisions', - format: 'json', - rvprop: 'sha1|ids|timestamp|parsedcomment|comment', - rvlimit: 500, // intentionally limited - rvend: date.toISOString(), - rvuser: uid, - indexpageids: true, - redirects: true, - titles: value - }).done(function(data) { - var pageid = data.query.pageids[0]; - var page = data.query.pages[pageid]; - if (!page.revisions) { - $('None found').appendTo($diffs); - return; - } - for (var i = 0; i < page.revisions.length; ++i) { - var rev = page.revisions[i]; - var $entry = $('
', { - 'class': 'entry' - }); - var $input = $('', { - 'type': 'checkbox', - 'name': 's_diffs', - 'value': rev.revid - }); - $input.data('revinfo', rev); - $input.appendTo($entry); - $entry.append('"' + rev.parsedcomment + '" at ' + new Morebits.date(rev.timestamp).calendar() + '').appendTo($diffs); - } - }).fail(function(data) { - console.log('API failed :(', data); // eslint-disable-line no-console - }); - var $warnings = $(root).find('[name=warnings]'); - $warnings.find('.entry').remove(); - - api.get({ - action: 'query', - prop: 'revisions', - format: 'json', - rvprop: 'sha1|ids|timestamp|parsedcomment|comment', - rvlimit: 500, // intentionally limited - rvend: date.toISOString(), - rvuser: mw.config.get('wgUserName'), - indexpageids: true, - redirects: true, - titles: 'User talk:' + uid - }).done(function(data) { - var pageid = data.query.pageids[0]; - var page = data.query.pages[pageid]; - if (!page.revisions) { - $('None found').appendTo($warnings); - return; - } - for (var i = 0; i < page.revisions.length; ++i) { - var rev = page.revisions[i]; - var $entry = $('
', { - 'class': 'entry' - }); - var $input = $('', { - 'type': 'checkbox', - 'name': 's_warnings', - 'value': rev.revid - }); - $input.data('revinfo', rev); - $input.appendTo($entry); - $entry.append('"' + rev.parsedcomment + '" at ' + new Morebits.date(rev.timestamp).calendar() + '').appendTo($warnings); - } - }).fail(function(data) { - console.log('API failed :(', data); // eslint-disable-line no-console - }); - - var $resolves = $(root).find('[name=resolves]'); - $resolves.find('.entry').remove(); - - var t = new mw.Title(value); - var ns = t.getNamespaceId(); - var talk_page = new mw.Title(t.getMain(), ns % 2 ? ns : ns + 1).getPrefixedText(); - - api.get({ - action: 'query', - prop: 'revisions', - format: 'json', - rvprop: 'sha1|ids|timestamp|parsedcomment|comment', - rvlimit: 500, // intentionally limited - rvend: date.toISOString(), - rvuser: mw.config.get('wgUserName'), - indexpageids: true, - redirects: true, - titles: talk_page - }).done(function(data) { - var pageid = data.query.pageids[0]; - var page = data.query.pages[pageid]; - if (!page.revisions) { - $('None found').appendTo($resolves); - return; - } - for (var i = 0; i < page.revisions.length; ++i) { - var rev = page.revisions[i]; - var $entry = $('
', { - 'class': 'entry' - }); - var $input = $('', { - 'type': 'checkbox', - 'name': 's_resolves', - 'value': rev.revid - }); - $input.data('revinfo', rev); - $input.appendTo($entry); - $entry.append('"' + rev.parsedcomment + '" at ' + new Morebits.date(rev.timestamp).calendar() + '').appendTo($resolves); - } - - // add free form input - var $free_entry = $('
', { - 'class': 'entry' - }); - var $free_input = $('', { - 'type': 'text', - 'name': 's_resolves_free' - }); - var $free_label = $('