User:Irukaza/js/editConflict.js

H萌娘,万物皆可H的百科全书!
< User:Irukaza
imported>=海豚=2021年2月24日 (三) 13:24的版本
跳到导航 跳到搜索

注意:这类代码页面在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

(async () => {
    await mw.loader.using("mw.Api");
    let needCheckFlag = true;
    const api = new mw.Api({ timeout: 1 });
    const wpSave = $("#wpSave");
    const editform = $("#editform");
    const SYMBOL_UNDEFINED = Symbol("SYMBOL_UNDEFINED");
    wpSave.val = (value = SYMBOL_UNDEFINED) => {
        const val = $.fn.val.bind(wpSave);
        return value === SYMBOL_UNDEFINED ? val() : val(value).attr("title", value);
    };
    const disable = ($buttons) => {
        return $buttons.css("font-weight", "normal").parent().removeClass("oo-ui-widget-enabled oo-ui-flaggedElement-primary oo-ui-flaggedElement-progressive").addClass("oo-ui-widget-disabled");
    }
    wpSave.on("click", () => {
        if (needCheckFlag === true) {
            needCheckFlag = false;
            setTimeout(async () => {
                disable(wpSave.attr("disabled", "disabled").val("正在保存......"));
                for (let i = 1; i <= 4; i++) {
                    try {
                        const result = await api.post({
                            action: "query",
                            prop: "revisions",
                            rvprop: "ids",
                            rvlimit: 1,
                            titles: wgPageName,
                        });
                        const pageid = Object.keys(result.query.pages)[0];
                            wpSave.val("正在保存......");
                            editform.submit();
                    } catch (e) {
                        console.error("editConflict", e);
                        wpSave.val(i <= 3 ? `保存失败,请检查您的网络!` : "保存失败,请检查您的网络!");
                        return;
                    }
                }
            }, 1);
        }
        return false;
    });
})();