/* jshint esversion: 6, laxbreak: true */
/* globals mw, $ */

if (mw.config.get('wgCanonicalSpecialPageName') === 'Contributions') {

    mw.loader.using('mediawiki.util', function () {
        $(function ($) {
            'use strict';

            const userName = mw.config.get('wgUserName');
            const relevantUserName = mw.config.get('wgRelevantUserName');

            if (!relevantUserName) {
                return;
            }

            const message = 'Masquer les pages dont '
                + (userName === relevantUserName ? 'je suis' : mw.html.escape(relevantUserName) + ' est')
                + ' le dernier contributeur';

            $('.mw-htmlform-submit').after(' <label><input type="checkbox" id="hide-last-edited-pages"> ' + message + '</label>');

            let firstRun = true;
            let sheet;

            $('#hide-last-edited-pages').on('change', function () {
                if (firstRun) {
                    addClasses();
                    sheet = mw.util.addCSS('li.last-edited { display:none }');
                    firstRun = false;
                } else {
                    if (this.checked) {
                        sheet.disabled = false;
                    } else {
                        sheet.disabled = true;
                    }
                }
            });

            // rappel : il y a plusieurs éléments "ul.mw-contributions-list" (un pour chaque jour)

            function addClasses() {
                const excludeSet = new Set();
                $('ul.mw-contributions-list > li:not(.mw-flow-contribution)').each(function () {
                    const title = this.querySelector('a.mw-contributions-title').textContent;

                    if (this.classList.contains('mw-contributions-current')) { // ]
                        this.classList.add('last-edited');
                        excludeSet.add(title);
                    }
                    else if (excludeSet.has(title)) {
                        this.classList.add('last-edited');
                    }
                });
            }

        });
    });

}