/*
 * Script pour aider à mettre à jour ]
 */

/* globals Promise, mw, $ */

mw.loader.using('mediawiki.api', function () {
    mw.hook('wikipage.content').add(function ($content) {
        'use strict';

        function getFilters() {
            return new Promise(function (resolve, reject) {
                var filters = ;
                var userGroups = mw.config.get('wgUserGroups');
                var apiLimit = userGroups.includes('sysop') || userGroups.includes('bot') ? 5000 : 500;
                function makeRequest(apiContinue) {
                    var params = {
                        action: 'query',
                        list: 'abusefilters',
                        abfprop: ,
                        abflimit: apiLimit,
                    };
                    if (apiContinue) {
                        Object.assign(params, apiContinue);
                    }
                    new mw.Api().get(params).done(function (data) {
                        if (!data.query) {
                            reject();
                        }
                        filters = filters.concat(data.query.abusefilters);
                        if (data) {
                            makeRequest(data);
                        } else {
                            resolve(filters);
                        }
                    });
                }
                makeRequest();
            });
        }

        getFilters().then(function (filters) {
            var etats = {};

            filters.forEach(function (filter) {
                if (filter.enabled !== undefined) {
                    etats = '<span style="color:green">(activé)</span>';
                } else if (filter.deleted !== undefined) {
                    etats = '<span style="color:red">(supprimé)</span>';
                } else {
                    etats = '<span style="color:orange">(désactivé)</span>';
                }
            });

            $content.find('.mw-parser-output').find('a').each(function (_, link) {
                // on traite les liens vers ]
                var match = (link.title || '').match(/^Spécial:Filtre antiabus\/(\d+)$/);
                if (!match) {
                    return;
                }
                var filterId = match;

                // on limite aux liens dont le texte est un nombre (non formaté, ou formaté)
                if (!/^(\d+|\d{1,3}(\xA0\d{3})*)$/.test(link.textContent)) {
                    return;
                }

                var etat = etats || '???';

                link.insertAdjacentHTML('afterend', '\xA0' + etat);
            });
        });

    });
});