Greasy Fork is available in English.

Payback Coupon Activator

Activates all Payback coupons on a shop's site before continuing to site.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name           Payback Coupon Activator
// @name:de        Payback-Coupon-Aktivierer

// @description    Activates all Payback coupons on a shop's site before continuing to site.
// @description:de Aktiviert alle Payback-Coupons auf der Seite eines Shops und leitet dann auf die Seite weiter.

// @version        1.0.1
// @copyright      2024+, Jan G. (Rsge)
// @license        Mozilla Public License 2.0
// @icon           https://www.payback.de/resource/blob/4506/b8323ff55b34054722769ae5652c22ae/main-favicon.ico

// @namespace      https://github.com/Rsge
// @homepageURL    https://github.com/Rsge/Payback-Coupon-Activator
// @supportURL     https://github.com/Rsge/Payback-Coupon-Activator/issues

// @match          https://www.payback.de/shop/*

// @run-at         document-idle
// @grant          none
// ==/UserScript==

(async function () {
  'use strict';

  // Constants
  const T = 1 * 1000;
  // Resources
  const WAITING_MSG = "Waiting for coupons to be loaded.";

  // Basic functions
  function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
  }

  // Wait for loading of and get coupon nutshell.
  let couponNutshell;
  do {
    await sleep(T);
    try {
      let mainBox = document.getElementsByClassName("global-jts-partner__info-box")[0];
      couponNutshell = mainBox.children[1].shadowRoot.children[0];
    } catch {
      console.log(WAITING_MSG);
    }
  } while (couponNutshell == null);
  // Skip activation if no coupons are present.
  if (!couponNutshell.className.startsWith("pbc-partner-condition")) {
    // Activate all inactive coupons.
    let couponBox = couponNutshell.getElementsByClassName("coupon-nutshell__container")[0].children[1];
    let i;
    for (i = 0; i < couponBox.children.length; i++) {
      let coupon = couponBox.children[i].shadowRoot.children[0];
      let couponButton = coupon.children[3].shadowRoot.children[0].firstElementChild;
      if (couponButton.className.endsWith("not-activated")) {
        couponButton.click();
      }
    }
  }
  // Continue to shop.
  await sleep(T);
  let continueButton = document.getElementById("jts-button");
  continueButton.click();
})();