Duolingo Switch Windows

It switches automatically between learn and league windows with the goal to be online for other users, and they think

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

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

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name        Duolingo Switch Windows
// @namespace   http://tampermonkey.net/
// @match       https://*.duolingo.com/*
// @grant       none
// @license     MIT
// @require https://cdn.jsdelivr.net/npm/[email protected]/tailwindcss.js
// @version     1.0
// @author      DuoSolverGrinder
// @description It switches automatically between learn and league windows with the goal to be online for other users, and they think
// you're watching for them to try to avoid those users who like to make points while you're offline.
// For other options you can visit the links https://github.com/DuoSolverGrinder/DuoSolverGrinder,  https://duosolver.is-great.net/
// ==/UserScript==
let state = 0;
let activate = false;
let switchWindowInterval = null;
let switchBetweenTimesInSeconds = 60;

let bttnSwitch = 'switchWindow-switch-bttn';

let html = `
<div id="switchWindow-container" class="inline-flex flex-col gap-y-4 justify-end fixed left-5 bottom-4 z-[211] border border-1 p-4 bg-indigo-400 dark:bg-gray-900">
    <button id="switchWindow-switch-bttn" class="px-4 py-2 rounded-md border border-2 bg-blue-600 text-gray-200  dark:bg-gray-100 dark:text-gray-800">Activate</button>
  <p>To grind xp, use next links:</p>
  <div class="flex justify-center gap-x-2">
       <a  onclick="alert('It switches automatically between learn and league windows with the goal to be online for other users and they think you are watching for them, to try to avoid those users who like to make points while you are offline. It changes every minute.Click on button Activate to start.')" href="#">
          <img class="rounded-md w-7 h-7" src="https://duosolvergrinder.github.io/DuoSolverGrinder/help.png" >
      </a>
      <a target="_blank" href="https://github.com/DuoSolverGrinder/DuoSolverGrinder">
         <svg  class="text-red-500 w-8 h-8" fill="none" viewBox="0 0 120 120"
            stroke="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#24292f"/></svg>
      </a>
      <a target="_blank" href="https://duosolver.is-great.net">
          <img class="rounded-md w-7 h-7" src="https://duosolvergrinder.github.io/DuoSolverGrinder/dsg.png" >
      </a>
  </div>

</div>
`
function toggleMenu()
{
  let bttn = document.getElementById(bttnSwitch);
  if(activate) {
     activate = false;
     bttn.textContent = 'Activate';
     clearInterval(switchWindowInterval);
     switchWindowInterval = null;
    return;
  }
  activate = true;
  bttn.textContent = 'Deactivate';
  switchWindowInterval = setInterval(()=>{
                            state = state == 0 ? 2: 0;
                            document.getElementsByClassName("_2dvyl")[state].click()
                       }, switchBetweenTimesInSeconds * 1000)
}

function insertButtons()
{
  let container = document.getElementById('switchWindow-container');
  if(!container) {
     document.body.insertAdjacentHTML('beforeend',html);
     let bttn = document.getElementById(bttnSwitch);
     bttn.addEventListener('click', toggleMenu );
     activate ? bttn.textContent = "Deactivate" : "Activate";
  }

}

window.onload = (event) => {
  setInterval(insertButtons, 1000);
}