Steamgifts One-Click Entry

This script adds "Enter" button on every giveaway, so you don't have to open a new page to enter it.

目前為 2016-06-21 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Steamgifts One-Click Entry
// @namespace    com.Sergeeeek.Usability.Scripts
// @version      0.3
// @description  This script adds "Enter" button on every giveaway, so you don't have to open a new page to enter it.
// @author       Sergeeeek
// @include      https://www.steamgifts.com/
// @include      https://www.steamgifts.com/giveaways*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var link_string = '<a href="#" onclick="return false;" class="short-enter-leave-link"><i class="fa"></i> <span></span></a>';

    var giveaways = $('.giveaway__row-inner-wrap');

    giveaways.each(function (idx, elem) {
        var j = $(elem);
        var href = $(j.find('.giveaway__heading__name')).attr('href');

        var l = $(link_string);
        l.attr('data-link', href);
        var faded = j.hasClass('is-faded');
        l.find('span').text(faded ? 'Leave' : 'Enter');

        l.addClass(faded ? 'leave' : '');
        l.find('.fa').addClass(faded ? 'fa-minus' : 'fa-plus');

        j.find('.giveaway__links').append(l);
    });

    var links = $('.short-enter-leave-link');

    links.click(function (e) {
        var elem = $(this);

        var url = elem.attr('data-link');
        console.log(url);

        $.ajax(url, {
            complete: function (data, code) {
                var f = $(data.responseText).find('form').first().serializeArray();

                var wasLeave = elem.hasClass('leave');
                f[1].value = wasLeave ? "entry_delete" : "entry_insert";

                $.ajax('/ajax.php', {
                    data: f,
                    method: 'POST',
                    complete: function (data1, code1) {
                        var d = JSON.parse(data1.responseText);
                        if(d.type === "success")
                        {
                            elem.toggleClass('leave');
                            elem.closest('.giveaway__row-inner-wrap').toggleClass("is-faded");
                            elem.find('span').text(elem.hasClass('leave') ? 'Leave' : 'Enter');
                            elem.find('.fa').removeClass('fa-plus fa-minus').addClass(elem.hasClass('leave') ? 'fa-minus' : 'fa-plus');
                            $('.nav__points').text(d.points);
                        }
                    }
                });
            }
        });
    });
})();