Skip to content

Commit

Permalink
xfd: Fix two bugs when RfDing soft redirects
Browse files Browse the repository at this point in the history
1. Since wikimedia-gadgets#741 (specifically, 3e21765), RfD was using a returned `curtimestamp` to generate the log page.  That query was only being done if the page wasn't a soft redirect, however, leading to NaN/undefined issues.  Closes wikimedia-gadgets#861 by falling back to the previous client clock method.
2. wikimedia-gadgets#527 (44c0e42) added the ability to notify a redirect's target, but returns an error if the title is invalid, such as with soft redirects via {{wi}}.  This now skips the notification in such cases.
  • Loading branch information
Amorymeltzer authored and wiki-ST47 committed Sep 2, 2020
1 parent 5fb489a commit bbdded5
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions modules/twinklexfd.js
Original file line number Diff line number Diff line change
Expand Up @@ -1323,7 +1323,8 @@ Twinkle.xfd.callbacks = {
};
},
main: function(params) {
var date = new Date(params.curtimestamp);
// Fallback to client clock for softredirects
var date = params.curtimestamp ? new Date(params.curtimestamp) : new Date();
params.logpage = 'Wikipedia:Redirects for discussion/Log/' + date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();
params.discussionpage = params.logpage + '#' + Morebits.pageNameNorm;

Expand Down Expand Up @@ -1383,30 +1384,33 @@ Twinkle.xfd.callbacks = {
sendNotifications: function(pageobj) {
var initialContrib = pageobj.getCreator();
var params = pageobj.getCallbackParameters();
var statelem = pageobj.getStatusElement();

// Notifying initial contributor
if (params.usertalk) {
// Disallow warning yourself
if (initialContrib === mw.config.get('wgUserName')) {
pageobj.getStatusElement().warn('You (' + initialContrib + ') created this page; skipping user notification');
statelem.warn('You (' + initialContrib + ') created this page; skipping user notification');
} else {
Twinkle.xfd.callbacks.rfd.userNotification(params, initialContrib);
}
}

// Notifying target page's watchers
// Notifying target page's watchers, if not a soft redirect
if (params.relatedpage) {
var targetTalk = new mw.Title(params.target).getTalkPage();

// On the offchance it's a circular redirect
if (params.target === mw.config.get('wgPageName')) {
pageobj.getStatusElement().warn('Circular redirect; skipping target page notification');
statelem.warn('Circular redirect; skipping target page notification');
} else if (document.getElementById('softredirect')) {
statelem.warn('Soft redirect; skipping target page notification');
} else if (targetTalk.getNamespaceId() === 3) {
// Don't issue if target talk is the initial contributor's talk or your own
if (targetTalk.getNameText() === initialContrib) {
pageobj.getStatusElement().warn('Target is initial contributor; skipping target page notification');
statelem.warn('Target is initial contributor; skipping target page notification');
} else if (targetTalk.getNameText() === mw.config.get('wgUserName')) {
pageobj.getStatusElement().warn('You (' + mw.config.get('wgUserName') + ') are the target; skipping target page notification');
statelem.warn('You (' + mw.config.get('wgUserName') + ') are the target; skipping target page notification');
}
} else {
Twinkle.xfd.callbacks.rfd.targetNotification(params, targetTalk);
Expand Down

0 comments on commit bbdded5

Please sign in to comment.