Ubik Academy - automatically extend lab time

[EN] Extend the time the lab is usable when the timer is below 10 minutes

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

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

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name           Ubik Academy - automatically extend lab time
// @version        0.3
// @namespace      nil
// @author         nil
// @grant          none
// @description    [EN] Extend the time the lab is usable when the timer is below 10 minutes
// @include        https://cyberkube.app/?token=*
// @license        GPLv3
// ==/UserScript==

(function nil_greasemonkey_ubik_extendlab() {
  "use strict";
  function checkTimerAndPotentiallyExtendLab() {
    let elt = document.getElementById("timer");
    // "01h : 53m : 35s"
    if (!elt || 9 >= elt.innerText.length) return;
    let remaining_seconds = elt.innerText
				.replace(/[hms\s]/g, "")
         		        .split(':')
    				.map(Number)
    				.reverse()
    				.reduce((acc, elt, idx) => acc + elt * 60**idx, 0);
    // do nothing if more than 10 minutes left (600 seconds)
    if (600 <= remaining_seconds) return;

    let extendBtn = document.getElementById("extend-btn");
    if (!extendBtn) { console.log("#extend-btn element not found"); return; }

    console.log("clicked the extend lab button!");
    extendBtn.click();

    // wait 20 s then refresh the page
    window.setTimeout(() => location.reload(), 20000);
  }
  
  window.setInterval(checkTimerAndPotentiallyExtendLab, 60000);
})();